跳到主要内容

防沉迷

从 XDSDK v6.4.0 开始,XDSDK 将不再内置防沉迷 SDK 及其逻辑调用。游戏需要自行参考 TapSDK 中 实名认证和防沉迷开发指南 的内容来完成国内防沉迷的接入。此外,关于实名认证防沉迷的接入可以参考博客:XDSDK 接入 TDS 实名认证防沉迷最佳实践

防沉迷金额

客户端

警告
  • 调用 startup 接口时,参数 userIdentifier 请填写用户的 XDID (即 XDGUser 中的 userId)。
  • 为了避免游戏客户端上报和 XD Server 服务端上报发生防沉迷金额上报重复,非特殊情况下请游戏客户端不要进行防沉迷金额上报。

服务端

当玩家支付成功并且支付渠道给到支付回调后,XD Server 会 Server to Server 上报玩家的支付金额给 TDS 防沉迷,游戏不需要在客户端进行上报。但游戏的客户端依然需要自行校验玩家消费是否达到上限(参考文档)。

Server 端 Webhook 设置

网络游戏企业必须严格按照有关法律法规妥善保存、保护用户提供的实名注册信息。Webhook 用于接收用户在游戏实名认证过程中手动输入的实名信息,如果用户使用 TapTap 快速认证,则不会返回。游戏方需要在游戏服务器上设置 Webhook,并在 TapTap 开发者服务中心后台配置好 Webhook 的 URL。心动一方游戏固定配置为:https://xdsdk-6.xd.cn/api/real-auth/v1/info/save 。更多关于实名认证防沉迷 Webhook 的使用请参考文档

提示:Server 端 Webhook 设置仅适用于国内游戏,越南防沉迷则不需要进行设置。

越南防沉迷

由于 XDSDK 海外默认不启用防沉迷相关配套功能,当项目组准备在越南地区发行游戏并有以下需求时需要在 #tds-support 上发起需求。

  • 需要一个给越南的运营和越南政府过审和查看实名信息用的后台(V4后台)
  • 海外官网网页支付页启用防沉迷金额校验
  • XDSDK 服务端将用户消费金额上报到 TDS 防沉迷服务
信息

接入 XDSDK 后,XDSDK 帮游戏做了什么?

  • 与国内防沉迷一样,游戏客户端接入 XDSDK 后不需要游戏再调用 AntiAddictionUIKit.SubmitPayResul 上报一次消费金额。XDSDK 服务端会负责上报。
  • 网页支付(非苹果、谷歌支付)部分由 XDSDK 负责进行实名确认、和消费上限检测,游戏客户端无需关心这一步。

需要游戏做什么?

  • 在登录前,客户端需要调用 TapSDK 内的防沉迷认证,完成实名后才允许进入游戏。
  • 在调用苹果、谷歌支付前,客户端需要调用 TapSDK 内的检查消费上限方法,触达消费上限后禁止发起支付。

客户端

警告
  • 请游戏客户端直接调用 TapSDK 实现防沉迷相关业务逻辑
  • 支持越南防沉迷的 TapSDK 的最低版本是 3.15.1

越南防沉迷和国内防沉迷都是通过使用 TapSDK 中 实名认证和防沉迷开发指南 的内容来实现。

但请注意两者是存在区别的:

  • 越南要求未成年每日只能进行 3 小时游戏,在无法进行游戏时会给出 1050 的 code 码,国内会给出 1030 的 code 码,请注意区分!
  • 消费防沉迷限额与国内也不同,越南要求未成年每日最多进行 10 笔交易,每日消费金额不超过 300 万越南盾。
  • 初始化参数部分也不同,请参考下列示例进行初始化。

关于越南防沉迷和国内防沉迷的初始化参数不同。这里给出客户端示例代码:

using TapTap.AntiAddiction;
using TapTap.AntiAddiction.Model;

