Uniapp 开发 App 端上架用户隐私协议实现指南

文章目录

  • 引言
  • 一、为什么需要用户隐私协议?
  • 二、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 StoreGoogle 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 开发中顺利实现用户隐私协议,并成功上架应用商店。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33949.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】 —— 笔试刷题day_5

刷题day_5 一、游游的you 题目链接&#xff1a;游游的you 题目解析 题目要求&#xff1a; 输入a&#xff0c;b&#xff0c;c表示y、o、u三个字母的个数&#xff1b; 将这些字母连成字符串&#xff0c;并且这里you三个字母相邻获得2分&#xff0c;两个o字母相邻获得1分。 让我…

78. Harmonyos NEXT 懒加载数据源实现解析:BasicDataSource与CommonLazyDataSourceModel详解

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; Harmonyos NEXT 懒加载数据源实现解析&#xff1a;BasicDataSource与CommonLazyDataSourceModel详解 文章目录 Harmonyos NEXT 懒加载数据源实现解…

如何打包数据库mysql数据,并上传到虚拟机上进行部署?

1.连接数据库&#xff0c;使得我们能看到数据库信息&#xff0c;才能进行打包上传 2. 3. 导出结果如下&#xff0c;是xml文件 4.可以查询每个xml文件的属性&#xff0c;确保有大小&#xff0c;这样才是真实导出 5跟着黑马&#xff0c;新建文件夹&#xff0c;并且把对应的东西放…

Springboot+mabatis增删改查,设置不可重复字段

今天又学会了一个操作&#xff0c;我们数据库中&#xff0c;可能要求一个字段名字不可以重复&#xff0c;我们就进行这样的操作&#xff01;设计表&#xff0c;然后点击索引&#xff0c;选择字段&#xff0c;加入索引类型和索引方法&#xff0c;然后ctrlS保存!即可 如果一旦还…

C# NX二次开发:矩形阵列和线性阵列等多种方法讲解

大家好&#xff0c;今天讲一些关于阵列相关的UFUN函数。 UF_MODL_create_linear_iset (view source)&#xff1a;这个函数为创建矩形阵列。 intmethodInputMethod: 0 General 1 Simple 2 Identicalchar *number_in_xInputNumber in XC direction.char *distance_xInputSpac…

嵌入式硬件: GPIO与二极管基础知识详解

1. 前言 在嵌入式系统和硬件开发中&#xff0c;GPIO&#xff08;通用输入输出&#xff09;是至关重要的控制方式&#xff0c;而二极管作为基础电子元件&#xff0c;广泛应用于信号整流、保护电路等。本文将从基础原理出发&#xff0c;深入解析GPIO的输入输出模式&#xff0c;包…

CTF--Web安全--SQL注入之报错注入

CTF–Web安全–SQL注入之报错注入 一、报错注入的概念 用户使用数据库查询语句&#xff0c;向数据库发送错误指令&#xff0c;数据库返回报错信息&#xff0c;报错信息中参杂着我们想要获取的隐私数据。通常在我们在页面显示中找不到回显位的时候&#xff0c;使用报错注入。 二…

matlab 模糊pid实现温度控制

1、内容简介 matlab162-模糊pid实现温度控制 可以交流、咨询、答疑 2、内容说明 略基于PID电加热炉温度控制系统设计 摘要 电加热炉随着科学技术的发展和工业生产水平的提高&#xff0c;已经在冶金、化工、 机械等各类工业控制中得到了广泛应用&#xff0c;并且在国民经济中占…

RabbitMq C++客户端的使用

1.RabbitMq介绍 RabbitMQ 是一款开源的消息队列中间件&#xff0c;基于 AMQP&#xff08;高级消息队列协议&#xff09;实现&#xff0c;支持多种编程语言和平台。以下是其核心特点和介绍&#xff1a; 核心特点 多语言支持 提供 Java、Python、C#、Go、JavaScript 等语言的客…

星越L_备胎更换/千斤顶使用讲解

目录 1.车辆停靠在坚实平坦的路面上。 2.打开危险警示灯、 3.设立三角指示牌 4.取出备胎及随车工具 5.使用螺栓扳手对每个螺母进行松动 6使用千斤顶抬升 7、其他 轮胎漏气或爆胎的情况,需要使用千斤顶更换备胎 1.车辆停靠在坚实平坦的路面上。 2.打开危险警示灯、

