import { _decorator, error, SpriteFrame, sys } from "cc";
import { config } from "./config";
import { uiManager } from "./manager/uiManager";
//管理广告、分享、SDK相关内容的组件
export class SdkUtil {
    public static platform: string = 'cocos'; //平台
    public static imgAd: SpriteFrame = null!;
    public static imgShare: SpriteFrame = null!;
    public static isDebugMode: boolean = false;
    public static onlineInterval: number = -1;
    public static isEnableVibrate: boolean = true;
    public static isCheckOffline: boolean = false; //登录后会检查是否展示登录界面，而且只检查一次
    public static isWatchVideoAd: boolean = false;//是否正在播放广告
    public static isEnableMoving: boolean = false;//是否允许屏幕上下移动
    public static isEnableZoom: boolean = false;//是否允许屏幕缩放
    public static arrLockDiary = [];//未解锁日记
    public static vibrateInterval: number = 100;//两次震动之间的间隔,AppActivity里面的震动间隔也是100
    public static vibratePreTime: number = 0;//上次震动时间

    public static KS_GAME:boolean = false; //是否ks游戏
    public static videoAd:any =null;
    public static isLookAd:boolean = false; //是否在看广告

    public static tt_systemInfo: any = null;                //抖音_系统信息
    private static tt_isSupportSidebar:boolean = false;     //抖音_是否支持侧边栏
    private static tt_isToEnterFromSidebar:boolean = false; //抖音_是否从侧边栏进入

    private static tt_gameRecorder:any = null;      //抖音游戏录制
    private static tt_recordVideoPath:string = '';  //抖音录制视频路径
    private static tt_totalRecord:number = 4000;    //抖音总录制时间
    private static tt_isRecording:boolean = false;  //抖音是否录制中

    //------------------------------  公共  ------------------------------//

    public static init() {
        if(sys.platform==sys.Platform.WECHAT_GAME) {
            let isKSGame = typeof KSGameGlobal != 'undefined'
            // console.log('isKSGame=',isKSGame)                            
            SdkUtil.KS_GAME = isKSGame
        }
        this.ttGetSystemInfo(()=> {
            this.ttRegisterInfo()
        })
    }

    // 自定义事件统计
    public static customEventStatistics(eventType: string, objParams?: any) {
        eventType = eventType.toString();
        if (!objParams) { objParams = {}; }
        // console.log({'eventType': eventType},{'objParams': objParams});
        if (this.platform === 'wx') {
            //@ts-ignore
            if (window['wx'] && window['wx']['aldSendEvent']) {
                //@ts-ignore 
                window.wx['aldSendEvent'](eventType, objParams);
            }
        }
        //@ts-ignore
        if (this.platform === 'cocos' && window.cocosAnalytics && window.cocosAnalytics.isInited()) {
            console.log("###统计", eventType, objParams);
            //@ts-ignore
            window.cocosAnalytics.CACustomEvent.onStarted(eventType, objParams);
        }
    }

    // 检测授权用户信息
    public static checkAuthUserInfo(cb) {
        if(sys.platform == sys.Platform.WECHAT_GAME && !SdkUtil.KS_GAME) {
            SdkUtil.wxCheckAuthUserInfo(cb)
        } else {
            cb(true)
        }
    }
    
