MSDK 开发者合规指引
生效日期:2022-06-09
更新日期:2024-10-14
更新内容:增加网页麦克风权限说明;Pix 版本依赖库说明
尊敬的开发者:
非常感谢您选择在您所开发的产品中集成 MSDK(以下简称“本产品”)的产品和服务!
根据监管部门要求,开发者在终端用户同意《隐私政策》前不得处理个人信息,并且当产品中使用第三方SDK时应告知该第三方SDK收集终端用户个人信息的目的、范围、方式等详情并取得终端用户同意。我们(本指引中具体指“深圳市腾讯计算机系统有限公司”,以下简称“腾讯”或“我们”)面向腾讯内部产品(APP)开发项目组(以下简称“项目组”)以及腾讯以外的指定合作伙伴(以下简称“第三方开发者”。“项目组”和“第三方开发者”统称为“您”或“开发者”。)提供服务,请您务必按照以下步骤做好合规自查,以满足各项法规的要求。特别地,当您作为第三方开发者将MSDK集成至您所开发的产品中时,您还需满足相应的信息披露及用户同意要求,请参照本指引第2条在您的产品中完成相应配置。
1. 保持最新版本
请前往 MSDK(V3 版本) 或 GCloud 官网(V5 版本) 查看和下载最新版本 SDK
2. 《隐私政策》中添加相关说明
请您确保您开发或运营的应用有符合监管要求的《隐私政策》文本。如您是第三方开发者,请您同时务必明确告知终端用户您的产品中使用了腾讯所提供的 MSDK 服务。建议第三方开发者在《隐私政策》对应的章节、列表中添加《第三方信息共享清单》或《第三方SDK目录》,并在其中加入关于 MSDK 的说明,推荐条款如下:
SDK 名称:MSDK
第三方名称:深圳市腾讯计算机系统有限公司
SDK 用途:在移动端设备进行账号登录、好友分享、数据上报等功能(请您根据实际接入使用情况填写)
SDK 个人信息类型:(请您根据实际接入使用情况填写)
官网链接(根据版本进行选择):
l V3: https://wiki.ssl.msdk.qq.com/index.html
l V5:https://docs.msdk.qq.com/v5/zh-CN
隐私政策链接:https://img.ssl.msdk.qq.com/privacy/privacy.html
说明:您在使用我们 SDK 产品时,所请求使用的权限、收集的设备信息会因为接入组件情况有所不同。您应对实际收集的个人信息向用户进行说明。具体收集使用个人信息情况详见 《MSDK个人信息保护规则》。
3. 为实现SDK产品功能所需的权限
为实现SDK产品的相应功能所必须,我们会通过开发者的应用申请所需权限。
功能模块 |
操作系统(Android/iOS) |
权限名称 |
使用目的 |
是否可选 |
MSDK |
Android |
1. android.permission.INTERNET(网络) 2. android.permission.WRITE_EXTERNAL_STORAGE(外部存储) 3. android.permission.READ_EXTERNAL_STORAGE 4. android.permission.ACCESS_COARSE_LOCATION(粗略位置) 5. android.permission.ACCESS_FINE_LOCATION(精确位置) 6. android.permission.CAMERA(相机) 7. android.permission.RECORD_AUDIO(麦克风) 8. android.permission.ACCESS_NETWORK_STATE 9. android.permission.CHANGE_NETWORK_STATE |
1. 网络通讯 2. 向外部存储写入数据,用于程序信息的持久化,日志文件、分享图片等存储; 无该权限,将影响外部存储图片/视频的分享功能 3. 从外部存储读取数据,用于程序信息的持久化,日志文件、分享图片等存储; 无该权限,将影响外部存储图片/视频的分享功能 4. 向游戏提供 LBS 位置信息服务,游戏通过接口可以获取经纬度,附近玩家的信息,让玩家可以和自己周边的玩家进行互动。如果游戏不需要 LBS 功能,可不配置此权限。 5. 向游戏提供 LBS 位置信息服务,游戏通过接口可以获取经纬度,附近玩家的信息,让玩家可以和自己周边的玩家进行互动。如果游戏不需要 LBS 功能,可不配置此权限。 6. 可以在网页中访问相机,如果游戏不需要该功能,可不配置此权限。 7. 可以在网页中访问麦克风,如果游戏不需要该功能,可不配置此权限。 8. 用于内置浏览器 (WebView) 获取网络状态以感知网络变化; 9. 用于内置浏览器 (WebView) 的运营商免密登录认证(运营商取号协议) |
1. 必选 2. 可选 3. 可选 4. 可选 5. 可选 6. 可选 7. 可选 8. 必选 9. 必选 |
iOS |
1. 网络权限 2. 位置信息 3. 相机权限 4. 用户跟踪(NSUserTrackingUsageDescription) |
1. 网络连接 2. 向游戏提供 LBS 位置信息服务,游戏通过接口可以获取经纬度,附近玩家的信息,让玩家可以和自己周边的玩家进行互动。如果游戏不需要 LBS 功能,可不配置此权限。 3. 可以在网页中访问相机,如果游戏不需要该功能,可不配置此权限。 4. 获取iOS14.5以上用户IDFA,用于数据分析及广告买量统计 |
1. 必选 2. 可选 3. 可选 4. 可选 |
|
|
Android |
1. android.permission.INTERNET(网络) 2. android.permission.ACCESS_NETWORK_STATE(网络状态) |
1. 网络通信 2. 感知网络变化 |
1. 必选 2. 必选 |
iOS |
1. 网络权限 |
1. 网络通信 |
1. 必选 |
|
Bugly |
Android |
1. android.permission.INTERNET(网络) 2. android.permission.ACCESS_NETWORK_STATE(网络状态) |
1. 查看网络状态,用于数据上报,实现开发者查看崩溃信息的目的 2. 查看网络状态,用于数据上报,实现开发者查看崩溃信息的目的 |
1. 必选 2. 必选 |
iOS |
1. 网络权限 |
1. 查看网络状态,用于数据上报,实现开发者查看崩溃信息的目的 |
1. 必选 |
|
QIMEI |
Android |
1. android.permission.INTERNET(网络) 2. android.permission.ACCESS_NETWORK_STATE(网络状态) |
1. 网络通信 2. 感知网络变化 |
1. 否 2. 否 |
iOS |
1. 网络权限 |
1. 网络通信 |
1. 否 |
|
灯塔 |
Android |
1. android.permission.INTERNET(网络) 2. android.permission.ACCESS_NETWORK_STATE(灯塔协议已刷新这俩权限) 3. android.permission.ACCESS_WIFI_STATE |
1. 数据上报 2. 判断是否连接网络,用于调整数据上报策略 3. 调整数据上报策略 |
1. 可选 2. 可选 3. 可选 |
iOS |
1. 网络权限 |
1. 数据上报 |
1. 可选 |
|
TDM |
Android |
1. android.permission.INTERNET(网络) 2. android.permission.ACCESS_NETWORK_STATE(网络状态) |
1. 网络连接 2. 感知网络变化 |
1. 必选 2. 必选 |
iOS |
1. 用户跟踪(NSUserTrackingUsageDescription) |
1. 获取iOS14.5以上用户IDFA,用于数据分析及广告买量统计 |
1. 可选 |
|
腾讯 TBS 浏览器(Android) |
Android |
1. 网络权限 2. 存储权限 3. 剪切板 4. 地理位置 5. 传感器权限 6. 摄像头权限 7. 已安装的支持文件打开的应用列表 8. 麦克风权限 |
1. 通过SDK下载内核需要;以及用户打开网页体验网络加载优化需要 2. 内核运行必要异常日志需要读写文件 3. 用户主动操作网页或文件内容复制粘贴,需要访问剪切板 4. 用户主动打开网页,且网页自身需要定位位置 5. 用户主动打开网页,支持网页中的获取传感器数据,支持网页传感器功能 6. 用户主动打开网页需要摄像头功能时,支持网页中的图像捕捉功能 7. 在内核加载失败的情况下打开文件,或者打开TBS不支持格式的文件,会弹框给用户选择使用其他应用打开该文件 8. 用户主动打开网页需要录音功能时,支持网页中录音功能 |
1. 必选 2. 必选 3. 可选 4. 可选 5. 可选 6. 可选 7. 可选(不建议使用) 8. 可选 |
腾讯云推送(TPNS) |
Android |
1. 应用包名.permission.XGPUSH_RECEIVE(自定义) 2. android.permission.INTERNET 3. android.permission.ACCESS_WIFI_STATE 4. android.permission.ACCESS_NETWORK_STATE 5. android.permission.SCHEDULE_EXACT_ALARM 6. android.permission.WAKE_LOCK 7. android.permission.POST_NOTIFICATIONS 8. com.huawei.android.launcher.permission.CHANGE_BADGE(华为自定义权限) 9. com.vivo.notification.permission.BADGE_ICON(Vivo 自定义权限) 10. android.permission.VIBRATE 11. android.permission.RECEIVE_USER_PRESENT 12. android.permission.WRITE_EXTERNAL_STORAGE 13. android.permission.RESTART_PACKAGES 14. android.permission.GET_TASKS |
1. 使用TPNS推送的权限 2. 允许程序访问网络连接,可能产生 GPRS 流量 3. 允许程序获取当前 Wi-Fi 接入的状态以及 WLAN 热点的信息 4. 允许程序获取网络信息状态 5. 允许定时广播 6. 允许程序在手机屏幕关闭后,后台进程仍然运行 7. 允许应用弹通知 8. 使用华为设备角标功能权限 9. 使用vivo设备角标功能权限 10. 允许应用震动 11. 允许应用可以接收点亮屏幕或解锁广播 12. 允许程序写入外部存储 13. 允许程序结束任务 14. 允许程序获取任务信息 |
1. 必选 2. 必选 3. 必选 4. 必选 5. 必须 6. 必选 7. 必选 8. 可选 9. 可选 10. 可选 11. 可选 12. 可选 13. 可选 14. 可选 |
iOS/Mac OS |
1. APNS (推送) 2. 网络权限 |
1. 允许程序使用APNS服务 2. 允许程序连接 |
1. 必选 2. 必选 |
|
PixUI |
Android |
1. android.permission.INTERNET 2. 剪贴板 |
1. 网络通信 2. PixUI 内部输入框粘贴功能 |
1. 必选 2. 必选 |
iOS |
1. android.permission.INTERNET 2. 剪贴板 |
1. 网络通信 2. PixUI 内部输入框粘贴功能 |
1. 必选 2. 必选 |
4. 隐私合规处理流程
4.1. 整体流程
为满足合规要求,参考以下整体流程进行合规处理 :
4.2. MSDK V3
4.2.1. 可选功能接入说明
MSDK 的功能可以实现插件化、开关等形式实现功能选择,开发者可以根据自身需需要进行选择,以满足业务需求。
功能模块 |
是否必选 |
关闭方式 |
功能描述 |
|
是 |
无使用需求不调用相关接口即可 |
使用 QQ 登录游戏、好友分享、空间、小程序分享等社交场景 |
微信 |
是 |
无使用需求不调用相关接口即可 |
使用微信登录游戏、好友分享、朋友圈、小程序分享等社交场景 |
Bugly |
否 |
通过配置关闭: CLOSE_BUGLY_REPORT=true 插件化,可选接入,可通过删除插件关闭 |
应用发生异常或崩溃时上报异常数据 |
灯塔 |
否 |
插件化,可选接入,可通过删除插件关闭 |
应用数据上报 |
QIMEI |
否 |
插件化,可选接入,可通过删除插件关闭 |
应用数据上报 |
HTTP 域名解析(HttpDns) |
否 |
通过配置关闭: CLOSE_HTTPDNS = true |
域名解析功能 |
腾讯 TBS 浏览器(Android) |
否 |
插件化,可选接入,可通过删除插件关闭 |
游戏内网页功能 |
腾讯云推送(TPNS) |
否 |
插件化,可选接入,可通过删除插件关闭 |
消息推送功能 |
应用宝省流量更新(Android) |
否 |
插件化,可选接入,可通过删除插件关闭 |
省流量更新功能 |
位置功能组件(MSDKLBS) |
否 |
插件化,可选接入,可通过删除插件关闭 |
获取用户位置及附近的好友 |
苹果登录 |
否 |
无使用需求不调用相关接口即可 |
苹果账号登录游戏时 |
苹果广告标识符 (IDFA) |
否 |
插件化,可选接入,可通过删除插件关闭 |
影响广告归因(投放效果) |
4.2.2. 应用启动
请您确保此刻不立即初始化 MSDK,需要在用户同意隐私政策的之后进行初始化操作。
4.2.3. 展示隐私政策及权限说明
请您务必确保终端用户首次启动 App 时,通过弹窗的方式向用户披露和展示隐私政策并征询用户有效同意。
l 隐私政策披露及处理方式
请您在《隐私政策》中披露通过MSDK所采集的个人信息种类及使用目的。如果您是第三方开发者,请您务必明确告知终端用户您的应用使用了腾讯提供的 MSDK 服务。建议第三方开发者在《隐私政策》对应的章节、列表中添加《第三方信息共享清单》或《第三方SDK目录》,并在其中加入关于 MSDK 的说明。具体可以参考 2.《隐私政策》中添加相关说明 。
l 权限披露及处理方式
请您根据自身实际接入和使用情况,依照《MSDK个人信息保护规则》进行相应的权限说明披露,并征得用户同意。请注意申请频次,避免频繁申请造成用户打扰。
MSDK 提供了 Policy 组件(Android),可以帮助业务实现隐私协议弹窗的一般流程,具体请参考:https://wiki.ssl.msdk.qq.com/Android/config.html#Android_DataCompliance
4.2.4. 数据合规接口调用
MSDK 新版本已经支持个人信息开关以及设置,您可自由控制合规采集的时机。请您在征得用户有效同意后且在调用 MSDK 初始化接口之前,按以下步骤依次进行:
l 【必须】开启设备信息采集,用于开启 MSDK 内置隐私合规相关逻辑。不开启将导致内部逻辑无法完全正常进行。
l 【可选】设备信息独立开关设置,可独立控制 MSDK 内部特定字段的采集情况。
l 【可选】设备信息设置,开发者可以自行传入特定字段,以替代 MSDK 内部数据采集。
同时,您需注意,您的产品应仅在满足业务功能所需要的最小必要范围内采集个人信息。对于超出最小必要范围的个人信息,应关闭相应的采集开关或接口,以避免超范围采集个人信息。
4.2.4.1. 开启设备信息采集
请您在征得用户有效同意后,调用开启设备信息采集开启设备信息采集。MSDK 支持通过函数调用的方式来开启 MSDK 设备信息采集。
接口调用
MSDK 提供了 Java 接口以满足开发者需要,用于设置允许 MSDK 开启或关闭设备信息采集。
// Java 位于 MSDKSensitive 类中,true 表示开启采集;false 表示不允许采集
public static void setCouldCollectSensitiveInfo(boolean couldCollect);
以下代码片段展示了用户同意隐私政策后,开启 MSDK 设备信息采集的功能:
void onPolicyConfirmedByUser() {
...
MSDKSensitive.setCouldCollectSensitiveInfo(true);
...
}
4.2.4.2. 【可选】设备信息独立开关
您有两种方式详细控制 MSDK 采集的特定字段:
1、 配置开关,可以通过配置文件进行开关控制
2、 接口调用,在完成开启设备信息采集(setCouldCollectSensitiveInfo = true)之后调用配置接口接口。
目前支持字段情况如下:
字段 |
字段说明 |
控制方式 |
备注 |
AndroidID |
Android ID |
配置,接口 |
https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID |
Apn |
网络类型 |
配置,接口 |
网络类型 |
QImei |
QIMEI SDK 内置功能 |
配置,接口 |
QIMEI SDK 内置功能 |
QImei36 |
QIMEI SDK 内置功能 |
配置,接口 |
QIMEI SDK 内置功能 |
l 配置开关
在 msdkconfig.ini 中,增加或修改配置项 MSDK_DENIED_COLLECT_LIST,该配置项为不允许采集的特定字段列表。
例如不采集 Apn ,参考配置示例如下:
// 配置项位于 msdkconfig.ini,默认不允许采集的字段列表为空,多个字段使用英文逗号连接,如:
MSDK_DENIED_COLLECT_LIST = Apn
l 接口调用
开发者也可以通过代码调用的方式来进行特定字段的采集开启或关闭,目前仅支持 Android Java 层接口,定义如下:
// 参数示例: {"AndroidID":true,"Apn":true,"QImei":true,"QImei36":true}
// 说明:true 表示允许采集;false 表示不允许采集;
// Java 位于 MSDKSensitive 类中
public static void setCollectSensitiveInfo(String jsonInfo);
例如不采集 Apn 和 AndroidID,参考配置示例如下:
void onShowPolicyResult() {
...
String jsonInfo = "{\"Apn\":false,\"AndroidID\":false}";
MSDKSensitive.setCollectSensitiveInfo(jsonInfo);
...
}
优先级说明:
一般地,在未进行配置设置或代码调用的情况下,MSDK 将按默认值(开启)进行内部逻辑处理;
特别地,在开发者做了配置设置且进行了代码调用的情况下,MSDK 将按按照 代码接口 > 配置文件 > 默认值(开启)的优先级顺序来决定是否开启采集特定字段。
4.2.4.3. 【可选】设备信息设置
MSDK 新版本已经支持设备信息的设置功能。如您自身已经采集了对应数据,则可以通过 2. 设备信息独立开关 关闭 MSDK 内置设备信息采集,并传入设备信息,MSDK 则会以传入的设备信息进行功能逻辑处理。
目前支持 AndroidID,WiFiMacAddress,Model,Oaid,Imsi,Cid 特定字段。
字段 |
字段说明 |
备注 |
AndroidID |
Android ID |
https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID |
WiFiMacAddress |
Wifi Mac 地址 |
Wifi Mac 地址 |
Model |
设备型号 |
https://developer.android.com/reference/android/os/Build#MODEL |
Oaid |
OAID信息 |
OAID信息 |
Imsi |
IMSI |
International Mobile Subscriber Identity(国际移动用户识别码) |
Cid |
基站编号 |
Cell Identity(基站编号) |
l 接口调用
开发者可以通过以下代码传递您采集的信息供 MSDK 使用:
// 参数示例:
// {"AndroidID":"xxx", "WiFiMacAddress":"xxx", "Model":"xxx", "Oaid":"xxx", "Imsi":"xxx", "Cid":"xxx"}
// Java 位于 MSDKSensitive.java 类中
public static void setSensitiveInfo(String jsonInfo);
以下代码片段演示了如何传递您采集的 AndroidID 给 MSDK 使用:
void onShowPolicyResult() {
String jsonInfo ="{\"AndroidID\":\"xxxxxxxxxx\"}";
MSDKSensitive.setSensitiveInfo(jsonInfo);
}
4.2.5. 初始化 MSDK
请您务必确保终端用户首次启动 App 时,通过弹窗等明显方式提示用户阅读您 App 的《隐私政策》并获得终端用户有效同意之后再初始化 MSDK。
如果没有初始化 MSDK,将无法使用 MSDK 提供的服务。MSDK V3 初始化接口如下:
// Android
WGPlatform.Initialized(this, baseInfo);
// iOS
WGPlatform::GetInstance();
// Unity C#
WGPlatform.Instance.Init();
至此,MSDK V3 版本的合规流程已介绍完毕。
4.3. MSDK V5
4.3.1. 可选功能接入说明
MSDK 的功能可以实现插件化、开关等形式实现功能选择,开发者可以根据自身需需要进行选择,以满足业务需求。
功能 |
是否必选 |
关闭方式 |
功能描述 |
TDM |
是 |
必选接入 |
应用数据上报 |
|
否 |
插件化,可选接入,可通过删除插件关闭 |
使用 QQ 登录游戏、好友分享、空间、小程序分享等社交场景 |
微信 |
否 |
插件化,可选接入,可通过删除插件关闭 |
使用微信登录游戏、好友分享、朋友圈、小程序分享等社交场景 |
Bugly |
否 |
插件化,可选接入,可通过删除插件关闭 |
应用发生异常或崩溃时上报异常数据 |
灯塔 |
否 |
插件化,可选接入,可通过删除插件关闭 |
应用数据上报 |
QIMEI |
否 |
通过配置关闭: CLOSE_BEACON_REPORT=true MSDK_DENIED_COLLECT_LIST=QImei,QImei36 |
应用数据上报 |
HTTP 域名解析(HttpDns) |
否 |
通过配置关闭: MSDK_HTTPDNS_ENABLE = 0 |
域名解析功能 |
腾讯 TBS 浏览器(Android) |
否 |
插件化,可选接入,可通过删除插件关闭 |
游戏内网页功能 |
腾讯云推送(TPNS) |
否 |
插件化,可选接入,可通过删除插件关闭 |
消息推送功能 |
位置功能组件(MSDKLBS) |
否 |
插件化,可选接入,可通过删除插件关闭 |
获取用户位置及附近的好友 |
苹果登录(MSDKApple) |
否 |
插件化,可选接入,可通过删除插件关闭 |
苹果账号登录游戏时 |
苹果广告标识符 (IDFA) |
否 |
插件化,可选接入,可通过删除插件关闭 |
影响广告归因(投放效果) |
4.3.2. PIX 版本库依赖说明
MSDKPIX 版本依赖 PixUI 基础框架库,具体情况如下:
平台 |
库名称 |
是否必选 |
Android |
crosCurl |
必选 |
PluginCrosCurl |
必选 |
|
GPixUI |
必选 |
|
PxEmbedded |
必选 |
|
PxKit3 |
必选 |
|
iOS |
crosCurl |
必选 |
PluginCrosCurl |
必选 |
|
GPixUI |
必选 |
|
PxEmbedded |
必选 |
|
PxKit3 |
必选 |
4.3.3. 应用启动
请您确保此刻不立即初始化 MSDK,需要在用户同意隐私政策的之后进行初始化操作。
4.3.4. 展示隐私政策及权限说明
请您务必确保终端用户首次启动 App 时,通过弹窗的方式向用户披露和展示隐私政策并征询用户有效同意。
l 隐私政策披露及处理方式
请您在《隐私政策》中披露通过MSDK所采集的个人信息种类及使用目的。如果您是第三方开发者,请您务必明确告知终端用户您的应用使用了腾讯提供的 MSDK 服务。建议第三方开发者在《隐私政策》对应的章节、列表中添加《第三方信息共享清单》或《第三方SDK目录》,并在其中加入关于 MSDK 的说明。具体可以参考 2.《隐私政策》中添加相关说明 。
l 权限披露及处理方式
请您根据自身实际接入和使用情况,依照《MSDK个人信息保护规则》进行相应的权限说明披露,并征得用户同意。请注意申请频次,避免频繁申请造成用户打扰。
在此阶段,MSDK 提供了 Policy 组件(Android),可以帮助业务实现隐私协议弹窗的一般流程,具体请参考:https://docs.msdk.qq.com/v5/zh-CN/Access/Android.html
4.3.5. 数据合规接口调用
MSDK 新版本已经支持个人信息开关以及设置,业务可自由控制合规采集的时机。请您在征得用户有效同意后且在调用 MSDK 初始化接口之前,按以下步骤依次进行:
l 【可选】设备信息场景设置,可以控制 MSDK 功能场景下的数据采集。
l 【必须】开启设备信息采集,用于开启 MSDK 内置隐私合规相关逻辑。不开启将导致内部逻辑无法完全正常进行。
l 【可选】设备信息独立开关设置,可独立控制 MSDK 内部特定字段的采集情况。
l 【可选】设备信息设置,开发者可以自行传入特定字段,以替代 MSDK 内部数据采集。
同时,您需注意,您的产品应仅在满足业务功能所需要的最小必要范围内采集个人信息。对于超出最小必要范围的个人信息,应关闭相应的采集开关或接口,以避免超范围采集个人信息。
4.3.5.1. 【可选】设备信息场景配置
MSDK 新版本对上报的设备信息进行了场景区分。如果您接入的是 MSDKV5 版本,您还可以根据自身需求在 MSDKConfig.ini 配置文件中,通过以下开关配置控制具体场景下的设备信息字段上报:
场景 |
开关配置 |
说明 |
基础功能 |
MSDK_DEVICE_INFO_CONFIG |
默认打开,设置为0表示关闭,即在基础功能场景下不上报设备信息字段 |
公告 |
MSDK_DEVICE_INFO_NOTICE |
默认打开,设置为0表示关闭,即在公告场景下不上报设备信息字段 |
其他 |
MSDK_DEVICE_INFO |
默认打开,设置为0表示关闭,即在除基础信息和公告的其他场景下不上报设备信息字段 |
4.3.5.2. 开启设备信息采集
请您在征得用户有效同意后,调用开启设备信息采集开启设备信息采集。MSDK 支持通过函数调用的方式来开启 MSDK 设备信息采集。
l 接口调用
MSDK 提供了以下接口以满足开发者需要,用于设置允许 MSDK 开启设备信息采集。
// Java 位于 MSDKSensitive.java 类中
public static void setCouldCollectSensitiveInfo(boolean couldCollect);
// C++
static void GCloud::MSDK::MSDKSensitive::SetCouldCollectSensitiveInfo(bool couldCollect);
// C#
// 位于 MSDKSensitive.cs 类中
public static void SetCouldCollectSensitiveInfo (bool couldCollect);
以下代码片段展示了在 Android 场景下,用户同意隐私政策后,开启 MSDK 设备信息采集的功能:
void onPolicyConfirmedByUser() {
...
MSDKSensitive.setCouldCollectSensitiveInfo(true);
...
}
4.3.5.3. 【可选】设备信息独立开关
您有两种方式详细控制 MSDK 采集的特定字段:
1. 配置开关,可以通过配置文件进行开关控制
2. 接口调用,在完成开启设备信息采集(setCouldCollectSensitiveInfo = true)之后调用配置接口接口。
目前支持字段情况如下:
字段 |
字段说明 |
关闭方式 |
备注 |
AndroidID |
Android ID |
配置,接口 |
https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID |
Apn |
网络类型 |
配置,接口 |
网络类型 |
l 配置开关
在 MSDKConfig.ini 中,增加或修改配置项 MSDK_DENIED_COLLECT_LIST,该配置项为不允许采集的特定字段列表。
例如不采集 Apn 和 AndroidID,参考配置示例如下:
// 配置项位于 msdkconfig.ini,默认不允许采集的字段列表为空,多个字段使用英文逗号连接,如:
MSDK_DENIED_COLLECT_LIST = Apn,AndroidID
l 接口调用
开发者也可以通过代码调用的方式来进行特定字段的采集开启或关闭,目前支持以下接口:
// 参数示例:{"AndroidID":true,"Apn":true} 说明:true 表示允许采集;false 表示不允许采集;
// Java 位于 MSDKSensitive.java 类中
public static void setCollectSensitiveInfo(String jsonInfo);
// C++
static void GCloud::MSDK::MSDKSensitive::SetCollectSensitiveInfo(const String &jsonInfo);
// C#
// 位于 MSDKSensitive.cs 类中
public static void SetCollectSensitiveInfo (string jsonInfo);
以下代码展示了 Android 场景下不采集 Apn 的调用示例:
void onShowPolicyResult() {
...
String jsonInfo = "{\"Apn\":false}";
MSDKSensitive.setCollectSensitiveInfo(jsonInfo);
...
}
优先级说明:
一般地,在未进行配置设置或代码调用的情况下,MSDK 将按默认值(开启)进行内部逻辑处理;
特别地,在开发者做了配置设置且进行了代码调用的情况下,MSDK 将按按照 代码接口 > 配置文件 > 默认值(开启)的优先级顺序来决定是否开启采集特定字段。
其他字段
MSDK V5 其他字段通过 TDM 获取,开发者如需关闭,请联系 TDM 咨询;
4.3.5.4. 【可选】设备信息设置
MSDK 新版本已经支持设备信息的设置功能。如您自身已经采集了对应数据,则可以通过 2. 设备信息独立开关 关闭 MSDK 内置设备信息采集,并传入设备信息,MSDK 则会以传入的设备信息进行功能逻辑处理。
目前支持 AndroidID,WiFiMacAddress,Model,Oaid,Imsi,Cid 特定字段。
字段 |
字段说明 |
备注 |
AndroidID |
Android ID |
https://developer.android.com/reference/android/provider/Settings.Secure#ANDROID_ID |
WiFiMacAddress |
Wifi Mac 地址 |
Wifi Mac 地址 |
Model |
设备型号 |
https://developer.android.com/reference/android/os/Build#MODEL |
Oaid |
OAID信息 |
OAID信息 |
Imsi |
IMSI |
International Mobile Subscriber Identity(国际移动用户识别码) |
Cid |
基站编号 |
Cell Identity(基站编号) |
l 接口调用
// 参数示例:
// {"AndroidID":"xxx", "WiFiMacAddress":"xxx", "Model":"xxx", "Oaid":"xxx", "Imsi":"xxx", "Cid":"xxx"}
// Java 位于 MSDKSensitive.java 类中
public static void setSensitiveInfo(String jsonInfo);
// C++
static void GCloud::MSDK::MSDKSensitive::SetSensitiveInfo(const String &jsonInfo);
// C#
// 位于 MSDKSensitive.cs 类中
public static void SetSensitiveInfo (string jsonInfo);
以下代码片段演示了 Android 场景下,如何传递您采集的 AndroidID 给 MSDK 使用:
void onShowPolicyResult() {
String jsonInfo ="{\"AndroidID\":\"xxxxxxxxxx\"}";
MSDKSensitive.setSensitiveInfo(jsonInfo);
}
4.3.6. 初始化 MSDK
请您务必确保终端用户首次启动 App 时,通过弹窗等明显方式提示用户阅读您 App 的《隐私政策》并获得终端用户有效同意之后再初始化 MSDK。
如果没有初始化 MSDK,将无法使用 MSDK 提供的服务。如果您接入了 GCloudSDK,请参考 GCloud 文档完成 MSDK 初始化。
以下是 MSDK V5 初始化接口:
// Android
MSDKPlatform.initialize(this);
// iOS
GCloud::MSDK::MSDK::GetInstance()->Initialize(NULL);
// Unity
MSDK.Init();
// UE4
// 如果您接入了 GCloudSDK,请参考 GCloud 文档完成 MSDK 初始化
至此,MSDK V5 版本的合规流程已介绍完毕。
5. 常见问题及解答
5.1. 如何处理新版本中 TPNS 相关的厂商推送通道(华为、小米、VIVO、魅族)的 SDK ?
当前华为、小米、VIVO、魅族等厂商推送通道的 SDK 为腾讯外部组件,为降低合规风险,MSDK 默认不再开启相关功能。业务如果有相关需求,可以参考 MSDK 开发文档进行插件接入,但需要自行评估合规相关风险。
注意:如后续腾讯游戏与厂商推送通道达成隐私合规相关协议,MSDK 会继续提供对应功能,请关注 MSDK 后续版本信息。
5.2. 无法使用手Q OpenSDK 的各项功能。日志中会报错“用户未授权,暂时无法使用 QQ 登录及分享等功能”
手Q OpenSDK 3.5.7版本开始更新了权限相关功能,接入方在调用 setCouldCollectSensitiveInfo 授权前,无法使用手Q OpenSDK 的各项功能。如您需要使用手Q 相关功能,您必须先通过调用 MSDKSensitive.setCouldCollectSensitiveInfo(true) 接口授权手Q开启设备信息采集,以支持相应能力。
5.3. 关于灯塔数据统计和算法效果的说明
灯塔的部分功能受 AndroidID 和 Model 的影响,我们建议尽量保留这两个字段。如果需要删除,请确保已经充分了解其影响。
另外,
如果您接入的是 MSDKV3 版本,您需要了解:
l MSDKV3 版本使用灯塔(Beacon)SDK 使用 QIMEI SDK 功能;
l 如果您想关闭灯塔(Beacon)SDK 和 QIMEI SDK 的功能,您可以在 msdkconfig.ini 配置文件中添加以下配置:
CLOSE_BEACON_REPORT=true
l 如果您想删除灯塔组件,删除灯塔组件的同时,需要在 msdkconfig.ini 文件中添加以下配置以关闭灯塔组件和 QImei、QImei36 等字段的采集:
CLOSE_BEACON_REPORT=true
MSDK_DENIED_COLLECT_LIST=QImei,QImei36
如果您接入的是 MSDKV5 版本,您需要了解:
l MSDKV5 版本通过 TDM 自带的 QIMEI SDK 实现 QIMEI SDK 的功能;
l MSDKV5 版本提供了 MSDKBeacon 插件为业务提供数据上报能力,如果您想删除 灯塔 SDK 和 QIMEI SDK,可以将 MSDKBeacon 插件整个删除即可。
5.4. 减少 App 信息采集总次数
如果 App 已经采集了这些字段,想要通过传入的方式减少 App 采集总次数,则可以在 设备信息独立开关 章节关闭对应字段的采集,可以参考 设备信息设置 章节,并通过 MSDKSensitive.setSensitiveInfo(jsonInfo) 接口,将您采集到的 AndroidID 和 Model 信息传递给 MSDK 内部使用。
感谢您阅读 MSDK 开发者合规指引,并欢迎您给我们提出建议!如果您有任何疑问,请随时与我们联系!