检测权限 API

API 兼容性:
QRN:v3.5.0
iOS:80011158
Android:60001219

目前只有检测和打开系统通知权限的功能,以后会陆续添加其他权限。

引入

import { QPermission } from 'qunar-react-native';

checkPermission

type 是权限的类型,当前支持通知权限(notification)。

successCallback 是成功回调,返回结果有以下两种情况:

  • 未开启权限:

  • 已开启权限:

errorCallback 是失败回调,返回值结构为:

  • 调用失败
QPermission.checkPermission(
    {
        type: 'notification'
    },
    (data) => {
        alert(JSON.stringify(data));
    },
    (err) => {
        alert(JSON.stringify(err));
    }
);

checkPermissions

批量检测系统权限 v5.4.1 以上支持

permissions 要检查的权限列表

  • 安卓已支持的权限列表
"photo" //读取相册权限
"camera" //拍照摄像权限
"microphone" //麦克风权限
"location" //地理位置
"push" //通知权限
"contacts" //联系人权限
"read_calender" //读取日历
"write_calender" //写日历
"read_external_storage" //读取外部存储,最高支持版本到32(Android12),Android13以上框架转为"read_media_image"图片权限
"write_external_storage" //写入外部存储,最高支持版本到32(Android12),Android13以上框架转为"read_media_image"图片权限
"read_phone_state" //读取手机状态信息
"write_settings" //修改系统内容设置
"system_alert_window" //悬浮窗权限
"send_sms" //发短信权限
"call_phone" //拨打电话权限
"account_manager " //账户权限
  • iOS 已支持的权限列表
"photo" //读取相册权限
"camera" //拍照摄像权限
"microphone" //麦克风权限
"location" //地理位置
"push" //通知权限
"contacts" //联系人权限
"read_calender" //读取日历, 兼容android,实际不区分读写
"write_calender" //写日历, 兼容android,实际不区分读写
"idfa" // 查询idfa权限

successCallback 是成功回调, 返回结构:

  • 返回值
{
    "read_calender":{
        "state":false
    },
    "location":{
        "state":true,
        "stateDesc":0   // 此处0、1、2分别表示:LocationUnknownAccuracy = 0, // 未知精度    LocationReducedAccuracy = 1, // 模糊定位    LocationFullAccuracy = 2, //精准定位
    },
    "photo":{
        "state":true,
        "stateDesc": 'all', // 取值 all /  user_selected / none 分别表示 全部相册权限 / 部分相册权限 / 无相册权限 (adr 60001580 ios 80011321 新增)
    },
    ...
}

errorCallback 是失败回调

QPermission.checkPermissions(
    [
        'photo', //读取相册权限
        'camera', //拍照摄像权限
        'microphone', //麦克风权限
        'location', //地理位置
        'push', //通知权限
        'contacts', //联系人权限
        'read_calender', //读取日历
        'write_calender', //写日历
        'read_external_storage', //读取外部存储
        'write_external_storage', //写入外部存储
        'read_phone_state', //读取手机状态信息
        'write_settings', //修改系统内容设置
        'system_alert_window', //悬浮窗权限
        'send_sms', //发短信权限
        'call_phone', //拨打电话权限
        'account_manager ' //账户权限
    ],
    (data) => {
        alert(JSON.stringify(data));
    },
    (err) => {
        alert(JSON.stringify(err));
    }
);

jumpAppSettings

跳转系统权限页 v5.4.1 以上支持

successCallback 是成功回调 errorCallback 是失败回调

QPermission.jumpAppSettings(
    (data) => {
        alert(JSON.stringify(data));
    },
    (err) => {
        alert(JSON.stringify(err));
    }
);

打开系统设置:openPrefs

type 是权限的类型,当前支持通知权限(notification)。

isShowDialog 跳转通知权限设置页面时是否显示默认对话框,默认为 true。

title 是询问是否打开 系统权限设置页面 对话框 的标题。

message 是询问是否打开 系统权限设置页面 对话框 的提示内容。

successCallback 是成功回调,返回值结构:

  • 成功打开设置

errorCallback 是失败回调,返回结果有以下三种情况:

{ msg: '权限已经存在,不需要设置', code: '20001', ret: false }

{ msg: '参数错误', code: '10004', ret: false }

{ msg: '用户取消', code: '20002', ret: false }

QPermission.openPrefs(
    {
        type: 'notification',
        title: '请求使用通知服务',
        message: '关闭通知后,您将无法收到相关的通知。代开推送通知有助于我们为您更好得提供服务'
    },
    (data) => {
        alert(JSON.stringify(data));
    },
    (err) => {
        alert(JSON.stringify(err));
    }
);

字段说明

回参:

  • ret:结果说明

  • code:状态码

  • msg:结果描述

入参:

  • type:验证权限的类型(notification:通知 type,后续可扩展多种)

  • isShowDialog:跳转通知权限设置页面时是否显示默认对话框,默认为 true。

  • title:提示的标题

  • message:提示文案