    // 登录
    public static login(call){
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.login({
                force: true,
                success(res) {
                    console.log(`tt_login 调用成功:${res.code} ${res.anonymousCode}`);
                    call({"code":res.code,"anonymousCode":res.anonymousCode})
                },
                fail(err) {
                    console.log(`tt_login 调用失败:${err}`);
                    // call(null)
                },
            });
        } 
        else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                ks.login({
                    success(res) {
                        console.log(`ks_login 调用成功:${res.code}`);
                        call({"code":res.code})
                    },
                    fali(err) { 
                        console.log(`ks_login 调用失败:${err}`);
                        // call(null)
                    }
                })
            } else {
                wx.login({
                    success(res) {
                        console.log(`wx_login 调用成功:${res.code}`);
                        call({"code":res.code})
                    },
                    fali(err) { 
                        console.log(`wx_login 调用失败:${err}`);
                        // call(null)
                    }
                })
            }
        }
        else{
            call(null)
        }
    }

    // 获取用户信息
    public static getUserInfo(call){
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.getUserInfo({
                // withCredentials: true,
                // withRealNameAuthenticationInfo: true,
                success(res) {
                    console.log(`tt_getUserInfo 调用成功`, res);
                    call(res.userInfo)
                },
                fail(err) {
                    console.log(`tt_getUserInfo 调用失败`, err);
                },
            });
        }
        else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                ks.getUserInfo({
                    success(res) {
                        console.log(`ks_getUserInfo 调用成功`, res);
                        call(res.userInfo)
                    },
                    fail(err) {
                        console.log(`ks_getUserInfo 调用失败`, err);
                    },
                })
            } else {
                SdkUtil.wxCheckAuthUserInfo((is_true)=>{
                    if(is_true) {
                        wx.getUserInfo({
                            success(res) {
                                console.log(`wx_getUserInfo 调用成功`, res);
                                call(res.userInfo)
                            },
                            fail(err) {
                                console.log(`wx_getUserInfo 调用失败`, err);
                            },
                        })
                    }
                })
            }
        }
        else{
            call(null)
        }
    }

    // 震动
    public static vibrateShort(){
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.vibrateShort({ success(res) {}, fail(err) {} });
        }
        else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                ks.vibrateShort({ success(res) {}, fail(err) {} });
            } else {
                wx.vibrateShort({ success(res) {}, fail(err) {} });
            }
        }
          
    }

    // 关于loading
    public static showLoading(title:string) {
        if(title.length<=0) { return }
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.showLoading({ title: title, success(res) {},fail(err) {} })
        }
        else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                ks.showLoading({ title: title, success(res) {},fail(err) {} })
            } else {
                wx.showLoading({ title: title, success(res) {},fail(err) {} })
            }
        }
    }

    public static hideLoading() {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.hideLoading({ success(res) { }, fail(err) { } });
        }
        else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                ks.hideLoading({ success(res) { }, fail(err) { } });
            } else {
                wx.hideLoading({ success(res) { }, fail(err) { } });
            }
        }
    }

    // 展示toast
    public static showToast(title:string,duration=2000,success_cb=null, fail_cb=null) {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.showToast({
                title: title,
                duration: duration,
                success(res) { if(success_cb){ success_cb() } },
                fail(err) { if(fail_cb) { fail_cb() } },
            });
        }
        else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                ks.showToast({
                    title: title,
                    duration: duration,
                    success(res) { if(success_cb){ success_cb() } },
                    fail(err) { if(fail_cb) { fail_cb() } },
                });
            } else {
                wx.showToast({
                    title: title,
                    duration: duration,
                    success(res) { if(success_cb){ success_cb() } },
                    fail(err) { if(fail_cb) { fail_cb() } },
                });
            }
        }
    }

    // 展示modal (确定:res.confirm  取消:res.cancel)
    public static showModal(title:string, content:string, suc_cb=null, fail_cb=null, confirmText:string='确定', showCancel:boolean=true, cancelText:string='取消') {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.showModal({
                title: title,
                content: content,
                confirmText: confirmText,
                showCancel: showCancel,
                cancelText: cancelText,
                success(res) { if(suc_cb) { suc_cb(res) } },
                fail(err) { if(fail_cb){ fail_cb(err) } },
            });
        }
        else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                ks.showModal({
                    title: title,
                    content: content,
                    confirmText: confirmText,
                    showCancel: showCancel,
                    cancelText: cancelText,
                    success(res) { if(suc_cb) { suc_cb(res) } },
                    fail(err) { if(fail_cb){ fail_cb(err) } },
                });
            } else {
                wx.showModal({
                    title: title,
                    content: content,
                    confirmText: confirmText,
                    showCancel: showCancel,
                    cancelText: cancelText,
                    success(res) { if(suc_cb) { suc_cb(res) } },
                    fail(err) { if(fail_cb){ fail_cb(err) } },
                });
            }
        } else {
            if(suc_cb) { 
                suc_cb({'confirm':true}) 
            }
        }
    }
    
    // 展示actionSheet (点击的索引:`res.tapIndex`)
    public static showActionSheet(item_list:string[], suc_cb=null, fail_cb=null) {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.showActionSheet({
                item_list,
                success(res) { if(suc_cb) { suc_cb(res) } },
                fail(err) { if(fail_cb) { fail_cb(err) } },
            });
        }
        else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                ks.showActionSheet({
                    item_list,
                    success(res) { if(suc_cb) { suc_cb(res) } },
                    fail(err) { if(fail_cb) { fail_cb(err) } },
                });
            } else {
                wx.showActionSheet({
                    item_list,
                    success(res) { if(suc_cb) { suc_cb(res) } },
                    fail(err) { if(fail_cb) { fail_cb(err) } },
                });
            }
        }
    }

    // 选择系统相册
    public static choosSystemImage(call_back) {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.chooseImage({
                sourceType: ["album"],
                count:1,
                success:(res)=>{
                    // console.log('chooseImage调用成功=${res}')
                    if(res.tempFilePaths.length>0) { call_back(res.tempFilePaths[0])}
                },
                fail(err) { console.log(`tt_chooseImage调用失败=${err}`); },
            })
        } 
        else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                ks.chooseMedia({
                    mediaType: ["image"],
                    sourceType: ["album"],
                    count:1,
                    success:(res)=>{
                        // console.log('chooseImage调用成功=${res}')
                        if(res.tempFilePaths.length>0) { call_back(res.tempFilePaths[0])}
                    },
                    fail(err) { console.log(`wx_chooseImage调用失败=${err}`); },
                })
            } else {
                wx.chooseMedia({
                    mediaType: ["image"],
                    sourceType: ["album"],
                    count:1,
                    success:(res)=>{
                        // console.log('chooseImage调用成功=${res}')
                        if(res.tempFilePaths.length>0) { call_back(res.tempFilePaths[0])}
                    },
                    fail(err) { console.log(`wx_chooseImage调用失败=${err}`); },
                })
            }
        }
    }

    // 检测显示添加桌面
    public static checkIsShowAddDesktop():boolean {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            if(SdkUtil.tt_systemInfo.appName=='Douyin' || SdkUtil.tt_systemInfo.appName=='douyin_lite') {
                return true
            }
        }
        return false
    }

    // 分享游戏
    public static shareGame(title: string, desc:string, call_back=null) {
        if(desc==undefined||desc==null) { desc = config.gameName}
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            SdkUtil.ttShare(title,desc, null, ()=>{
                this.showToast('分享失败')
            })
        } else if(sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                SdkUtil.ksShare(desc)
            } else {
                SdkUtil.wxShare(desc)
            }
        }else{
            if(call_back) {
                call_back(true)
            }
        }
    }
    public static shareGameVideo() {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            let videoPath = SdkUtil.ttGetScreenRecordingVideoPath()
            uiManager.Instance().showLoading()
            this.ttShareScreenRecordVideo(config.gameName,videoPath,()=>{
                uiManager.Instance().hideLoading()
            }, ()=>{
                uiManager.Instance().hideLoading()
            })
        }
    }

    // 获取广告id
    public static getAdId(ad_type = config.ADS_TYPE.UNKNOWN):string {
        let ad_id = ""
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            if(ad_type==config.ADS_TYPE.GAME_INFINITE_DEGREE_VIDEO) {
                ad_id = config.TT_CONFIG.ADS_ID_INFINITE_DEGREE_VIDEO
            } else if(ad_type==config.ADS_TYPE.GAME_RELIFE_VIDEO) {
                ad_id = config.TT_CONFIG.ADS_ID_RELIFE_VIDEO
            } else if(ad_type==config.ADS_TYPE.GAME_RESTART) {
                ad_id = config.TT_CONFIG.ADS_ID_RESTART
            } else if(ad_type==config.ADS_TYPE.GAME_SIGN_DOUBLE) {
                ad_id = config.TT_CONFIG.ADS_ID_SIGN_DOUBLE
            } else if(ad_type==config.ADS_TYPE.GAME_SIGN_BUQIAN) {
                ad_id = config.TT_CONFIG.ADS_ID_SIGN_BUQIAN
            }
        } else if (sys.platform == sys.Platform.WECHAT_GAME) {
            if(SdkUtil.KS_GAME) {
                if(ad_type==config.ADS_TYPE.GAME_INFINITE_DEGREE_VIDEO) {
                    ad_id = config.KS_CONFIG.ADS_ID_INFINITE_DEGREE_VIDEO
                } else if(ad_type==config.ADS_TYPE.GAME_RELIFE_VIDEO) {
                    ad_id = config.KS_CONFIG.ADS_ID_RELIFE_VIDEO
                } else if(ad_type==config.ADS_TYPE.GAME_RESTART) {
                    ad_id = config.KS_CONFIG.ADS_ID_RESTART
                } else if(ad_type==config.ADS_TYPE.GAME_SIGN_DOUBLE) {
                    ad_id = config.KS_CONFIG.ADS_ID_SIGN_DOUBLE
                } else if(ad_type==config.ADS_TYPE.GAME_SIGN_BUQIAN) {
                    ad_id = config.KS_CONFIG.ADS_ID_SIGN_BUQIAN
                }
            } else {
                if(ad_type==config.ADS_TYPE.GAME_INFINITE_DEGREE_VIDEO) {
                    ad_id = config.WX_CONFIG.ADS_ID_INFINITE_DEGREE_VIDEO
                } else if(ad_type==config.ADS_TYPE.GAME_RELIFE_VIDEO) {
                    ad_id = config.WX_CONFIG.ADS_ID_RELIFE_VIDEO
                } else if(ad_type==config.ADS_TYPE.GAME_RESTART) {
                    ad_id = config.WX_CONFIG.ADS_ID_RESTART
                } else if(ad_type==config.ADS_TYPE.GAME_SIGN_DOUBLE) {
                    ad_id = config.WX_CONFIG.ADS_ID_SIGN_DOUBLE
                } else if(ad_type==config.ADS_TYPE.GAME_SIGN_BUQIAN) {
                    ad_id = config.WX_CONFIG.ADS_ID_SIGN_BUQIAN
                }
            }
        }
        return ad_id
    }
    
    // 显示激励视频广告
    public static showVideoAd(_adUnitId: string, call_back) {
        if(sys.platform==sys.Platform.BYTEDANCE_MINI_GAME) {
            uiManager.Instance().showLoading()
            SdkUtil.videoAd = tt.createRewardedVideoAd({adUnitId: _adUnitId});
        } 
        else if(sys.platform==sys.Platform.WECHAT_GAME) {
            call_back({"isEnded":true})
            // if(SdkUtil.KS_GAME) { 
            //     uiManager.Instance().showLoading()
            //     SdkUtil.videoAd = ks.createRewardedVideoAd({adUnitId: _adUnitId});
            // } 
            // else { 
            //     console.log('wx ad') 
            //     call_back({"isEnded":true})
            //     // gameManager.Singleton.showLoadingLevel()
            //     // SdkUtil.videoAd = wx.createRewardedVideoAd({adUnitId: _adUnitId});
            //     return
            // }
        }
        else {
            call_back({"isEnded":true})
            return
        }

        if(SdkUtil.videoAd==null){ 
            uiManager.Instance().hideLoading()
            return
        }

        if(SdkUtil.KS_GAME) {
            SdkUtil.videoAd.show().then(()=>{
                console.log("ks 广告加载完成");
                SdkUtil.isLookAd = true
            })
        }

        SdkUtil.videoAd.onLoad(() => {
            console.log("广告加载完成");
            SdkUtil.isLookAd = true
            SdkUtil.videoAd.show();
        });
        SdkUtil.videoAd.onClose((res) => {
            console.log('广告关闭=',res)
            uiManager.Instance().hideLoading()
            SdkUtil.isLookAd = false
            SdkUtil.videoAd.destroy()
            call_back(res)
        });
        SdkUtil.videoAd.onError((res) => {
            console.log('广告加载失败=',res)
            uiManager.Instance().hideLoading()
            let errorString = res.errCode + '-' + res.errMsg
            call_back({isEnded:false,errorString:errorString})
            SdkUtil.isLookAd = false
            SdkUtil.videoAd.destroy()
        });
        if(sys.platform==sys.Platform.BYTEDANCE_MINI_GAME) {
            SdkUtil.videoAd.load()
        }
    }

    //------------------------------  微信相关  ------------------------------//

    // 微信检查授权用户信息
    public static wxCheckAuthUserInfo(cb) {
        wx.getSetting({
            success(res) {
                if(res.authSetting['scope.userInfo'] === true) { // 已经授权
                    cb(true)
                } else {
                    cb(false)
                }
            },
            fail(err) {
                cb(false)
            }
        })
    }

    // 微信分享
    public static wxShare(title: string, imageUrl: string='') {
        // console.log('wx分享=',title, 'imageUrl=',imageUrl)
        wx.showShareMenu({
            withShareTicket: true,
            // shareAppMessage(可以删除):显示分享给好友选项，shareTimeline(可以删除)：显示分享至朋友圈选项
		    // 可以只开启前者。如果要开启后者，则两者必须都开启才能生效。
            // menus: ['shareAppMessage', 'shareTimeline'],
            menus: ['shareAppMessage'],
            complete: () => {}
        });
        // 主动分享
        wx.shareAppMessage({
            title: title,
            imageUrl: imageUrl
        });
    }

    //------------------------------  快手相关  ------------------------------//

    // 快手分享
    public static ksShare(title: string, imageUrl:string='', success_cb = null, fail_cb = null) {
        // console.log('ks分享=',title, 'imageUrl=',imageUrl)
        ks.shareAppMessage({
            success:(res)=>{ if(success_cb){ success_cb(res) } },
            fail:(err)=>{  if(fail_cb){ fail_cb(err) }}
        });
    }

    //------------------------------  抖音相关  ------------------------------//

    // 抖音获取系统信息
    public static ttGetSystemInfo(callback) {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.getSystemInfo({
                success:(res) => {
                    // console.log('tt.getSystemInfo=',res)
                    // appName: "Douyin" appName: "douyin_lite"
                    SdkUtil.tt_systemInfo = res
                    callback()
                }
            })
        }
    }

    // 分享
    public static ttShare(title:string, desc:string, sucess_cb=null, fail_cb=null) {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.shareAppMessage({
                title: title,
                desc: desc,
                success() { 
                    console.log("分享成功") 
                    // this.showToast('分享成功')
                    if(sucess_cb) { sucess_cb() }
                },
                fail(e) { 
                    console.log("分享失败",e) 
                    if(fail_cb) { fail_cb() }
                },
            });
        }
    }

    // 抖音添加快捷键(目前仅支持:抖音(Douyin) 和 抖音极速版(douyin_lite))
    public static ttAddShortcut(onSuccess:Function = null, onFail:Function = null) {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            if(SdkUtil.tt_systemInfo.appName=='Douyin'||SdkUtil.tt_systemInfo.appName=='douyin_lite') {
                if(SdkUtil.tt_systemInfo.brand=='Apple') {
                    tt.addShortcut({
                        success() {
                            console.log("添加桌面成功");
                            onSuccess && onSuccess(null)
                        },
                        fail(err) {
                            console.log("添加桌面失败", err.errMsg);
                            onFail && onFail(err)
                        },
                    });
                } else if(SdkUtil.tt_systemInfo.brand=='Android') {
                    // 检测只支持安卓
                    tt.checkShortcut({
                        success(res) {
                            console.log("检查快捷方式", res.status);
                            if(res.status.exist==false||res.status.needUpdate==true) {
                                tt.addShortcut({
                                    success() {
                                        console.log("添加桌面成功");
                                        onSuccess && onSuccess(null)
                                    },
                                    fail(err) {
                                        console.log("添加桌面失败", err.errMsg);
                                        onFail && onFail(err)
                                    },
                                });
                            }
                        },
                        fail(err) {
                            console.log("检查快捷方式失败", err.errMsg);
                            onFail && onFail(err)
                        },
                    });
                }   
            }
        }
    }

    // 抖音注册信息
    public static ttRegisterInfo() {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.onShow((res) => {
                console.log('tt.onShow =', res)
                // console.log('res=',res)
                if(res.scene == '021036' || res.scene == '101036') {
                    SdkUtil.tt_isToEnterFromSidebar = true
                }
                if(res.scene.launch_from == 'homepage' && res.scene.location == 'sidebar_card') {
                    SdkUtil.tt_isToEnterFromSidebar = true
                }
            });
            tt.onHide(()=>{
                console.log('tt.onHide')
                if(SdkUtil.isLookAd==false) {
                    // statisticsManager.uploadRecordUserLevel(false)
                }
            })
            
            tt.checkScene({
                scene: "sidebar",
                success: (res) => {
                    console.log("check scene success: ", res.isExist);
                    if(res.isExist != undefined || res.isExist != null) {
                        SdkUtil.tt_isSupportSidebar = res.isExist
                    }
                },
                fail: (res) => {
                    console.log("check scene fail:", res);
                }
            });

            let options = tt.getLaunchOptionsSync()
            console.log('getLaunchOptionsSync=', options)
            if(options.scene == '021036' || options.scene == '101036') {
                SdkUtil.tt_isToEnterFromSidebar = true
            }
        }
    }

    // 抖音检测是否显示奖励
    public static ttCheckSceneShowRewards():boolean {
        return SdkUtil.tt_isSupportSidebar
    }

    // 抖音检测是否从侧边栏进入
    public static ttCheckToEnterFromSidebar():boolean {
        return SdkUtil.tt_isToEnterFromSidebar
    }

    // 抖音导航到侧边栏场景
    public static ttNavToSidebarScene() {
        if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
            tt.navigateToScene({
                scene: "sidebar",
                success: (res) => {
                    // console.log("navigate to scene success");
                },
                fail: (res) => {
                    // console.log("navigate to scene fail: ", res);
                },
            });
        }
    }

    // 抖音开启屏幕录制
    public static ttStartScreenRecording() {
        if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME) {
            return
        }

        if(this.tt_systemInfo.platform == 'devtools') {
            console.log('抖音模拟器')
            return
        }

        if(this.tt_isRecording==true) {
            this.ttStopScreenRecording()
        }
        
        if(!this.tt_gameRecorder) {
            this.tt_gameRecorder = tt.getGameRecorderManager()
        }
        this.tt_gameRecorder.start({duration: this.tt_totalRecord})
        this.tt_gameRecorder.onStart(()=> {
            this.tt_isRecording = true
            // console.log('GameRecorder onStart onStart onStart')
        })
        this.tt_gameRecorder.onStop((res)=> {
            // console.log('GameRecorder onStop onStop onStop=',res)
            this.tt_isRecording = false
            this.tt_recordVideoPath = res.videoPath
        })
        this.tt_gameRecorder.onError((e)=> {
            console.log('ttGameRecord error:',e)
        })
        
    }

    // 抖音关闭屏幕录制
    public static ttStopScreenRecording(isClearVideoPath:boolean = false) {
        if(sys.platform!=sys.Platform.BYTEDANCE_MINI_GAME) {
            return
        }

        if(this.tt_gameRecorder == null) {
            return
        }

        if(isClearVideoPath) {
            this.tt_recordVideoPath = "";
        }
        
        this.tt_gameRecorder.stop()        
    }

    // 抖音获取屏幕录制视频文件
    public static ttGetScreenRecordingVideoPath():string {
        return this.tt_recordVideoPath;
    }

    // 抖音分享屏幕录制视频
    private static ttShareScreenRecordVideo(title: string, videoPath: string, onSuccess: Function = null, onFail: Function = null) {
        console.log('tt_录制视频路径=',videoPath)
        if(videoPath.length<=0) {
            return
        }
        tt.shareAppMessage({
            title: title,
            templateId: config.TT_CONFIG.SHARE_RECORD_VIDEO_ID,
            channel: "video",
            extra: {
                videoTopics: [config.gameName],
                hashtag_list: ['小游戏','小程序'],
                videoPath: videoPath,
                withVideoId: true,
            },
            success: (res) => {
                console.log('抖音分享屏幕录制视频,成功=',res)
                onSuccess && onSuccess();
            },
            fail: (e) => {
                // 当前今日头条ios无法获得分享成功回调 if(res.platform === 'ios' && res.appName === 'Toutiao')
                console.log('抖音分享屏幕录制视频,失败=',e)
                onFail && onFail()
            }
        })
    }

}
