uni

您所在的位置:网站首页 ios应用禁止使用网络 uni

uni

2023-08-09 19:12| 来源: 网络整理| 查看: 265

利用Native.js获取当前App的授权状态,可打开App的授权设置界面,这里使用已封装好的permission.js插件,实现提示用户授权情况及设置功能。

插件下载地址:App权限判断和提示 - DCloud 插件市场

一、使用方法

1.下载插件并存放到项目目录下,比如:js_sdk/wa-permission/permisson.js

2.在页面中引入js模块:

import permission from '@/js_jdk/wa-permission/permission.js'

3.调用模块的方法

//判断IOS上是否给予位置权限,有权限返回true,否则返回false permission.judgeIosPermission('location'); 二、IOS设备上当前App是否有某项权限

方法1:Bool permission.judgeIosPermission(String permissionID)

参数说明:

参数名类型必填说明permissionIDString是ios权限名称,值域清单如下列表

permissionID值域清单

参数名说明 location位置push推送(限IOS,注意Android上推送并不是一个权限)camera摄像头photoLibrary相册record麦克风contact通讯录calendar日历memo备忘录

示例:

//判断IOS上是否给予位置权限,有权限返回true,否则返回false permission.judgeIosPermission('location'); 三、Android设备上当前App是否有某个权限

方法2:await Number permission.requestAndroidPermission(String permissionID)

注意:Android是动态权限,请求权限状态时会触发弹框访问是否赋权(如果已经同意或永久禁止则不会访问),所以必须使用异步方式来处理)

参数说明

参数名类型必填说明permissionIDString是Android权限名称,值域清单如下表

permissionId值域清单

参数名说明android.permission.ACCESS_FINE_LOCATION位置权限android.permission.ACCESS_COARSE_LOCATION模糊位置权限(蓝牙\ble依赖)android.permission.CAMERA摄像头权限android.permission.READ_EXTERNAL_STORAGE外部存储(含相册)读取权限android.permission.WRITE_EXTERNAL_STORAGE外部存储(含相册)定入权限android.permission.RECORD_AUDIO麦克风权限android.permission.READ_CONTACTS通讯录读取权限android.permission.WRITE_CONTACTS通讯录写入权限 android.permission.READ_CALENDAR日历读取权限android.permission.WRITE_CALENDAR日历写入权限android.permission.READ_SMS短信读取权限android.permission.SEND_SMS短信发送权限android.permission.RECEIVE_SMS接收新短信权限android.permission.READ_PHONE_STATE获取手机识别码等信息权限android.permission.CALL_PHONE拨打电话权限android.permission.READ_CALL_LOG获取通话记录权限

这里支持Android所有android.permission的值,更多值可参考Android开发文档

返回值值域说明

permission.requestAndroidPermission(permissionID) 返回值为数字,包括-1、0、1这三个值。

返回值说明1已获取授权0未获取授权-1被永久拒绝授权

示例:

// vue的method里编写如下代码 async requestAndroidPermission(permissionID) { var result = await permission.requestAndroidPermission(permissionID) var strStatus if (result == 1) { strStatus = "已获得授权" } else if (result == 0) { strStatus = "未获得授权" } else { strStatus = "被永久拒绝权限" } uni.showModal({ content: permissionID + strStatus, showCancel: false }); } 四、当前App的权限设置界面打开,可用于引导用户赋权。

内部已封装,不必区分IOS和Android。

示例代码:

permission.gotoAppPermissionSetting()

注:IOS上如果没有调用过的权限,不会出现在权限设置界面。Android碎版化严重,直接打开了App的设置界面。

五、获取当前手机是否开启或关闭了定位服务

内部已封装,不必区分IOS和Android

返回值说明true开启false关闭

示例:

//返回true或false permission.checkSystemEnableLocation() 六、扩展阅读

Native.js是用js调用原生API的一种写法,示例如下:

判断定位权限是否开启以及手机自身的位置服务是否被关闭

var cllocationManger = plus.ios.import("CLLocationManager"); var enable = cllocationManger.locationServicesEnabled(); var status = cllocationManger.authorizationStatus(); console.log("enable:" + enable); console.log("status:" + status); if (enable && status != 2) { console.log("手机系统的定位已经打开且App已经获得定位权限"); } else { console.log("手机系统的定位没有打开或App没有获得定位权限"); } plus.ios.deleteObject(cllocationManger); 七、相关权限判断与开启示例

1.判断是否有拨打电话权限,示例如下:

import permission from "@/js_sdk/wa-permission/permission.js" //检查是否开启通讯录服务 export const checkContect = () => { return new Promise((resolve, reject) => { permission.requestAndroidPermission('android.permission.CALL_PHONE').then(res => { if(res==1){ resolve(); }else if(res == 0){ uni.showModal({ title: '提示', content: '被永久拒绝授权, 请打开拨打电话权限', success() { permission.gotoAppPermissionSetting(); } }); reject(); }else if(res == -1){ uni.showModal({ title: '提示', content: '未获取授权, 请打开拨打电话权限', success() { permission.gotoAppPermissionSetting(); } }); reject(); } }).catch(() => { uni.showModal({ title: '提示', content: '请打开拨打电话权限', success() { permission.gotoAppPermissionSetting(); } }); reject(); }); }); } //通过import将checkContect函数引入调用页面,调用方法如下 // #ifdef APP-PLUS checkContect().then(() => { uni.makePhoneCall({ phoneNumber: '手机或座机号码' }); }); // #endif

2.检查是否开启位置信息服务

import permission from "@/js_sdk/wa-permission/permission.js" // 检查是否开启位置信息服务 export const checkOpenService = () => { let result = permission.checkSystemEnableLocation(); if(!result) { uni.showModal({ title: '提示', content: '请打开定位服务功能', showCancel: false, success() { var main = plus.android.runtimeMainActivity(); var Intent = plus.android.importClass('android.content.Intent'); var Settings = plus.android.importClass('android.provider.Settings'); var intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); main.startActivity(intent); // 打开系统设置GPS服务页面 } }); }else { console.log('已开启定位服务功能'); } } //通过import将checkOpenService函数名引入调用页,示例如下 // #ifdef APP-PLUS let permissionStatus = checkOpenPermission(); if(!permissionStatus){ return false; } // #endif

其他权限判断与开启方法,可参考以上示例



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3