AntiAddictionConfig config = new AntiAddictionConfig()
{
gameId = "your_client_id", // TapTap 开发者中心对应 Client ID
showSwitchAccount = false, // 是否显示切换账号按钮
region = Region.Vietnam, // 主要特殊表明是越南部分防沉迷,如果不显示说明则会执行国内防沉迷的策略
};

Action<int, string> callback = (code, errorMsg) => {
// code == 500; // 登录成功
// code == 1000; // 用户登出
// code == 1001; // 切换账号
// code == 1030; // 用户当前无法进行游戏
// code == 1050; // 时长限制
// code == 9002; // 实名过程中点击了关闭实名窗
UnityEngine.Debug.LogFormat($"code: {code} error Message: {errorMsg}");
};

AntiAddictionUIKit.Init(config, callback);
// 如果是 PC 平台还需要额外设置一下 gameId
TapTap.AntiAddiction.TapTapAntiAddictionManager.AntiAddictionConfig.gameId = "your_client_id"

检查消费上限

根据年龄段的不同,未成年玩家的消费金额有不同的上限。 如果启用消费限制功能,游戏客户端需要在未成年玩家消费前检查是否受限。

游戏在收到玩家的付费请求后,先调用 AntiAddictionUIKit.CheckPayLimit 检查当前玩家的付费行为是否被限制,触达消费上限后游戏客户端应禁止玩家发起支付。 未触达消费上限再调用 XDSDK 发起支付请求。

警告

越南地区货币单位默认是 VND (越南盾), 接口参数 amount 以枢为单位。

注: 越南盾补助单位有“毫”(hào)和“枢”(xu),1盾=10毫=100枢。

这里给出客户端示例代码:

long amount = 100;
AntiAddictionUIKit.CheckPayLimit(amount,
(result) => {
// status 为 1 时可以支付
int status = result.status;
if (status == 1) {
// 可以进行支付
}
},
(exceptionMsg) => {
// 处理异常
}
);

测试账号

测试账号的使用场景分为两种:

  • 第一种:游戏处于开发测试阶段,需要测试账号来进行实名认证防沉迷功能测试。
  • 第二种:适用于申请游戏版号的场景。

申请测试账号的两种途径:

  • 第一种:使用 TapTap 开发者中心提供的测试账号。

TapTap 开发者中心提供的测试账号使用方式具体可以参考 TapSDK 文档说明,调整时间需要启用测试模式。特别需要注意,这种方式需要游戏在调用 startupwithtaptap 接口时,传递的玩家的唯一标识 userIdentifier 参数为 TapTap 登录后返回的 union id

  • 第二种:提 Jira 工单进行申请,指派给运营同学「童洁」,工单申请后还需要在 #tds-support 频道中 @童洁 和 @王浩。(推荐)

工单内容:

  • 说明具体的测试账号使用需求
  • 应用的 Tap Client ID: xxx
  • 年龄需求分布:
    • 未满 8 周岁:n 个
    • 满 8 周岁,未满 16 周岁:n 个
    • 满 16 周岁,未满 18 周岁:n 个
    • 满 18 周岁:n 个
    • 未实名账号:n 个
    • 总共 N 个测试账号。(不同年龄段需要的测试账号数量游戏根据自身需求进行申请)

如果游戏侧需要测试未成年账号功能,可以在 #tds-support 频道中 @王浩 申请进行时间调整。 申请需要提供:

  • 详细说明调整时间的需求
  • 应用 Tap Client ID
  • 需要调整的时间范围 譬如:xx 游戏接入实名认证,现需要测试未成年账号的防沉迷功能;应用 Client ID:svkmf***legjy;调整时间:自今日起即 3.13 ~ 3.15 日,每天下午 3 点到下午 5 点为未成年防沉迷测试时间段(具体时间段游戏侧根据实际需求提出)。 这样游戏侧则不需要等到未成年合规游戏时间段进行测试。

关于调整测试账号功能适用于应用开发测试阶段,时间调整是根据 Tap Client ID 来进行调整的,如果游戏已经上线,可能会影响到线上防沉迷功能。