Skip to main content
Version: v3

TapSDK 合规使用说明

更新日期:2024 年 3 月 28 日

生效日期:2024 年 3 月 28 日

易玩(上海)网络科技有限公司(以下简称 “TapTap” 或“我们”)将通过本文档向开发者和其用户介绍 TapSDK 的标准使用方式以及相关建议。

一、TapSDK 数据收集合规步骤

TapSDK 提供延迟初始化的方式来满足合规。开发者应在用户同意 《隐私政策》后,初始化 SDK 进行数据收集。具体参考如下步骤:

if(未同意隐私协议){
//展示隐私协议弹窗相关逻辑
if(用户同意隐私协议){
TapBootstrap.init();
}
}else{
TapBootstrap.init();
}

二、TapSDK 基本业务功能

业务功能介绍:由于开发者可以根据自身需求接入 TapSDK 的任意功能,因此根据定义,无基本业务功能。

三、TapSDK 扩展业务功能

1. 更新唤起

  • 功能介绍

更新唤起服务主要应用于在 TapTap 国内商店分发的游戏包体更新场景。

  • 合规调用时机

玩家打开游戏后对该功能进行初始化和调用。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
安装 APK 权限用于安装 TapTap 客户端用户首次使用该功能时会申请权限
  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:

// TapUpdate.Init("clientId", "clientToken");

或者移除掉统一初始化入口(详见文档),示例如下:

// var config =  new TapConfig.Builder()
// .ClientID("your_client_id") // 必须,开发者中心对应 Client ID
// .ClientToken("your_client_token") // 必须,开发者中心对应 Client Token
// .ServerURL("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API
// .RegionType(RegionType.CN) // 非必须,CN 表示中国大陆,IO 表示其他国家或地区
// .ConfigBuilder();
// TapBootstrap.Init(config);

  • 必要个人信息
必要个人信息使用目的场景收集频次
系统版本为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化显示及UI 交互时触发一次
设备型号为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化显示及UI 交互时触发一次
设备 CPU 信息为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化显示及UI 交互时触发一次
网络类型为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
Android ID为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化初始化及用户发起授权时获取一次
设备内存信息为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
设备指定应用信息获取当前已安装 TapTap 客户端信息当设备未安装时,引导用户完成 TapTap 客户端每次应用冷启动获取一次
  • 可选个人信息

2. TapTap 登录

  • 功能介绍

提供 TapTap 登录方式,玩家可以通过 TapTap 授权快速开始游戏。

  • 合规调用时机

玩家点击「TapTap 登录」按钮时进行初始化和调用。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:

// TapLogin.Init(string clientID);

try
{
// 在 iOS、Android 系统下,会唤起 TapTap 客户端或以 WebView 方式进行登录
// 在 Windows、macOS 系统下显示二维码(默认)和跳转链接(需配置)
// var accessToken = await TapLogin.Login();
// Debug.Log($"TapTap 登录成功 accessToken: {accessToken.ToJson()}");
}

或者移除掉统一初始化入口(详见文档),示例如下:

// var config =  new TapConfig.Builder()
// .ClientID("your_client_id") // 必须,开发者中心对应 Client ID
// .ClientToken("your_client_token") // 必须,开发者中心对应 Client Token
// .ServerURL("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API
// .RegionType(RegionType.CN) // 非必须,CN 表示中国大陆,IO 表示其他国家或地区
// .ConfigBuilder();
// TapBootstrap.Init(config);
  • 必要个人信息
必要个人信息使用目的场景收集频次
系统版本为帮助用户保障登录功能的正常生效和安全稳定使用网页登录用户使用网页登录时获取一次
设备版本为帮助用户保障登录功能的正常生效和安全稳定用户授权及验证登录有效性初始化及用户发起授权时获取一次
  • 可选个人信息

3. 合规认证

  • 功能介绍

基于 TapTap 账号的快速实名认证功能,对使用 TapTap 账号登录游戏的玩家,在经过玩家同意授权之后,允许玩家使用在 TapTap 里已经通过国家认证的实名信息快速完成游戏中的认证流程。

  • 合规调用时机

玩家实名认证或游戏检查当前登录用户是否合规时进行初始化和调用。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
获取网络状态用于检测当前网络连接是否有效用户首次使用该功能时会申请权限
  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:

 
"dependencies":{
...
// "com.tapsdk.antiaddiction":"https://github.com/taptap/TapAntiAddiction-Unity.git#3.28.3",
}
// AntiAddictionConfig config = new AntiAddictionConfig()
// {
// gameId = "your_client_id", // TapTap 开发者中心对应 Client ID
// showSwitchAccount = false, // 是否显示切换账号按钮
// };

