uni-app如何实现App端的各种授权 uni-app权限检测工具类

星降

星降

2026-04-24

799人浏览

原创

uni.getpushpermission在android上总返回granted,因其底层调用过时推送接口,仅反映通道注册状态而非真实通知授权;android 13起须用uni.authorize({scope: 'scope.notification'})动态申请。

uni-app如何实现app端的各种授权 uni-app权限检测工具类

uni.getPushPermission在Android上为什么总返回granted

因为Android 12及以下系统不支持POST_NOTIFICATIONS权限的运行时检查,uni.getPushPermission底层调用的是过时的推送服务状态接口,与实际通知开关无关。它只反映“是否注册了推送通道”,不是用户是否授权弹窗。Android 13(API 33)起必须用uni.authorize({scope: 'scope.notification'})动态申请,且该调用会真实触发系统弹窗。

常见错误现象:

  • 在Android 12模拟器或旧机型上调用uni.getPushPermission,state始终是"granted",但uni.showNotification静默失败
  • 未区分SDK版本就统一走getPushPermission判断,导致Android端UI误判为“已授权”

实操建议:

  • 先用uni.getSystemInfoSync().SDKVersion判断是否≥"33"
  • 是则必须调用uni.authorize({scope: 'scope.notification'}),并在fail中捕获拒绝行为
  • 否则(Android 12及以下)只能默认“技术上可发”,但需配合后续发送测试验证——比如发一条空通知,监听uni.onPushMessage是否触发

如何跳转到App的通知设置页(iOS/Android真机有效)

uni.openSetting在App端完全无效,iOS和Android都必须走原生桥接。路径和参数稍有不慎就会跳转失败或打开空白页。

关键细节:

  • iOS:必须用plus.ios.invoke调用openURL:,传入"app-settings:"(注意末尾冒号),不能用settings://prefs://
  • Android:目标Intent Action是"android.settings.APPLICATION_DETAILS_SETTINGS",data Uri格式必须为"package:你的appid",其中appid要与manifest.jsonpackagename严格一致(大小写敏感)
  • 跳转前建议执行plus.runtime.restart(),尤其热更新后,避免因环境未刷新导致原生API不可用

示例片段(Android部分):

const packageName = plus.android.currentApplication().getPackageName();
const Intent = plus.android.importClass('android.content.Intent');
const Settings = plus.android.importClass('android.provider.Settings');
const intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.setData(android.net.Uri.parse('package:' + packageName));
plus.android.startActivity(intent);

用laoqianjunzi-permiss插件统一处理三端权限

这个UTS插件真正解决了跨平台权限逻辑碎片化的问题,但它不是“开箱即用”,有几个隐藏约束必须提前确认。

ApiPost接口调试与文档生成工具
ApiPost接口调试与文档生成工具

ApiPost是一个支持团队协作,支持模拟POST、GET、PUT等常见请求,并可直接生成文档的API调试、管理工具,ApiPost是后台接口开发者或前端、接口测试人员的工作必备工具。快速生成、一键导出API文档。感兴趣的朋友快来下载吧。软件说明ApiPost官方版是一款十分出色的接口调试与文档生成工具,ApiPost官方版界面美观大方,功能强劲实用,支持团队协作,支持模拟POST、GET、PUT等常见请求,是后台接口开发者或前端、接口测试人员的工作必备工具。软件特色更方便支持接口调试的同时快速生成、一键

下载

适用前提:

  • 仅支持uni-app(Vue2/Vue3)和uni-app x,不兼容H5或小程序
  • 鸿蒙支持依赖@kit.AbilityKit,需确保项目已启用鸿蒙模块(uni-app x项目默认开启)
  • checkPermissions对iOS某些权限(如健康、运动、本地网络)返回cannotCheckByAPI: true,意味着不能靠API判断,只能引导用户去设置页+功能试探

典型调用方式:

import { checkPermissions, requestPermissions } from '@/uni_modules/laoqianjunzi-permiss';

// 检查通知权限
const result = await checkPermissions([{ name: 'notification' }]);
if (!result.allGranted) {
  // 触发申请
  const reqRes = await requestPermissions([{ name: 'notification', title: '开启通知', content: '接收重要消息提醒' }]);
}

注意:name字段必须是插件预设值(如'notification''location'),不能直接填'scope.notification'或原生权限字符串。

权限申请前必须同步告知用途(过审刚需)

华为、小米等应用商店审核明确要求:每次申请危险权限前,必须弹出自定义弹窗说明用途,否则直接拒审。这个弹窗不能是系统级的,必须由前端控制文案和时机。

实操要点:

  • 不能等uni.authorize失败后再弹——此时用户已看到系统拒绝弹窗,再弹自定义说明就晚了
  • 必须在调用uni.authorize前,主动show一个uni.showToast或自定义modal,文案需具体(例如:“需要访问位置信息,以便为您推荐附近门店”)
  • Android上若用户点“不再询问”,requestPermissions会直接进入failerr.errMsg"auth deny",此时应立即调用openSystemPermissionPage并提示“请手动开启”

最易被忽略的一点:iOS的NSLocationWhenInUseUsageDescription等描述字段,必须在manifest.jsonios节点下完整配置,且文案要与前端弹窗一致,否则App Store审核会认为“前后不一致”。

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

1111

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

2262

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

2131

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

2321

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

336

5

墨刀AI提示词教学
墨刀AI提示词教学

本合集由PHP中文网精心整理,为您提供全面的墨刀AI提示词教学。内容涵盖高质量原型撰写公式与实操窍门,助您轻松掌握AI设计工具。无论是零基础入门还是进阶技巧,都能让您快速上手,大幅提升产品设计与协作效率。

2026.08.04

10

21

墨刀AI完整入门
墨刀AI完整入门

PHP中文网为您倾力打造墨刀AI保姆级入门指南完整版!本合集从零基础讲起,涵盖AI生成原型、提示词优化、图片转原型及多轮对话等核心功能。无论您是新手还是进阶用户,都能轻松掌握产品设计全流程。快来PHP中文网,一键解锁高效设计技巧,让想法即刻成型!

2026.08.04

7

20

墨刀AI进阶技巧
墨刀AI进阶技巧

本合集由PHP中文网精心整理,为您提供墨刀AI核心进阶策略指南。内容涵盖高效提示词写作、原型智能生成与微调、结构化导图制作及行业分析报告输出等实战技巧。助您轻松掌握AI设计工具,大幅提升产品设计与团队协作效率。

2026.08.04

10

14

火山引擎实名认证失败怎么办
火山引擎实名认证失败怎么办

火山引擎实名认证失败可能与证件信息填写错误、姓名或企业信息不一致、证件照片不清晰、营业执照状态异常、手机号验证失败或审核资料不完整有关。本专题整理个人认证、企业认证、资料上传、审核退回、重新提交和认证不通过的常见处理方法。

2026.08.04

5

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
uni-app从入门到实战教程
uni-app从入门到实战教程

共0课时 | 0人学习

uni-app x harmony开发指南
uni-app x harmony开发指南

共0课时 | 0人学习

uni-app鸿蒙运行和发行
uni-app鸿蒙运行和发行

共0课时 | 0人学习