如何提升App用户隐私合规性?以YonBuilder移动开发平台APICloud为例

本文涉及的产品
mPaaS订阅基础套餐,标准版 3个月
简介: 在移动应用开发领域,如果企业的应用程序未采用动态权限方式获取用户的隐私权限,将无法上架Google Play及国内的各大应用市场。对于一款标准的移动端商业app,动态权限功能已经成为必不可少的标配功能。本文主要介绍如何使用YonBuilder移动开发技术,实现移动端的动态权限功能。

用户个人隐私泄漏问题泛滥,引发用户与企业间的信任危机,个人隐私保护因此得到前所未有的重视。在移动应用开发领域,如果企业的应用程序未采用动态权限方式获取用户的隐私权限,将无法上架Google Play及国内的各大应用市场。对于一款标准的移动端商业app,动态权限功能已经成为必不可少的标配功能。

本文主要介绍如何使用YonBuilder移动开发技术,实现移动端的动态权限功能。

API介绍

YonBuilder 移动开发平台统一了Android和iOS两个平台的动态权限操作,提供了两个API函数来支持动态权限的开发:

hasPermission:用来判断应用是否已获取了某个(或某几个)应用权限的用户授权。

requestPermission:使用交互弹窗的方式,来向用户申请相关的应用权限。

更多API对象介绍,可访问https://docs.apicloud.com/Client-API/api查看。

实现思路

首先使用hasPermission检测权限,获取检测结果后,对权限检查结果进行判断。对于没有获取到的权限,再调用requestPermission函数进行动态申请。

**注意(可选操作):**当判断应用未获取某些权限并准备向用户发起动态权限申请前,可以加入一些增强产品体验的优化操作。

例如,使用代码设计实现一个美观的交互弹窗,向用户说明应用为什么要获取这些动态权限,以及如果无法获取相应权限将导致应用的某些功能无法使用的结果说明,让用户理解动态权限授权的必要性和合理性。

实现流程

1. 设置targetSdkVersion版本值

打开项res文件夹下的manifest.xml文件,查看其中的targetSdkVersion值是否≥26,如果不是则进行修改。

在当前的版本中,新创建的项目已自动创建manifest.xml文件,并设置targetSdkVersion默认值为30(见下面截图)。

如果是旧项目,则没有该文件,则可以使用新建文件的方式自行创建。

PS: 设置targetSdkVersion版本值≥26的原因

在Android上使用动态权限,要求app编译的目标SDK(即targetSdkVersion)为23及以上(对应为Android 6.0及以上系统),22及以下系统会执行缺省处理(手机厂商也可能定制处理),YonBuilder移动开发平台为满足更普遍的开发需求,在平台编译时,默认配置targetSdkVersion为22,即权限走系统缺省处理。

自2018年11月开始,Google Play以及国内大部分应用市场要求app编译目标SDK必须为26及以上,否则不予提交审核,所以需要在项目中设置声明。

2. 动态权限代码编写

关于动态权限申请和检测的时机,可以在app启动之后进行集中检测申请,也可以在不同页面下,在涉及相关隐私的逻辑中进行检测申请。

2.1 动态权限检测

// 定义需要动态申请的权限组数变量const permissonList = ['photos', 'microphone', 'camera', 'notification'];// 使用hasPermission函数判断当前应用已获取权限的授权结果const resultList = api.hasPermission({list: permissonList});

2.2 处理检测结果数据

// 定义缓存未授权权限的数组变量const tNeed = [];// 遍历处理检测结果数据,将未授权的权限重新push到一个新数组for (let i = 0; i < resultList.length; i++) {const element = resultList[i];if (!element.granted) {tNeed.push(permissonList[i]);}}// 结果判断if (tNeed.length === 0) {// 说明当前权限已获得授权,则当前动态权限校验已完成,调用后续的正常的业务逻辑代码即可。nextToDo(); // 调用后续的业务函数,这里仅做示例} else {// 这里编写对于未授权的权限的后续处理逻辑/*** [可选]这里可以加入一些产品优化方面的代码逻辑,例如* 可以弹出一个弹窗,向用户说明授予相关权限的必要性,当* 用户点击弹出的同意按钮后,再调用下面的api.requestPermission函数*/// 执行动态权限申请的相关业务逻辑(详见2.3)requestPermission(tNeed);}

2.3 动态权限申请

