UlinkAD聚合广告SDK隐私合规指南

2025年6月30日更新版

根据《个人信息保护法》、《数据安全法》、《网络安全法》等法律法规和监管部门规章要求,App 开发运营者(以下简称为“开发者”)在提供网络产品服务时应尊重和保护最终用户的个人信息,不得违法违规收集使用个人信息,保证和承诺就个人信息处理行为获得最终用户的授权同意,遵循最小必要原则,且应当采取有效的技术措施和组织措施确保个人信息安全。

为帮助使用 UlinkAD SDK 的开发者(以下简称“您”)在符合个人信息保护相关法律法规、政策及标准的规定下合规接入、使用 UlinkAD SDK 更好地落实用户个人信息保护相关要求, UlinkAD(以下简称"我们")特制定《UlinkAD SDK 合规使用指南》,便于您使用过程中符合相应的合规要求。请您在接入、使用前,充分阅读和了解本UlinkAD SDK隐私合规指南的内容。

在您使用 UlinkAD 广告 SDK 提供的服务过程中,我们将根据合法、正当、必要的原则收集信息。

UlinkAD SDK 产品功能介绍:

  1. 基本功能:基本业务功能为在开发者应用中进行广告投放活动,包括广告展示、监测、归因及投放效果分析与优化;
  2. 扩展功能:提供个性化推荐服务;

1、接入/升级至满足监管要求的最新SDK版本

我们高度重视 SDK 的功能优化、个人信息安全和保护,将适时升级迭代 SDK 版本以提升产品的安全性和稳定性,确保符合相关法律法规及、监管及标准的最新合规要求。强烈建议您升级使用最新版本 SDK,以便保障您正常使用 SDK 最新功能、避免因您更新不及时产生的不利影响(例如App被通报或下架等)。

2、UlinkAD聚合广告SDK隐私政策披露要求与示例

标准要求:

《SDK合规使用说明》应提供 App 向最终用户披露 SDK 隐私政策条款的示例,包括 SDK名称、公司名称、处理个人信息种类及目的、采集方式、隐私政策链接等内容。

接入指南:

开发者在App集成UlinkAD 广告 SDK 后,UlinkAD 广告 SDK 的正常运行会收集必要的最终用户信息用于广告投放及效果优化。 请开发者根据集成 UlinkAD 广告 SDK 的实际情况,在您 App 的隐私政策中,对 UlinkAD 广告 SDK 以及集成的三方 SDK 的名称、公司名称、处理个人信息种类及目的、采集方式、隐私政策链接等内容进行披露。

App的《隐私政策》您也可以参考市场监管总局发布的《信息安全技术个人信息安全规范》文件中的隐私政策模板,进行实现。您可以通过访问 UlinkAD聚合广告SDK隐私政策 进一步了解 UlinkAD 的隐私政策,以及了解 UlinkAD 对个人信息的处理和保护策略。

我们建议您:

  1. 先确认您实际所接入的 UlinkAD 广告 SDK 以及集成的三方SDK版本和功能模块;
  2. 根据上述版本和模块,从隐私政策中确定与 UlinkAD 广告 SDK 以及集成的三方 SDK 交互的数据内容;
  3. 在您 App 的隐私政策中,以文字或列表的方式向公众披露 UlinkAD 广告 SDK 以及集成的三方 SDK 的相关信息。

披露示例(仅供参考,请以实际合作情况为准,更全的信息您可以通过访问 UlinkAD聚合广告SDK隐私政策 进一步了解。)

我们的产品集成第三方的 SDK,我们会向集成的 SDK 共享您的信息,具体信息内容、使用目的等详见【下表】