【Python 数据结构 15.哈希表】

目录 一、哈希表的基本概念 1.哈希表的概念 2.键值对的概念 3.哈希函数的概念 4.哈希冲突的概念 5.常用的哈希函数 Ⅰ、直接定址法 Ⅱ、平方取中法 Ⅲ、折叠法 Ⅳ、除留余数法 Ⅴ、位与法 6.哈希冲突的解决方案 Ⅰ、开放定址法 Ⅱ、链地址法 7.哈希表的初始化 8.哈希表的元素插…

软件测试之测试分类

1. 为什么要对软件测试进行分类 软件测试是软件⽣命周期中的⼀个重要环节&#xff0c;具有较⾼的复杂性&#xff0c;对于软件测试&#xff0c;可以从不同的⻆度 加以分类&#xff0c;使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理测试 的分类⽅…

Devops CI/CD

Devops CI/CD DevOps 中的 CI/CD&#xff1a;持续集成与持续部署的深度解析一、CI/CD 基本概念&#xff08;一&#xff09;持续集成&#xff08;二&#xff09;持续部署 二、CI/CD 实施步骤&#xff08;一&#xff09;版本控制&#xff08;二&#xff09;自动化构建&#xff08…

leetcode105为什么可以root.left可以截取到前序遍历二叉树的(0,index),而不是(1,index+1)

这里以105前序和中序遍历构造二叉树为例&#xff0c;106同理 原因在于preoder.shift()会改变原数组&#xff0c;已经把preoder的第一个队头元素已经排除出去了&#xff01;&#xff01;&#xff01; 306题中的截取后续遍历中用pop&#xff08;&#xff09;同理

数据结构---堆栈和列

一、堆栈 1.栈堆&#xff1a;具有一定操作约束的线性表&#xff1b;&#xff08;只在一端做插入删除&#xff09; 2.栈的顺序存储结构&#xff1a; 由一个一维数组和一个记录栈顶元素位置的变量组成。定义方式如下&#xff1a; 3.入栈操作&#xff1a; 注意&#xff1a;&…

golang快速上手基础语法

变量 第一种&#xff0c;指定变量类型&#xff0c;声明后若不赋值&#xff0c;使用默认值0 package mainimport "fmt"func main() {var a int //第一种&#xff0c;指定变量类型&#xff0c;声明后若不赋值&#xff0c;使用默认值0。fmt.Printf(" a %d\n"…

【idea代码ai插件】利用接入硅基流动的deepseekR1的api在idea里实现问答,辅助写代码

注册硅基流动账号 https://siliconflow.cn/zh-cn/ 然后新建api密钥&#xff0c;这里的api密钥可以点击复制&#xff0c;等会输入要用 可以看到现在新注册是有额度的&#xff0c;你们应该是14元 模型广场这里可以调用deepseek的v3和r1&#xff0c;注意因为是蹭&#xff0c;赠…

NO.42十六届蓝桥杯备战|数据结构|算法|时间复杂度|空间复杂度|STL(C++)

数据结构 什么是数据结构 在计算机科学中&#xff0c;数据结构是⼀种数据组织、管理和存储的格式。它是相互之间存在⼀种或多种特定关系的数据元素的集合。 说点通俗易懂的话&#xff0c;数据结构就是数据的组织形式&#xff0c;研究的就是把数据按照何种形式存储在计算机中 …

【CSS3】化神篇

目录 平面转换平移旋转改变旋转原点多重转换缩放倾斜 渐变线性渐变径向渐变 空间转换平移视距旋转立体呈现缩放 动画使现步骤animation 复合属性animation 属性拆分逐帧动画多组动画 平面转换 作用&#xff1a;为元素添加动态效果&#xff0c;一般与过渡配合使用 概念&#x…

Keepalived高可用架构实战:从安装配置到高级应用详解

一.架构 用户空间核心组件&#xff1a; vrrp stack&#xff1a;VIP 消息通信checkers&#xff1a;监测 Real Serversystem call&#xff1a;实现 vrrp 协议状态转换时调用相关本地功能SMTP&#xff1a;邮件组件IPVS wrapper&#xff1a;生成 IPVS 规则Netlink Reflector&…