Skip to content

直玩

设置直玩出现时机

version>=1.1.0

  • 仅支持抖音小游戏
csharp
public static void SetFeedGameData(SetFeedGameDataParam param);
typescript
export function setFeedGameData(params: SetFeedGameDataParam): void;

SetZWDataParam参数

参数类型说明默认值
scenenumber场景
contentIdsArray[string]contentIds
timestampnumber时间戳(毫秒)

下面,我们给出一种实现方式以供参考,请注意,以下为伪代码,仅演示逻辑流程

// 在首页判断是否来自抖音推荐流直出
if(tt.getLaunchOptionsSync().scene.toString().endsWith('3041')){ // 注意如果是重复可以进入的判断,则仅需判断第一次
    // 进入对应的界面
    // 如果有多种场景,也可以拿到query下的feed_game_scene 或 feed_game_extra 进行对应的跳转
}

// 在跳转成功后,一定要上报该接口
// 注意上报该接口后,抖音会停止网络相关的访问,所以要确保远程资源已经下载完毕
// 同时也只有在这个方法上报后,抖音才会显示直玩入口,所以也不建议太晚上报
tt.reportScene({ sceneId: 7001, costTime: params.duration });

// 在对应的界面,比如领取界面,进行授权判断
// 如果选择的是all,则必须是用户主动操作的,我们一般建议在领取的时候弹出,然后顺便上报给服务器下一次领取的时间
tt.checkFeedSubscribeStatus({
    type: 'play',
    allScene: true,
    success: (res: { status: boolean }) => {
        if (res.status) {
            // 已订阅回调
            return;
        }
        // 继续请求
        tt.requestFeedSubscribe({
            type: 'play',
            // 单场景订阅
            scene: 1,
            contentIDs: ["CONTENT123", "CONTENT234"],
            // 对应全场景,则必须是用户点击后触发
            allScene: true,
            success: (res: { errMsg: string, success: boolean }) => {
                if (res.success) {
                    // 订阅成功回调
                } else {
                    // 用户未订阅             
                }
            },
            fail: (err: { errNo: number, errMsg: string }) => {
                // 订阅失败                  
            }
        });

    },
    fail: (err: { errNo: number, errMsg: string }) => {
        // 查询失败                 
    }

// 订阅成功后,向服务器请求下次成功的领取时间
// 离线收益场景是1 体力恢复场景是2 重大时间提醒场景是3
seeg.setFeedGameData(scene, ["CONTENT_ID"], time);

// 如果需要统计从推荐流直出来的用户,可以使用tt.onFeedStatusChange接口监听