function requestPermission(perList){api.requestPermission({list: perList}, function(ret) {// 对判断结果进行判断处理handlePermissionResult(ret)});}

2.4 对动态申请结果的处理逻辑

api.requestPermission的函数回调参数(见下图):

对于api.requestPermission的回调结果,需要针对授权和未授权两种结果进行判断。

已授权则走正常的后续业务逻辑;对于未获得用户授权的结果,需要开发者根据产品业务逻辑编写相应的业务处理逻辑,例如直接退出app、退出当前页面、再次弹出提示弹窗等。

handlePermissionResult(resData, sucCB) {const [list = [], never] = resData;// 遍历申请结果数组const badPermissions = [];list.forEach(permission => {if(!permission.granted) {// 动态权限未获得授权badPermissions.push(permission);}});if(badPermissions.length === 0) {// 说明申请权限都已获得授权,则返回执行正常的后续业务逻辑if(typeof sucCB === 'function') sucCB();} else {// 这里需要结合具体的业务逻辑,编写对于未授权权限的处理逻辑。api.closeWidget({ silent: true }); // 示例代码,不授权将退出应用}}

2.5 注意事项

2.5.1当程序进行动态权限申请,而用户选择了不再提示(即返回结果never = true)时,后续程序再次调用api.requestPermission进行动态权限申请时,应用程序会自动跳转到手机系统的设置页面,不会再弹出申请权限的弹窗提示。

2.5.2如果某个权限涉及到程序的业务逻辑闭环,最佳实践方法是在每次该业务逻辑执行前,均进行该权限的校验处理,而不是仅校验一次。因为在程序运行中,用户是有可能切出到应用外,直接在手机设置里取消对应用的相关授权,这时应用程序内无法捕获相关事件,从而绕过检测机制,导致程序出现异常错误。

2.5.3所有应用程序中用到的隐私权限,都需要在程序编译打包的设置页面,进行相关权限勾选声明,否则程序运行时会出现各种异常错误。

总结

本文仅介绍了动态权限的判断和处理的简单基本逻辑编写,在实际的应用开发中,开发者需要结合具体业务逻辑场景灵活编写业务逻辑代码。

对于一些不重要的权限,可以在app启动后集中做一次判断处理,对于会影响后续业务流程的重要权限,需要在每一次逻辑代码执行之前,都进行一次权限校验,从而避免程序产生漏洞,发生异常错误。

另外对于未获取用户授权的相关权限处理,开发者可以和产品方面沟通,结合产品业务逻辑,综合考虑后续的处理逻辑。

目录
相关文章
|
8月前
|
传感器 人工智能 监控
Uni-app智慧工地数据大屏可视化监管平台源码带APP
智慧工地的核心是数字化,它通过传感器、监控设备、智能终端等技术手段,实现对工地各个环节的实时数据采集和传输,如环境温度、湿度、噪音等数据信息,将数据汇集到云端进行处理和分析,生成各种报表、图表和预警信息,帮助管理人员了解工地的实时状况,及时做出决策和调整,
212 0
|
4天前
|
移动开发 开发框架 小程序
轻松搭建婚恋交友系统源码,H5/小程序/APP自动适配,智能匹配恋爱交友平台快速落地
婚恋交友系统涵盖在线交友、线下活动、专业服务、社交娱乐等,满足用户多样化需求。系统设计简洁易用,提供实名认证、多注册方式及安全保护,确保用户隐私和数据安全。功能丰富,支持图文展示、筛选匹配、聊天互动、虚拟礼物等,提升互动趣味性。平台可分类管理用户、审核信息、智能推荐,优化用户体验。基于TP6+Uni-app框架,实现跨平台同步,支持二次开发,适应不同市场需求。 [了解更多](https://gitee.com/multi-customer-software/jy)
33 6
|
11天前
|
消息中间件 监控 小程序
电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
电竞陪玩系统架构涵盖前端(React/Vue)、后端(Spring Boot/php)、数据库(MySQL/MongoDB)、实时通信(WebSocket)及其他组件(Redis、RabbitMQ、Nginx)。通过模块化设计、微服务架构和云计算技术优化,提升系统性能与可靠性。同时,加强全面测试、实时监控及故障管理,确保系统稳定运行。
|
1月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
99 3
为什么不加盟线下陪玩APP小程序平台,而是自建平台?
自建线下陪玩APP平台相比加盟,能避免利润抽成,确保所有收益归己,同时提供更高的运营灵活性和稳定性,不受制于合同限制或总平台决策变动,更适合追求长期发展的创业者。
|
7月前
|
开发框架 移动开发 JavaScript
SpringCloud微服务实战——搭建企业级开发框架(四十七):【移动开发】整合uni-app搭建移动端快速开发框架-添加Axios并实现登录功能
在uni-app中,使用axios实现网络请求和登录功能涉及以下几个关键步骤: 1. **安装axios和axios-auth-refresh**: 在项目的`package.json`中添加axios和axios-auth-refresh依赖,可以通过HBuilderX的终端窗口运行`yarn add axios axios-auth-refresh`命令来安装。 2. **配置自定义常量**: 创建`project.config.js`文件,配置全局常量,如API基础URL、TenantId、APP_CLIENT_ID和APP_CLIENT_SECRET等。
273 60
|
5月前
|
安全 开发者 UED
欧盟新规:苹果App Store开发者需公开联系方式,透明度提升还是隐私挑战?
欧盟加强数字服务监管,苹果宣布自10月16日起,欧盟区App Store实施新规:开发者须公开联系方式,提升透明度。政策区分个人与公司开发者信息要求,旨在改善用户体验和服务质量,但引发隐私担忧。苹果需采取措施保护隐私,新规亦考验市场竞争与用户权益平衡。
67 0
|
7月前
|
前端开发 小程序
新版校园跑腿外卖独立版+APP+小程序前端外卖配送平台源码
同城校园跑腿外卖配送平台源码,支持自定义diy 你可以设计你的页面,设计你自己的风格,支持多校园,独立版本,多商户,有用户端,骑手端,商家端,强大的功能
225 3
|
6月前
|
JSON 前端开发 API
移动端---------app开发03----apicloud必须掌握的代码
移动端---------app开发03----apicloud必须掌握的代码
|
6月前
|
前端开发 开发者
移动端-------app开发02,了解apicloud功能和使用,真机测试
移动端-------app开发02,了解apicloud功能和使用,真机测试

热门文章

最新文章