文章目录
- 引言
- 一、为什么需要用户隐私协议?
- 二、Uniapp 中实现用户隐私协议的步骤
- 2.1 编写隐私协议内容
- 2.2 在 Uniapp 中集成隐私协议
- 2.3 DCloud数据采集说明
- 2.4 配置方式
- 3.1 Apple App Store
- 3.2 Google Play Store
- 四、常见问题与解决方案
- 4.1 隐私协议内容不完整
- 4.2 用户不同意隐私协议
- 4.3 隐私协议更新
- 五、总结
引言
在移动应用开发中,用户隐私协议是不可或缺的一部分。无论是 iOS
还是 Android
平台,上架应用商店时都需要提供用户隐私协议。本文将详细介绍如何在 Uniapp
开发的 App
端实现用户隐私协议,并确保其符合各大应用商店的上架要求。
一、为什么需要用户隐私协议?
用户隐私协议是开发者向用户说明如何收集、使用、存储和保护用户个人信息的法律文件。随着 GDPR
(通用数据保护条例)和 CCPA
(加州消费者隐私法案)等隐私保护法规的实施,用户隐私协议的重要性愈发凸显。应用商店如 Apple App Store
和 Google Play Store
都要求应用在上架时提供隐私协议链接。
二、Uniapp 中实现用户隐私协议的步骤
HBuilderX2.6.3+
版本开始支持配置隐私政策提示框 HBuilderX3.1.10+
版本优化template
模式策略,解决应用市场检测到弹出隐私政策提示框之前读取 mac
地址和应用列表的问题 HBuilderX3.2.1+
版本开始支持 androidPrivacy.json
文件配置隐私政策提示框,真机运行时也可生效 HBuilderX3.2.5+
版本隐私政策提示框内容中的链接支持本地 html
页面地址。
📢注意:目前设置
custom
模式策略,并不能完全避免在弹出隐私提示框之前,读取设备信息(如mac
地址、应用列表等)的情况,主要原因是自定义模式隐私提示框并不能阻塞应用的生命周期,使用到一些三方SDK
(如X5 Webview内核、UniPush等)在应用启动时会执行初始化操作,三方SDK
这是可能会读取设备信息。碰到此问题的开发者请先使用template
模式解决,我们后续会提供新的自定义隐私提示框样式解决方案。
注意: 请使用 HBuilderX3.2.15+
版本打包,并使用 template
配置隐私弹窗否则无法正常上架应用市场 uni
小程序 SDK
暂时不支持 uniapp
自己配置隐私弹窗,需要宿主自行实现隐私弹窗。
2.1 编写隐私协议内容
首先,你需要编写一份详细的隐私协议。隐私协议通常包括以下内容:
-
信息收集:说明应用会收集哪些用户信息(如设备信息、位置信息、用户行为数据等)。
-
信息使用:解释收集的信息将如何被使用(如改善应用体验、个性化推荐等)。
-
信息存储:说明用户信息的存储方式和地点。
-
信息保护:描述如何保护用户信息,防止数据泄露。
-
用户权利:告知用户他们有哪些权利(如访问、修改、删除个人信息等)。
-
第三方服务:如果应用集成了第三方服务(如广告 SDK、支付 SDK 等),需说明这些服务如何收集和使用用户信息。
你可以参考一些知名应用的隐私协议,或者请法律专业人士协助编写。
2.2 在 Uniapp 中集成隐私协议
为了兼顾隐私政策提示框的易用性和灵活性,解决弹出隐私政策提示框之前可能弹出系统授权框的问题。Android
平台提供了以下隐私政策提示配置策略:
- template 使用原生提供的隐私政策模板提示框,应用启动时在splash界面弹出。
- 优点:在系统授权提示框之前显示,用户点击确认后才会进入应用
- 缺点:只能配置提示文本及链接地址,无法自定义提示框样式
- none 不处理隐私政策 不提交到应用市场时使用
2.3 DCloud数据采集说明
为了持续优化应用及提供统计报表功能,在运行过程中会采集应用启动时间、异常错误日志等数据,其中包含设备唯一识别码。
DCloud通过了国家信息安全等级保护三级,证书编号:11010813802-20001,保障相关数据的安全性 DCloud并非大数据公司,采集的数据是为开发者提供统计服务和产品持续优化,不包含个人隐私信息
请在《隐私政策》中必告知用户您的应用基于DCloud uni-app(5+ App/Wap2App)开发,增加如下参考条款
我们的产品基于DCloud uni-app(5+ App/Wap2App)开发,应用运行期间需要收集您的设备唯一识别码(IMEI/android ID/DEVICE_ID/IDFA、SIM 卡 IMSI 信息、OAID)以提供统计分析服务,并通过应用启动数据及异常错误日志分析改进性能和用户体验,为用户提供更好的服务。详情内容请访问《DCloud用户服务条款》。(DCloud用户服务条款超链至:https://ask.dcloud.net.cn/protocol.html)
2.4 配置方式
HBuilderX3.2.1
及以上版本配置方式
从 HBuilderX3.2.1+
版本开始新增 androidPrivacy.json
文件配置隐私政策提示框,支持真机运行查看效果,在 androidPrivacy.json
中也支持配置部分样式(如背景颜色、标题颜色、按钮颜色等)。 打开项目的 manifest.json
文件,切换到 “App启动界面配置”
,在 “Android启动界面样式”
中勾选 “使用原生隐私政策提示框”
注意:
androidPrivacy.json
不要添加注释,会影响隐私政策提示框的显示!!!
勾选后会在项目中自动添加 androidPrivacy.json
文件,可以双击打开自定义配置以下内容:
{"version": "1","prompt": "template","title": "服务协议和隐私政策","message": " 请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了更好的向你提供服务,我们需要收集你的设备标识、操作日志等信息用于分析、优化应用性能。<br/> 你可阅读<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>了解详细信息。如果你同意,请点击下面按钮开始接受我们的服务。","buttonAccept": "同意并接受","buttonRefuse": "暂不同意","hrefLoader": "system","backToExit":"false","second": {"title": "确认提示","message": " 进入应用前,你需先同意<a href=\"\">《服务协议》</a>和<a href=\"\">《隐私政策》</a>,否则将退出应用。","buttonAccept": "同意并继续","buttonRefuse": "退出应用"},"disagreeMode":{"support": false,"loadNativePlugins": false,"visitorEntry": false,"showAlways": false},"styles": {"backgroundColor": "#00FF00","borderRadius":"5px","title": {"color": "#ff00ff"},"buttonAccept": {"color": "#ffff00"},"buttonRefuse": {"color": "#00ffff"},"buttonVisitor": {"color": "#00ffff"}}
}
version 隐私政策版本号,如果应用升级后希望重新弹出隐私政策提示框,则需要设置新版本
prompt 是否使用原生隐私政策提示框,值为“template”表示使用,“none”表示不使用
title 隐私政策提示框标题文本内容
message 隐私政策提示框正文内容,支持富文本richtext类型字符串,支持a/font/br等节点,点击a链接会调用内置页面打开其href属性中链接地址。 注意:务必配置此提示内容,参考上面示例内容并修改《服务协议》和《隐私政策》链接地址
buttonAccept 模板提示框上接受按钮的文本,默认值为“同意”
buttonRefuse 模板提示框上拒绝按钮的文本,默认不显示此按钮
hrefLoader HX 3.4.13之后版本新增,system 使用系统webview 打开隐私协议链接,默认使用uni-app内置web组件 隐私政策提示框中的链接地址加载方式,可取值:system-表示使用系统浏览器打开(注意此模式下不支持项目内路径);default-表示使用应用内置webview页面打开。默认值为default。 注意:可能有些检测机构认为webview会读取隐私信息,这时可以配置为system来解决此问题
backToExit HX 3.6.20之后版本新增。用来设置弹出隐私弹窗时,用户点击系统回退按钮 是否能退出应用。默认为false 不退出。部分应用市场不接受此行为,则开发者可以设置为true,允许用户点击回退按钮时,退出应用。
disagreeMode 用户不同意隐私协议的响应配置 具体配置及说明查看https://uniapp.dcloud.io/app-disagreemode
support 用户拒绝隐私协议后,是否直接进入游客模式,默认false关闭
loadNativePlugins 表示在disagreeMode模式是否加载uni原生插件,true表示加载;false表示不加载(此时调用uni.requireNativePlugin加载插件扩展Module返回undefined,扩展组件Component也无法使用)。默认值为true。
visitorEntry HBuilderX 3.6.7 版本后支持,默认false,当设置为true,隐私协议弹窗 会出现 游客模式 按钮
showAlways HBuilderX 3.6.10 版本后支持,默认false 标记用户拒绝协议后,下次启动是否继续弹出,默认false,拒绝后不弹出
second 配置二次确认提示框显示内容,message属性值不为空时弹出二次确认提示框
title 二次确认提示框上的标题
message 二次确认提示框上的内容,支持富文本richtext类型字符串
buttonAccept 二次确认提示框上接受按钮的文本
buttonRefuse 二次确认提示框上拒绝按钮的文本
styles 配置隐私政策提示框样式
backgroundColor 提示框背景颜色,#RRGGBB格式字符串
borderRadius 提示框背景圆角半径,单位为px(逻辑像素)
title 提示框标题样式,其下仅支持color属性配置文本颜色,值为#RRGGBB格式字符串
buttonAccept 接受按钮样式,其下仅支持color属性配置文本颜色,值为#RRGGBB格式字符串
buttonRefuse 拒绝按钮样式,其下仅支持color属性配置文本颜色,值为#RRGGBB格式字符串
buttonVisitor HX 3.6.7 版本后支持,游客模式按钮样式,其下仅支持color属性配置文本颜色,值为#RRGGBB格式字符串
uni-app
项目可以使用 uni
原生插件能支持更多自定义隐私政策提示框样式,可参考:https://ext.dcloud.net.cn/plugin?id=5581
3.1 Apple App Store
在上架 Apple App Store
时,你需要在 App Store Connect
中提供隐私协议的链接。Apple
要求隐私协议必须清晰、易懂,并且涵盖所有信息收集和使用的情况。
3.2 Google Play Store
Google Play Store
也要求开发者提供隐私协议链接。Google
特别强调隐私协议中需要说明应用是否收集用户的敏感信息(如位置、联系人等),并且需要遵守 GDPR
等隐私保护法规。
四、常见问题与解决方案
4.1 隐私协议内容不完整
问题:隐私协议内容不完整,导致应用被应用商店拒绝。
解决方案:确保隐私协议涵盖所有信息收集和使用的情况,特别是涉及第三方 SDK
时,需详细说明其隐私政策。
4.2 用户不同意隐私协议
问题:用户不同意隐私协议,导致无法使用应用。
解决方案:在用户不同意隐私协议时,可以提示用户必须同意才能继续使用应用,或者提供退出应用的选项。
4.3 隐私协议更新
问题:隐私协议更新后,如何通知用户并重新获取同意。
解决方案:在隐私协议更新时,可以通过弹窗或通知的方式告知用户,并要求用户重新同意。
五、总结
在 Uniapp
开发 App
端时,实现用户隐私协议是上架应用商店的必要步骤。通过合理设计隐私协议的展示方式和内容,不仅可以满足应用商店的要求,还能增强用户对应用的信任感。希望本文能帮助你在 Uniapp
开发中顺利实现用户隐私协议,并成功上架应用商店。