DCloud_App_Array
DCloud_App_Array
  • 发布:2020-02-13 23:11
  • 更新:2022-08-11 09:27
  • 阅读:19321

iOS平台隐私与政策提示框实现注意问题

分类:HTML5+

根据工业和信息化部关于开展APP侵害用户权益专项整治要求,App提交到应用市场必须满足以下条件:

  • 应用启动运行时需弹出隐私政策协议,说明应用采集用户数据
    这里将详细介绍如何配置弹出“隐私协议和政策”提示框
  • 应用不能强制要求用户授予权限,即不能“不给权限不让用”

iOS系统因为系统授权管理比较完善,调用访问涉及到个人隐私信息的接口都会弹出系统授权提示框,并且在提示框上描述应用使用此权限的用途。
因此没有提供Android平台这样的提示框配置方法,需要开发者在应用中自己实现隐私政策提示框。

数据采集说明

为了持续优化应用及提供统计报表功能,应用在运行过程中会采集以下数据:

  • 应用启动时会采集应用启动时间信息用于优化启动速度,不包含个人隐私信息
  • 应用启动后会采集统计数据用于提供uni统计服务,iOS平台如果用户开启了IDFA则采集数据会包含IDFA信息。uni统计配置方法参考uni-app的manifest.json配置项列表
  • 应用异常时会采集错误日志信息,用于优化改进产品

DCloud通过了国家信息安全等级保护三级,证书编号:11010813802-20001,保障相关数据的安全性
DCloud并非大数据公司,采集的数据是为开发者提供统计服务和产品持续优化,不包含个人隐私相关信息

隐私政策提示框实现

iOS平台没有提供隐私政策模板提示框,所以需要开发者在应用中自己实现隐私政策提示框。

  • uni-app项目
    建议使用nvue页面来实现,渲染速度更快,用于体验更好。
  • 5+ APP(WAP2APP)项目
    简单提示框可以使用系统确认对话框plus.nativeUI.confirm,缺点是无法自定义样式,无法使用链接;
    如果希望自定义隐私政策提示框,可以在Webview中使用html渲染,如在首页使用div渲染、或打开独立的Webview窗口。
    用户点击同意隐私政策时推荐调用plus.runtime.agreePrivacy保存状态,应用启动时调用plus.runtime.isAgreePrivacy获取用户是否已经同意。

系统授权提示框处理

如果应用第一次启动时会弹出系统授权提示框,可以参考以下说明处理。

使用无线数据

提交应用启动时间信息等需要用到网络,所以应用第一次启动时可能会弹出“使用无线数据”系统授权框

目前AppStore上大部分应用在显示隐私政策提示框同时会弹出此授权提示款,不会影响上线审核

发送通知

如果应用使用了uniPush(发送消息通知)功能,在应用启动时会弹出“发送通知”系统授权框

这是因为应用启动时会自动向系统注册要使用消息推送功能引起,如果希望在应用启动时不弹出此授权框,HBuilderX2.6.3+版本可以按以下方法配置配置应用启动时不注册。
在用户接受隐私政策后调用异步获取客户端推送标识信息方法 plus.push.getClientInfoAsync进行注册。

配置方法

打开项目的manifest.json文件,切换到“源码视图”项

  • uni-app项目
    在 "app-plus" -> "distribute" -> "ios" 节点下添加 pushRegisterMode节点
  • 5+ App项目
    在 "plus" -> "distribute" -> "apple" 节点下添加 pushRegisterMode节点

pushRegisterMode字段值设置如下:

        "pushRegisterMode": "manual"

注意plus.push.getClientInfo是同步方法,不会触发向系统注册操作,必须使用异步方法 plus.push.getClientInfoAsync

配置后提交云端打包后生效

本地离线打包参考:https://ask.dcloud.net.cn/article/41#pushRegister

其它授权框

应用启动不会主动调用涉及到系统授权框的功能,但是调用类似定位等功能时也会触发“位置信息”授权框
这时需要修改应用内部业务逻辑,在用户同意隐私政策前不要调用这些API来避免。

1 关注 分享
aliang888

要回复文章请先登录注册

踩坑小白

踩坑小白

回复 我一笑而过 :
你好有解决方法吗,目前卡在这了
2022-08-11 09:27
3***@qq.com

3***@qq.com

如何在启动页前弹出隐私政策框呢?想做成跟Android一样
2022-06-28 11:32
五毛

五毛

"pushRegisterMode": "manual"
这个完全没有用啊,还是提前弹出通知权限弹窗
2022-06-27 12:02
2***@qq.com

2***@qq.com

苹果开发者中心那边没有开通推送,提交云打包也没有勾选推送,manifest.json中也配置了"pushRegisterMode" : "manual",但是打出来的包还是会提示通知授权框,这个怎么解决。
2022-03-28 10:36
bslakeyuitt

bslakeyuitt

有一个问题请教大佬,自己写的弹窗页面,使用Storage保存用户是否同意的状态用于下次进入判断,但是杀掉app缓存状态就不在了,那且不是每次杀掉应用都要提醒用户吗
2022-01-20 18:10
吃了个大香瓜

吃了个大香瓜

回复 1***@qq.com :
就是自己写了单独的页面,先让页面弹出来了~
2021-12-21 11:04
7***@qq.com

7***@qq.com

回复 7***@qq.com :
uni-agree.nuve
```vue
<template>
<view class="page">
页面内容。。。
button(@click="dis")
</view>
</template>
<script>
export default {
methods: {
dis(){uni.showModal({content: '确定退出?'})}
}
}
</script>
```
2021-12-15 16:51
7***@qq.com

7***@qq.com

回复 吃了个大香瓜 :
app.vue 下的 onLaunch中添加如下判断
```js
let userprotocol = uni.getStorageSync('userprotocol');
if(!userprotocol){
uni.navigateTo({
url:'/pages/uni-agree/uni-agree',
animationType:"none"
})
}
```
2021-12-15 16:45
1***@qq.com

1***@qq.com

回复 吃了个大香瓜 :
您好,请问实现了吗。。现在也是遇到这个问题
2021-11-20 12:06
我一笑而过

我一笑而过

能出个ios弹窗的解决方案吗?最好和android一样,简单配置下就可以
2021-11-17 18:13