// AntiAddictionUIKit.Init(config, callback);

或者移除掉统一初始化入口(详见文档),示例如下:

// var config =  new TapConfig.Builder()
// .ClientID("your_client_id") // 必须,开发者中心对应 Client ID
// .ClientToken("your_client_token") // 必须,开发者中心对应 Client Token
// .ServerURL("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API
// .RegionType(RegionType.CN) // 非必须,CN 表示中国大陆,IO 表示其他国家或地区
// .ConfigBuilder();
// TapBootstrap.Init(config);
  • 必要个人信息
必要个人信息使用目的场景收集频次
WiFi 信息为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化仅网络请求异常时获取状态一次
系统版本为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
  • 可选个人信息

4. 付费下载和正版验证、DLC

  • 功能介绍

TapTap 的正版验证服务适用于付费下载的游戏,当玩家在使用付费游戏时,校验玩家是否已经成功购买付费游戏。 TapTap 开发者服务,支持付费的可下载内容(DLC),让玩家不离开游戏便能浏览、购买、拥有新内容。

  • 合规调用时机

玩家使用游戏内购及触发游戏版本验证时。

  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的调用代码(详见文档),示例如下:

// TapLicense.Check();
// TapLicense.QueryDLC(string[] skuIds);

  • 必要个人信息
必要个人信息使用目的场景收集频次
设备指定应用信息获取已安装的 TapTap 客户端信息使用 TapTap 客户端完成游戏版本验证及内购在该功能调用对应版本验证及付费时配置
  • 可选个人信息

5. 内嵌动态

  • 功能介绍

玩家可以在游戏内访问 TapTap 的社区论坛(官方公告、游戏攻略、问题反馈、热门话题等),同时也可以看到 TapTap 好友的游戏动态,并参与其他玩家、官方和大神之间的互动。

  • 合规调用时机

玩家打开内嵌动态或者开始接收动态通知时进行初始化和调用。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
获取网络状态用于检测当前网络连接是否有效用户首次使用该功能时会申请权限
读写存储权限用于发布或下载动态页面内图片、视频下载或使用本地图片发布动态时申请
  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:

//TapMoment.Init(string clientID);

或者移除掉统一初始化入口(详见文档),示例如下:

// var config =  new TapConfig.Builder()
// .ClientID("your_client_id") // 必须,开发者中心对应 Client ID
// .ClientToken("your_client_token") // 必须,开发者中心对应 Client Token
// .ServerURL("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API
// .RegionType(RegionType.CN) // 非必须,CN 表示中国大陆,IO 表示其他国家或地区
// .ConfigBuilder();
// TapBootstrap.Init(config);
  • 必要个人信息
必要个人信息使用目的场景收集频次
WiFi 信息为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示动态页面时获取一次
系统版本为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示动态页面时获取一次
设备版本为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示动态页面时获取一次
Android ID为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示动态页面时获取一次
手机样式为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示动态页面时获取一次
设备内存为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示动态页面时获取一次
  • 可选个人信息

6. TapTap Connect(悬浮窗)

  • 功能介绍

TapTap Connect(以下简称悬浮窗)是连接 TapTap、游戏和玩家的工具。开发者启用该功能后,成功登录 TapTap 账号的玩家可在悬浮窗内进行浏览游戏动态、评价游戏、分享游戏下载链接等操作,来帮助游戏提升留存并带来新用户。

  • 合规调用时机

玩家 Tap 账号登录成功后。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:

// TapConnect.Init("your_client_id", "your_client_token", (bool)isCN);

或者移除掉统一初始化入口(详见文档),示例如下:

// var config =  new TapConfig.Builder()
// .ClientID("your_client_id") // 必须,开发者中心对应 Client ID
// .ClientToken("your_client_token") // 必须,开发者中心对应 Client Token
// .ServerURL("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API
// .RegionType(RegionType.CN) // 非必须,CN 表示中国大陆,IO 表示其他国家或地区
// .ConfigBuilder();
// TapBootstrap.Init(config);
  • 必要个人信息
必要个人信息使用目的场景收集频次
系统版本为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化悬浮窗 UI 发生变化时获取一次
设备型号为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化悬浮窗 UI 发生变化时获取一次
设备 CPU 信息为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化悬浮窗 UI 发生变化时获取一次
网络类型为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
Android ID为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化初始化及用户发起授权时获取一次
设备内存信息为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
设备方向传感器信息为了确保悬浮窗口在设备中正常显示悬浮窗显示每次应用冷启动获取一次
  • 可选个人信息

