# 抖音小游戏JSSDK

# 接入必读

  1. 发行SDK需要接管小游戏用户登录行为,cp必须按照STEP 4: 接入登录调用SDK提供的方法进行登录。SDK登录成功后会返回发行用户id小游戏用户openid小游戏用户unionid等信息。特别注意,cp研发不要再调用tt.login进行登录,否则会造成发行SDK登录失败
  2. 由于发行服务托管了小游戏用户的session_key,cp研发如需获取用户敏感信息,请参考获取用户信息调用发行SDK提供的方法获取。
  3. 发行服务采用统一的中控服务来管理小游戏官方服务端api调用凭证access_token,cp如果需要使用该凭证,请务必参照获取小游戏access_token调用发行服务端api获取。特别注意,cp不要直接调用小游戏官方服务端api去获取access_token,否则会让发行服务维护的凭证失效,导致投放损失
  4. 用户观看广告行为数据上报的准确性会直接影响小游戏发行的效果,请cp研发同学务必按照STEP 5: 接入广告上报行为上报完所有类型广告的创建、加载、展示、关闭、隐藏事件。
  5. cp需要确保接入发行SDK的游戏不会自主回传广告事件给巨量引擎,否则会造成投放数据紊乱,造成投放损失。
  6. 对于发行SDK未代理的抖音小游戏官方api,请cp研发同学参照抖音小游戏官方开发文档 (opens new window)直接调用官方api。

# STEP 1:接入准备

# 添加服务器域名

参照服务器域名白名单配置文档 (opens new window)添加https://api.mcfrogtech.comhttps://api.shxqwl.com到request合法域名。

# 提供小游戏信息

提供小游戏名、小游戏ID(AppID)和密钥(AppSecret)给发行对接技术人员,为了安全起见,SDK会将密钥存储在服务端,不会在客户端存储。AppID和AppSecret在小游戏开发者后台获取。

# CP提供历史用户已注册激活校验接口

如果待接入的小游戏不是一个新包或者CP已经进行过投放,为了保证投放数据准确性,CP需要提供可用来校验小游戏用户是否在CP投放期内已经完成注册激活过程的API接口,API接口需要满足以下条件:

# API名

CP可以自定义API名,将API名提供给发行对接技术人员。

# 调用方式

GET

# 请求参数

参数 类型 默认值 必填 说明
open_id string 小游戏用户open_id

# 响应参数

参数 类型 默认值 必填 说明
registered boolean 是否注册激活,true表示已经注册激活,false表示没有注册激活。

# STEP 2: 下载集成SDK

# 下载SDK

点击下载最新版本 (opens new window)

# 集成SDK

下载的SDK压缩包提供了如下多种SDK,cp研发可以根据自己的研发场景选取合适的SDK集成。

压缩文件目录 SDK类型 适用场景
esm es6模块化的SDK 小游戏打包构建工具支持es6模块的场景,通过es6模块导入语法import导入SDK。如果在Cocos 3中使用该SDK,需要将index.js改名为index.mjs后以携带文件名后缀的方式导入,例如import ttAppSDK from 'index.mjs'。SDK模块导出的各类变量可以查看目录下的index.d.ts文件。
cjs commonjs模块化的SDK 小游戏打包构建工具支持commonjs模块的场景,通过commonjs模块导入语法require导入SDK。SDK模块导出的各类变量可以查看目录下的index.d.ts文件。
global 全局环境运行的SDK 在全局环境中引入SDK,需要小游戏开发工具支持全局运行脚本的能力。SDK会在全局对象window上挂载McfrogtechMiniSDK对象,该对象包含SDK实例ttAppSDK以及各类枚举类型,cp研发可以参考目录下的mcfrogetch.d.ts文件查看包含的具体内容。如果使用ts作为开发语言,为了防止ts类型报错,可以把目录中的mcfrogetch.d.ts文件拖到项目根目录下。

# STEP 3: 初始化SDK

# 方法定义

interface InitOptions {
  appId: string;
}

function init(options: InitOptions): void;

# 参数介绍

属性 类型 默认值 必填 说明
appId string 小游戏appId

# 返回值介绍

void。

# 调用示例

ttAppSDK.init({
  appId: <your tt minigame appId>,
});

# STEP 4: 接入登录

# 方法定义

interface LoginData {
  user_id: string;
  open_id: string;
  union_id: string;
}

function login(): Promise<LoginData> 

# 参数介绍

void。

# 返回值介绍

返回一个Promise对象,Promise对象返回值包含的属性说明如下:

属性 类型 默认值 必填 说明
user_id string 发行平台定义的用户id。CP研发可以用来映射业务用户id。
open_id string 小游戏用户openid。
union_id string 小游戏用户unionid。

# 调用示例

ttAppSDK.login().then(({ user_id, open_id, union_id }) => {
  console.log(user_id, open_id, union_id);
}).catch((e) => {
  console.error(e);
});

# STEP 5: 接入广告行为上报

为了更好地帮助小游戏进行推广,需要CP方上报用户广告关键行为给SDK。

# 方法定义

enum TtAdTraceName {
  // 创建广告
  CreateAd = 'create_ad',
  // 加载广告
  LoadAd = 'load_ad',
  // 曝光广告
  ShowAd = 'show_ad',
  // 关闭广告
  CloseAd = 'close_ad',
  // 隐藏广告
  HideAd = 'hide_ad'
}

enum TtAdType {
  // 激励视频广告
  RewardedVideo = 'rewarded_video',
  // 插屏广告
  Interstitial = 'interstitial',
  // banner广告
  Banner = 'banner',
}

interface TtAdTraceData {
  // 广告位 id
  unitId: string;
  // 广告类型
  type: TtAdType;
}

function reportAdTrace(traceName: TtAdTraceName, params: TtAdTraceData): Promise<void>;

# 参数介绍

参数 类型 默认值 必填 说明
traceName TtAdTraceName枚举 广告行为事件名称,创建、加载、曝光、关闭、隐藏分别对应create_adload_adshow_adclose_adhide_ad
params TtAdTraceData 广告行为对应数据,unitId字段上报广告单元id,type字段上报广告类型,取值为rewarded_video(激励视频广告)、interstitial(插屏广告)、banner(banner广告)。

# 返回值介绍

Promise<void>

# 调用示例

尽量上报全创建、加载、曝光、关闭、隐藏这五类事件,以便于精确的分析广告行为,更有利于投放。

ttAppSDK.reportAdTrace(TtAdTraceName.CreateAd, {
  unitId: 'testunitId',
  type: TtAdType.RewardedVideo,
}).then(() => {
  console.log('事件上报成功');
}).catch(() => {
  console.error('事件上报失败');
});