123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495 |
- import { _decorator, error, SpriteFrame, sys } from "cc";
- import { config } from "./config";
- import { uiManager } from "./manager/uiManager";
- import { tools } from "./tools";
- //管理广告、分享、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 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 = 300; //抖音总录制时间
- private static tt_isRecording:boolean = false; //抖音是否录制中
- //------------------------------ 公共 ------------------------------//
- public static init() {
- 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 login(call){
- if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
- tt.login({
- force: true,
- success(res) {
- console.log(`login 调用成功${res.code} ${res.anonymousCode}`);
- call({"code":res.code,"anonymousCode":res.anonymousCode})
- },
- fail(res) {
- console.log(`login 调用失败`);
- 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(`getUserInfo 调用成功`, res.userInfo);
- call(res.userInfo)
- },
- fail(res) {
- console.log(`getUserInfo 调用失败`, res.errMsg);
- },
- });
- }else{
- call(null)
- }
- }
- // 震动
- public static vibrateShort(){
- if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
- tt.vibrateShort({
- success(res) {
- // console.log(`${res}`);
- },
- fail(res) {
- // console.log(`vibrateShort调用失败`);
- },
- });
- }
-
- }
- // 关于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) { console.log(`${res}`);},
- // fail(err) { console.log(`showLoading调用失败`,err);},
- })
- }
- }
- public static hideLoading() {
- if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
- tt.hideLoading({
- // success(res) { console.log(`${res}`); },
- // fail(err) { console.log(`hideLoading调用失败`,err); },
- });
- }
- }
- // 展示toast
- public static showToast(title:string,duration=2000) {
- if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
- tt.showToast({
- title: title,
- duration: duration,
- success(res) {
- console.log(`${res}`);
- },
- fail(res) {
- console.log(`showToast调用失败`);
- },
- });
- }
- }
- // 选择系统相册
- 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(`chooseImage调用失败=`,err);
- },
- })
- } else {
- // call_back()
- }
- }
- // 检测显示添加桌面
- 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, call_back) {
- if(sys.platform == sys.Platform.BYTEDANCE_MINI_GAME) {
- if(title.length<=0) { title = config.TT_CONFIG.SHARE_RELIFE_TITLE }
- let desc = tools.sys_config.share_des
- if(desc==undefined||desc==null) { desc = ''}
- tt.shareAppMessage({
- title: title,
- desc: desc,
- success() {
- console.log("分享成功")
- // SdkUtil.showToast('分享成功')
- call_back(true)
- },
- fail(e) {
- console.log("分享失败",e)
- SdkUtil.showToast('分享失败')
- call_back(false)
- },
- });
- } else if(sys.platform == sys.Platform.WECHAT_GAME) {
- if(title.length<=0) { title = config.WX_CONFIG.SHARE_RELIFE_TITLE }
- }else{
- 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 (sys.platform == sys.Platform.WECHAT_GAME) {
- 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
- }
- // if(SdkUtil.KS_GAME) {
- // } else {
- // }
- }
- 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 {
- call_back({"isEnded":true})
- return
- }
- if(SdkUtil.videoAd==null){
- uiManager.Instance().hideLoading()
- return
- }
- SdkUtil.videoAd.onLoad(() => {
- SdkUtil.isLookAd = true
- SdkUtil.videoAd.show();
- console.log("广告加载完成");
- });
- SdkUtil.videoAd.onClose((res) => {
- // console.log('广告关闭')
- uiManager.Instance().hideLoading()
- SdkUtil.isLookAd = false
- SdkUtil.videoAd.destroy()
- call_back(res)
- });
- SdkUtil.videoAd.onError((res) => {
- // console.log('广告错误')
- uiManager.Instance().hideLoading()
- SdkUtil.isLookAd = false
- SdkUtil.videoAd.destroy()
- let errorString = res.errCode + '-' + res.errMsg
- call_back({isEnded:false,errorString:errorString})
- });
- SdkUtil.videoAd.load()
- }
- //------------------------------ 抖音相关 ------------------------------//
- // 抖音获取系统信息
- 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()
- }
- })
- }
- }
- // 抖音添加快捷键(目前仅支持:抖音(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()
- }
- })
- }
- }
|