马上就要到5月份了,早在半年甚至一年前各大APP发布平台就开始提示开发者要开始基于Android 8.0 (API等级26,即targetSdkVersion大于等于26)及以上开发。(这意味着如果不符合这一规则,5月1日后的APP将无法正常发布上架)
首先第一点如何使apicloud平台开发的APP满足API等级26的规则呢,这个之前已经有写过一篇升级方式大家可以参考:http://iskeys.com/article/25
其次将APP的规则提升到26后,会发现如果新下载的APP默认是不开启权限的,大部分用户在安装时候一般不会刻意去关注,这就会导致APP打开时由于缺少权限导致大部分功能无法正常使用甚至会出现闪退问题。
这时候我们就必须通过监听APP是否已经开启了权限并提示用户开启来避免出现此类问题。
废话就不多说了这边封装了一个自动监听APP权限并提示用户开启对应权限的函数,有需要的朋友可以自行拿去使用,将函数丢到common.js中,建议在APP开启页面,及需要使用到照相、电话等主动唤起权限的功能页面中调用该方法进行提示。(具体的回调事件可根据需求自行设置)
代码附上:
var publicFunction = { //检测APP所需权限是否开启,并提示用户开启对应权限 //callBack回调事件可自行在调用的时候写入 checkPermission: function(callBack){ //验证照相、相册、存储、通知权限(有需要可以继续增加,详看对应文档)https://docs.apicloud.com/Client-API/api#hasPermission var resultList = api.hasPermission({ list:['camera','photos','storage','notification'] }); var _permission = new Array(); for (var i = 0; i < resultList.length; i++) { if(resultList[i].granted == false){ _permission.push(resultList[i].name); } } if(_permission && JSON.stringify(_permission) != '[]'){ api.requestPermission({ list:_permission, code:1 }, function(ret, err){ for (var i = 0; i < ret.list.length; i++) { if(ret.list[i].granted == false){ api.confirm({ title: '缺少权限,将导致部分功能无法使用', msg: '请确认开启对应权限。', buttons: ['确定开启', '取消'] }, function(ret, err) { if(ret.buttonIndex == 1){ publicFunction.checkPermission(callBack); }else{ callBack(); return; } }); }else{ callBack(); return; } } }); }else{ callBack(); return; } } }
这边也提供源码下载:
链接:https://pan.baidu.com/s/1-tjdpftewgt7EUzAKUQx2A
提取码:228u
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com