7. 成就系统

  • 功能介绍

可以在游戏中设置「普通成就」和「白金成就」,增加玩家在游戏中的参与度,鼓励玩家以不同的玩法来玩游戏。

  • 合规调用时机

玩家查看游戏成就时进行初始化和调用。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:

 
"dependencies":{
...
// "com.taptap.tds.achievement": "https://github.com/TapTap/TapAchievement-Unity.git#3.28.3",
}

或者移除掉统一初始化入口(详见文档),示例如下:

// var config =  new TapConfig.Builder()
// .ClientID("your_client_id") // 必须,开发者中心对应 Client ID
// .ClientToken("your_client_token") // 必须,开发者中心对应 Client Token
// .ServerURL("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API
// .RegionType(RegionType.CN) // 非必须,CN 表示中国大陆,IO 表示其他国家或地区
// .ConfigBuilder();
// TapBootstrap.Init(config);
  • 必要个人信息
必要个人信息使用目的场景收集频次
设备名称用于本地数据加密处理保障用户数据在本地的安全性仅在首次使用时收集一次
  • 可选个人信息

8. 内建账户

  • 功能介绍

TDS 内建账户服务致力于帮助开发者快速低成本地构建一个安全可靠的玩家登录系统。支持玩家采用包括游客账号、第三方账号(TapTap、Apple、微信、QQ 等)在内的多种账号来登录你的游戏。

  • 合规调用时机

通过 [TapTap] 或其他登录方式使用内建账户初始化时调用。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除掉统一初始化入口(详见文档),示例如下:

// var config =  new TapConfig.Builder()
// .ClientID("your_client_id") // 必须,开发者中心对应 Client ID
// .ClientToken("your_client_token") // 必须,开发者中心对应 Client Token
// .ServerURL("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API
// .RegionType(RegionType.CN) // 非必须,CN 表示中国大陆,IO 表示其他国家或地区
// .ConfigBuilder();
// TapBootstrap.Init(config);
  • 必要个人信息
必要个人信息使用目的场景收集频次
系统版本为帮助用户保障登录功能的正常生效和安全稳定用户发起登录用户登录授权时获取一次
设备型号为帮助用户保障登录功能的正常生效和安全稳定用户发起登录用户登录授权时获取一次
设备 CPU 信息为帮助用户保障登录功能的正常生效和安全稳定用户发起登录用户登录授权时获取一次
网络类型为帮助用户保障登录功能的正常生效和安全稳定用户发起登录每次应用冷启动获取一次
Android ID为帮助用户保障登录功能的正常生效和安全稳定用户发起登录初始化及用户发起授权时获取一次
设备内存信息为帮助用户保障登录功能的正常生效和安全稳定用户发起登录每次应用冷启动获取一次
  • 可选个人信息

9. 客服

  • 功能介绍

Tap 游戏客服能帮助游戏运营团队更快更好地解决玩家遇到的问题。

  • 合规调用时机

玩家打开客服页面时。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
获取网络状态用于检测当前网络连接是否有效用户首次使用该功能时会申请权限
读取存储权限用于反馈工单时添加本地图片、视频附件上传附件时申请
  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:

// TapSupport.Init("https://please-replace-with-your-customized.domain.com", "产品 ID");
  • 必要个人信息
必要个人信息使用目的场景收集频次
系统版本为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示客服页面时获取一次
设备版本为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示客服页面时获取一次
网络类型为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示客服页面时获取一次
手机样式为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示客服页面时获取一次
设备内存为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化展示客服页面时获取一次
Android ID为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化初始化及用户发起授权时获取一次
  • 可选个人信息

10. 数据分析

  • 功能介绍

提供了一套专注于解决游戏项目数据需求的分析工具,通过简单的接入就可以获得丰富实用的数据看板和广告追踪能力,让数据分析和广告投放变得轻松易操作,同时也可以用于分析人群画像,帮助开发者更好地理解用户。

  • 合规调用时机

玩家触发开发者配置的事件时进行初始化和调用。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
获取网络状态用于检测当前网络连接是否有效用户首次使用该功能时会申请权限
读写存储权限(可选)用于存储用户标识开发者根据业务需求选择是否需要申请
读取电话状态(可选)获取移动端设备网络类型开发者根据业务需求选择是否需要申请