SDK名称 公司名称 处理个人信息种类及目的 个人信息类型及字段 个人信息类型及字段
UlinkAD 广告 SDK 北京嗨量科技有限公司 设备信息 (IMEI/Android ID/IDFA/OAID, MAC地址, 硬件序列号): 用于唯一标识设备,保障服务安全、进行广告监测和归因。
应用列表信息: 用于个性化广告推荐及优化投放效果。
网络信息 (IP地址, WiFi信息): 用于判断网络环境,优化广告加载速度。
1. 第一部分:必要信息 (1)设备信息 【Android+iOS+HarmonyOS】设备品牌、型号、软件系统版本、屏幕密度、屏幕分辨率、设备语言、设备时区、sim卡信息(mcc&mnc)、限制广告追踪(LAT)状态、CPU信息、可用存储空间大小等基础信息 【Android】Android ID、OAID 【Android+iOS+HarmonyOS】IP地址 【iOS】:手机系统重启时间、磁盘总空间、系统总内存空间、IDFV 【HarmonyOS】ODID (2)网络信息 【Android+iOS+HarmonyOS】运营商信息、Wi-Fi状态、网络信号强度 【Android+iOS+HarmonyOS】IP地址 (3) 应用信息 【Android+HarmonyOS】UlinkAD 合作方的应用包名、运行中的进程信息、版本号、应用前后台状态、SDK 版本号 (4)位置信息 【Android,iOS和HarmonyOS】IP地址 (5) 广告信息 【Android+iOS+HarmonyOS】对广告的展示、点击及转化等交互数据 (6)性能数据 【Android+iOS+HarmonyOS】如崩溃数据、性能数据 2. 第二部分:可选信息 (1)设备信息 【Android+iOS+HarmonyOS】CPU类型、设备电池电量信息、设备音量及字体大小、是否为模拟器、是否usb链接、是否开发者模式、系统启动程序版本号、硬件名称,主机地址,系统开发代号、系统源码控制版本号、设备显示的版本号、设备基板名称【Android+HarmonyOS】:国际移动设备识别码(IMEI)、MAC地址、国际移动用户识别码(IMSI)【Android】硬件序列号serialNumber、ICCID、AdvertisingID,具体字段因软硬件版本不同而存在差异) 【HarmonyOS】:OAID (2) 应用信息 【Android】全量软件列表信息 (3) 传感器信息 【Android】线性加速度传感器 【iOS+HarmonyOS】加速度传感器、陀螺仪传感器 (4) 位置信息 【Android+HarmonyOS】 粗略位置信息(WLAN接入点(SSID)) 1. 基于用户设备信息调整广告投放策略2. 基于用户设备信息分析广告行为(如广告加载、展示、点击等)3.反作弊

3、SDK初始化及业务调用时间

标准要求:

开发者应当在 App 登录注册页面及 App 首次运行时,通过弹窗、文本链接及附件等简洁明显且易于访问的方式,以清晰易懂的语言,逐条列举告知用户个人信息处理规则,由用户在充分知情的前提下,做出自愿明确的意思明示。

接入指南:

  1. UlinkAD SDK 的初始化请在用户同意 App 隐私政策/声明后进行,并在隐私政策中披露接入 UlinkAD SDK 的情况。如果用户不同意《隐私政策》授权,则不能调用初始化接口。
  2. 请不要在用户同意隐私政策之前动态申请涉及用户信息的敏感设备权限。
  3. 请不要在用户同意隐私政策之前私自采集和上报用户信息(尤其注意Android_IDMAC地址硬件序列号应用安装列表等用户信息)。
  4. 请勿在 App 处于未激活状态时(例如 App 在后台运行)请求 UlinkAD 相关服务。

4、SDK可选个人信息的配置说明

