防沉迷
从 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 万越南盾。
- 初始化参数部分也不同,请参考下列示例进行初始化。
关于越南防沉迷和国内防沉迷的初始化参数不同。这里给出客户端示例代码:
- Unity
- UE
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"
// 初始化时需要将 Config 的 Region 设置为 EAAURegion::Vietnam
FAAUConfig Config;
Config.ClientID = TEXT("your_client_id");
Config.UseTapLogin = false;
Config.ShowSwitchAccount = false;
Config.Region = EAAURegion::Vietnam; //国家区域,默认中国 [越南防沉迷需要设置次字段为 Vietnam]
AntiAddictionUE::Init(Config);
检查消费上限
根据年龄段的不同,未成年玩家的消费金额有不同的上限。 如果启用消费限制功能,游戏客户端需要在未成年玩家消费前检查是否受限。
游戏在收到玩家的付费请求后,先调用 AntiAddictionUIKit.CheckPayLimit
检查当前玩家的付费行为是否被限制,触达消费上限后游戏客户端应禁止玩家发起支付。
未触达消费上限再调用 XDSDK 发起支付请求。
越南地区货币单位默认是 VND (越南盾), 接口参数 amount
以枢为单位。
注: 越南盾补助单位有“毫”(hào)和“枢”(xu),1盾=10毫=100枢。
这里给出客户端示例代码:
- Unity
- UE
long amount = 100;
AntiAddictionUIKit.CheckPayLimit(amount,
(result) => {
// status 为 1 时可以支付
int status = result.status;
if (status == 1) {
// 可以进行支付
}
},
(exceptionMsg) => {
// 处理异常
}
);
AntiAddictionUE::CheckPayLimit(FCString::Atoi(*AmountTF->Text.ToString()), [](bool Status) {
TUDebuger::DisplayShow(FString::Printf(TEXT("Status: %d"), Status));
}, [](const FString& Msg) {
TUDebuger::ErrorShow(Msg);
});
测试账号
测试账号的使用场景分为两种:
- 第一种:游戏处于开发测试阶段,需要测试账号来进行实名认证防沉迷功能测试。
- 第二种:适用于申请游戏版号的场景。
申请测试账号的两种途径:
- 第一种:使用 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 个测试账号。(不同年龄段需要的测试账号数量游戏根据自身需求进行申请)
- 未满 8 周岁:n 个
如果游戏侧需要测试未成年账号功能,可以在 #tds-support
频道中 @王浩 申请进行时间调整。
申请需要提供:
- 详细说明调整时间的需求
- 应用 Tap Client ID
- 需要调整的时间范围 譬如:xx 游戏接入实名认证,现需要测试未成年账号的防沉迷功能;应用 Client ID:svkmf***legjy;调整时间:自今日起即 3.13 ~ 3.15 日,每天下午 3 点到下午 5 点为未成年防沉迷测试时间段(具体时间段游戏侧根据实际需求提出)。 这样游戏侧则不需要等到未成年合规游戏时间段进行测试。
关于调整测试账号功能适用于应用开发测试阶段,时间调整是根据 Tap Client ID 来进行调整的,如果游戏已经上线,可能会影响到线上防沉迷功能。