开发者如果不需要上述可选权限,无需额外处理,SDK 不会主动申请;当开发者需要时,需在工程中添加如下:

//检查及申请权限
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[] { Manifest.permission.READ_PHONE_STATE }, READ_PHONE_STATE_PERMISSION_CODE);
}

// 接收授权结果回调
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == READ_PHONE_STATE_PERMISSION_CODE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 用户授权
} else {
// 用户拒绝授权
}
}
}

  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:

// TapDB.Init("clientId", "taptap", "gameVersion", true);

或者移除掉统一初始化入口(详见文档),示例如下:

// var config =  new TapConfig.Builder()
// .ClientID("your_client_id") // 必须,开发者中心对应 Client ID
// .ClientToken("your_client_token") // 必须,开发者中心对应 Client Token
// .ServerURL("https://your_server_url") // 必须,开发者中心 > 你的游戏 > 游戏服务 > 基本信息 > 域名配置 > API
// .RegionType(RegionType.CN) // 非必须,CN 表示中国大陆,IO 表示其他国家或地区
// .ConfigBuilder();
// TapBootstrap.Init(config);
  • 必要个人信息
必要个人信息使用目的场景收集频次
WiFi 信息供开发者进行数据分析,是业务需求之一开发者可根据该信息来进行数据分析应用冷启动获取一次
系统版本供开发者进行数据分析,是业务需求之一开发者可根据该信息来进行数据分析应用冷启动获取一次
设备版本供开发者进行数据分析,是业务需求之一开发者可根据该信息来进行数据分析应用冷启动获取一次
手机样式供开发者进行数据分析,是业务需求之一开发者可根据该信息来进行数据分析应用冷启动获取一次
传感器列表供开发者进行数据分析,是业务需求之一开发者可根据该信息来进行数据分析应用冷启动获取一次
Android ID供开发者进行数据分析,是业务需求之一开发者可根据该信息来进行数据分析应用冷启动获取一次
  • 可选个人信息

11. 诊断接入

  • 功能介绍

TapTap 开发者服务提供的应用安全模块,主要是通过 APK 加固和反作弊检测等能力,来为游戏应用程序的安全进行保驾护航。

  • 合规调用时机

玩家触发开发者配置的事件上报时机时。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
  • 关闭功能的配置方式
  • 默认启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:
// TapDB.EnableThemis(false);

  • 必要个人信息
必要个人信息使用目的场景收集频次
系统版本为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
设备型号为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
网络类型为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
设备内存信息为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
设备 CPU 信息为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
手机样式为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
设备名称为了确保设备系统兼容、定位解决问题遇到服务故障时针对性进行排查和优化每次应用冷启动获取一次
  • 可选个人信息

12. 数据存储

  • 功能介绍

数据存储服务能够高效存取海量级 JSON 对象、二进制文件、地理位置等数据。其内置的行级 ACL 权限控制,以及通用的用户及角色管理体系,可以帮助你快速实现安全而灵活的数据访问。

  • 合规调用时机

用户登录或注册账号时。

  • 需要权限
权限使用目的权限申请时机
网络权限用于访问网络数据用户首次使用该功能时会申请权限
  • 关闭功能的配置方式

默认不启动,由开发者按需调用。若要关闭,可在应用中移除该功能相应的初始化代码(详见文档),示例如下:

// LeanCloud.initialize(this, "your-client-id", "your-client-token", "https://your_server_url");

13. 其他服务

以下功能为云服务,都是基础的技术服务,不收集用户个人信息:

  • 云存档
  • 排行榜
  • 云引擎

四、向最终用户披露 TapSDK 条款

在接入TapSDK 后,开发者应当向最终用户披露 TapSDK 条款,具体建议如下:

  1. 在用户同意游戏的《隐私协议》后再进行 TapSDK 初始化
  2. 在隐私协议中披露接入 TapSDK 的情况

    名称:TapSDK

    公司名称:易玩(上海)网络科技有限公司

    收集个人信息类型:网络状态、WiFi 信息、设备版本、系统版本、设备型号、操作系统等

    使用目的:TapTap 登录、合规认证、正版验证等

    隐私政策链接:TapSDK 隐私政策 | TapTap 开发者文档

示例:TapTap 在隐私协议中披露使用的第三方 SDK 清单。

privacy_overviewsdk_info_list

  1. 在申请具体权限前,向用户说明需要权限的具体原因(需提供同意和拒绝按钮 ),当用户同意后,再请求系统权限。示例: request_first request_second