对于 UlinkAD聚合广告SDK 可选收集的个⼈信息的控制,开发者可以通过 SDK 可选个⼈信息的配置示例说明进⾏配置。如您关闭可选信息的采集,将会影响您使用 UlinkAD聚合广告SDK 部分功能的实现和效果,但不会影响广告基本功能的实现,请开发者结合业务实际需要进行合理配置。
可选个人信息类型及字段 使用目的 使用场景 配置方案
获取IMEI IMSI MEID MAC ANDROID、硬件序列号serialNumber、ICCID、AdvertisingID(仅GMS服务) 广告投放、广告归因、广告监测、反作弊 在进行广告投放和广告投放效果分析时使用 初始化关闭方式代码: //建议开发者在此处调用初始化的方法,且此方法只需要一次调用 ULINKInitConfig config = new ULINKInitConfig.Builder() .setAppId(com.hb.demo.ULINKConstants.ULINK_APPID) .openDebugLog(true) .setULINKPrivacyConfig(new ULINKPrivacyConfig() { //如需设置隐私政策相关内容,重写相应的方法进行设置 //如需关闭获取设备信息方法例如IMEI IMSI MEID MAC ANDROID等信息 重写方法 return false 默认为true开启 @Override public boolean isCanUsePhoneState() { return true; } }) .build(); ULINKSDK.init(this, config, new IULINKInitCallback() { @Override public void successCallback() { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK successCallback"); } @Override public void failCallback(ULINKError uLinkError) { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK failCallback uLinkError : " + uLinkError.toString()); } });
获取软件列表信息 广告投放、反作弊 在进行广告投放和广告投放效果分析时使用 初始化 关闭方式代码: //建议开发者在此处调用初始化的方法,且此方法只需要一次调用 ULINKInitConfig config = new ULINKInitConfig.Builder() .setAppId(com.hb.demo.ULINKConstants.ULINK_APPID) .openDebugLog(true) .setULINKPrivacyConfig(new ULINKPrivacyConfig() { //如需设置隐私政策相关内容,重写相应的方法进行设置 //如需关闭获取软件列表信息 重新方法 return false @Override public boolean isCanUseAppList() { return false; } }) .build(); ULINKSDK.init(this, config, new IULINKInitCallback() { @Override public void successCallback() { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK successCallback"); } @Override public void failCallback(ULINKError uLinkError) { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK failCallback uLinkError : " + uLinkError.toString()); } });
获取位置信息 精确位置信息、粗略位置信息(WiFi列表、WLAN接入点(如SSID,BSSID)、基站) 用于判定模糊位置信息,用于广告推荐 在进行广告投放时使用 初始化关闭方式代码: //建议开发者在此处调用初始化的方法,且此方法只需要一次调用 ULINKInitConfig config = new ULINKInitConfig.Builder() .setAppId(com.hb.demo.ULINKConstants.ULINK_APPID) .openDebugLog(true) .setULINKPrivacyConfig(new ULINKPrivacyConfig() { //如需设置隐私政策相关内容,重写相应的方法进行设置 //如需关闭获取设备位置信息方法 重写方法 return false @Override public boolean isCanUseLocation() { return false; } }) .build(); ULINKSDK.init(this, config, new IULINKInitCallback() { @Override public void successCallback() { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK successCallback"); } @Override public void failCallback(ULINKError uLinkError) { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK failCallback uLinkError : " + uLinkError.toString()); } });
获取传感器信息 线性加速度传感器、磁场传感器、旋转矢量传感器 广告投放、反作弊 在进行广告投放和广告投放效果分析时使用 初始化关闭方式代码: //建议开发者在此处调用初始化的方法,且此方法只需要一次调用 ULINKInitConfig config = new ULINKInitConfig.Builder() .setAppId(com.hb.demo.ULINKConstants.ULINK_APPID) .openDebugLog(true) .setULINKPrivacyConfig(new ULINKPrivacyConfig() { //如需设置隐私政策相关内容,重写相应的方法进行设置 //如需关闭传感器使用 重写方法 return false 默认为true开启 @Override public boolean isCanUseSensor() { return false; } }) .build(); ULINKSDK.init(this, config, new IULINKInitCallback() { @Override public void successCallback() { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK successCallback"); } @Override public void failCallback(ULINKError uLinkError) { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK failCallback uLinkError : " + uLinkError.toString()); } });

5、UlinkAD聚合广告SDK系统权限申请说明

您也应当详细向用户说明 UlinkAD SDK 所需的系统权限与各业务功能间的关系,并说明权限申请时机。
对于 UlinkAD SDK 可选申请的系统权限,您可以参考相关如下表格的内容,详细了解相关权限与各业务功能的关系及其申请时机,因相关权限的不申请将会对其对应的功能造成影响,您可以结合业务实际需要进行合理配置

安卓操作系统应用权限列表:

权限 功能 用途和目的 调用时机
READ_PHONE_STATE 读取电话状态(设备 IMSI/IMEI 号) 【可选】读取手机设备标识等信息 进行广告投放及广告监测归因、反作弊 开发者在调用需要该权限的SDK功能时进行调用。例如当开发者需要根据设备信息情况使用调整广告变现策略及数据分析服务时进行时申请。
WRITE_EXTERNAL_STORAGE 写入外置存储器 【可选】允许应用程序写入外部存储 应用下载广告投放及广告素材存储 开发者在调用需要该权限的SDK功能时进行调用。例如当开发者投放其他广告平台的广告时,其他广告平台进行广告投放时进行申请。
READ_EXTERNAL_STORAGE 读取外置存储器 【可选】允许应用程序读取外部存储 应用下载广告投放及广告素材存储 开发者在调用需要该权限的SDK功能时进行调用。例如当开发者投放其他广告平台的广告时,其他广告平台进行广告投放时进行申请。
INTERNET 手机网络请求 【可选】手机网络 用于线上广告服务请求 开发者在调用需要该权限的SDK功能时进行调用。例如当开发者需要根据手机网络情况使用调整广告变现策略及数据分析服务时进行时申请。
REQUEST_INSTALL_PACKAGES 应用安装操作 【可选】进行应用安装操作 用于广告投放的应用安装 开发者在调用需要该权限的SDK功能时进行调用。例如当开发者投放其他广告平台的广告,其他广告平台需要依据应用软件列表实现广告投放时进行申请。
ACCESS_WIFI_STATE 获取WIFI网络变化 【可选】监听WIFI网络变化 用于线上广告服务策略更新 开发者在调用需要该权限的SDK功能时进行调用。例如当开发者需要根据WIFI网络变化情况使用调整广告变现策略及数据分析服务时进行时申请。
ACCESS_NETWORK_STATE 获取网络变化 【可选】监听网络变化 用于线上广告服务策略更新 开发者在调用需要该权限的SDK功能时进行调用。例如当开发者需要根据手机网络变化情况使用调整广告变现策略及数据分析服务时进行时申请。

6、广告关闭

标准要求:

App在向用户展示广告和信息弹窗,或者用户在浏览广告和信息弹窗过程中,都需要存在“关闭 X”或者“跳过”按钮,并且点击后立即关闭广告展示。

接入指南:

开发者使用自渲染方式展示广告时,请务必保证具备广告关闭选项且保证一键关闭。

7、应用下载广告合规要求

标准要求:

APP在用户终端弹出广告或者其他与终端软件功能无关的信息窗口的,应当以显著的方式向用户提供关闭或者退出窗口的功能标识,不得欺骗误导强迫下载、安装、使用 APP。

接入指南:

开发者需升级到当前最新版 UlinkAD SDK,在客户端通过 UlinkAD 提供的广告配置接口进行应用下载广告的合规配置,包含应用下载六要素展示。

8、自渲染广告需要明确广告来源标识

标准要求:

开发者在使用广告自渲染功能时,应当清晰标明 UlinkAD 广告来源,保证广告内容和广告样式合法合规,不得自行更改、调整 UlinkAD 提供的广告内容和广告样式,包括但不限于重叠展示广告、更改广告元素、调整点击热区范围、配置虚假按钮等可能影响用户体验、诱导用户点击的所有违规行为,否则由此带来的后果,由开发者自己负责。

9、扩展功能

功能 描述 关闭方式
扩展功能 个性化推荐

注:默认情况是全部开启广告个性化推荐,如果手动设置关闭之后则全部广告平台关闭个性化推荐。关闭后广告平台的收益会受到不同程度的影响, 请谨慎设置 媒体如需支持控制个性化广告推荐,请调用如下方法(请在用户点击关闭个性化广告推荐时才调用此方法,否则影响广告收益

两种方式: 1.初始化关闭个性化开关代码 : //建议开发者在此处调用初始化的方法,且此方法只需要一次调用 ULINKInitConfig config = new ULINKInitConfig.Builder() .setAppId(com.hb.demo.ULINKConstants.ULINK_APPID) .openDebugLog(true) .setULINKPrivacyConfig(new ULINKPrivacyConfig() { //如需设置隐私政策相关内容,重写相应的方法进行设置 //如需关闭个性化推荐重写方法 return false @Override public boolean isSupportPersonalized() { return false; } }) .build(); ULINKSDK.init(this, config, new IULINKInitCallback() { @Override public void successCallback() { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK successCallback"); } @Override public void failCallback(ULINKError uLinkError) { LogUtil.i(ULINKConstants.ULINK_LOG_SDK, "initULINKSDK failCallback uLinkError : " + uLinkError.toString()); } }); 2.APP 运行中关闭个性化开关代码: ULINKSDK.setPersonalRecommend(false);//关闭个性化广告推荐