微信、企微小程序使用taro对位置权限进行处理
1.功能
当用户
未授权地理位置权限时,引导用户开启地理位置权限,区别于之前的uni处理,uni的处理 的处理没有手机系统关闭位置权限的处理,但是uni文章中对于打开位置权限后重新返回小程序有做权限重获取,当前文章未做处理
2.无授权情况分为(截图示例为iphone手机)
2.1 手机系统未开启位置授权 无法通过代码跳转到该设置页面

2.2 微信、企微App未授权 可以通过代码跳转设置页面


2.3 小程序未授权 可以通过代码跳转设置页面

3.代码
其中$dialog为提示框,具有确认取消按钮,点击后会执行对应逻辑可以换成对应项目的组件
async function checkAndAuthLocationAuth(): Promise<boolean> {
return new Promise(async (resolve, reject) => {
const systemRes = await taro.getSystemInfo()
if (!systemRes.locationEnabled) {
$dialog({
title: '提示',
render: () => '当前系统,未开启定位权限,请在设置中开启系统定位权限!',
cancelButton: true,
confirmButton: true,
handleConfirm: async () => {
}
})
return reject(false)
} else {
const appAuthorizeSetting = await taro.getAppAuthorizeSetting()
const appAuthObj = {
title: '提示',
render: () =>
'当前App未开启定位权限,请在设置中开启App定位权限!',
cancelButton: true,
confirmButton: true,
handleConfirm: async () => {
taro.openAppAuthorizeSetting({})
}
}
switch (appAuthorizeSetting.locationAuthorized) {
case 'authorized':
const wxMiniSetting = await taro.getSetting()
if (wxMiniSetting.authSetting['scope.userLocation']) {
// 成功获取后你可以直接根据项目业务需求决定此处是否直接获取经纬度等
return resolve(true)
}else if (wxMiniSetting.authSetting['scope.userLocation'] === undefined) {
const authRes = await taro.authorize({ scope: 'scope.userLocation' })
if (authRes.errMsg === 'authorize:ok') {
// 成功获取后你可以直接根据项目业务需求决定此处是否直接获取经纬度等
resolve(true)
} else {
// 拒绝后这里可以直接再次提示以及一些业务逻辑处理
}
}
else {
$dialog({
title: '提示',
render: () =>
'您的账号尚未获取或已拒绝“获取位置信息”,暂时无法使用该功能,是否确认授权?',
cancelButton: true,
confirmButton: true,
handleConfirm: async () => {
taro.openSetting({})
},
})
}
return reject(false)
case 'denied':
$dialog(appAuthObj)
return reject(false)
case 'not determined':
$dialog(appAuthObj)
return reject('')
default:
break;
}
}
})
}
使用示例
await checkAndAuthLocationAuth()
// 业务逻辑 如果未成功获取则不会走到业务逻辑代码中
...
...
// 业务逻辑结束
微信、企微小程序使用taro对位置权限进行处理的更多相关文章
- 微信小程序之获取用户位置权限(拒绝后提醒)
微信小程序获取用户当前位置有三个方式: 1. wx.getLocation(多与wx.openLocation一起用) 获取当前的精度.纬度.速度.不需要授权.当type设置为gcj02 返回可用于w ...
- Taro -- 原生微信小程序转taro
微信小程序转Taro (转发https://nervjs.github.io/taro/docs/taroize.html) Taro 可以将你的原生微信小程序应用转换为 Taro 代码,进而你可以 ...
- 微信小程序-获取当前城市位置及再次授权地理位置
微信小程序-获取当前城市位置 1. 获取当前地理位置,可通过wx.getLocation接口,返回经纬度.速度等信息; 注意---它的默认工作机制: 首次进入页面,调用该api,返回用户授权结果,并保 ...
- 移动开发之【微信小程序】的原理与权限问题以及相关的简易教程
这几天圈子里到处都在传播着这样一个东西,微信公众平台提供了一种新的开放能力,开发者可以快速开发一个小程序,取名曰:微信公众平台-小程序 据说取代移动开发安卓和苹果,那这个东东究竟是干吗用的?但很多人觉 ...
- 【微信小程序】获取用户地理位置权限,二次请求授权,逆解析获取地址
摘要:微信小程序内获取用户地理位置信息授权,被拒绝后二次获取,获取权限后逆解析得到用户所在省市区等.. 场景:商城类小程序,在首页时需展示附近门店,即用户刚进入小程序时就需要获取到用户位置信息 ste ...
- HotApp小程序统计,第一个专业的微信第三方小程序统计工具
1.什么是HotApp小程序统计 HotApp小程序统计是第一个微信第三方小程序统计工具,就像做android 和 ios开发的人知道友盟统计一样,小程序也需要有个统计工具. 通过这个工具,可以知道小 ...
- WeTest+微信:小程序云端测试系统上线
日前,微信新增小程序测试系统,可便于开发者检测小程序缺陷,评估小程序产品质量.在小程序发布之前,开发者可将小程序代码提交到测试系统,在不同型号的手机真机上运行,执行完毕后自动生成测试报告.小程序云端测 ...
- 小程序内嵌H5页面判断微信及小程序环境
判断微信及小程序环境 1.H5页面引入jweixin-1.3.2.js 2. var ua = window.navigator.userAgent.toLowerCase(); if(ua.matc ...
- 类似微信聊天小程序-网易云信,IM DEMO小程序版本
类似微信聊天小程序-网易云信,IM DEMO小程序版本 代码地址: https://github.com/netease-im/NIM_Web_Weapp_Demo 云信IM DEMO 小程序版本 ( ...
- Tauri-Vue3桌面端聊天室|tauri+vite3仿微信|tauri聊天程序EXE
基于tauri+vue3.js+vite3跨桌面端仿微信聊天实例TauriVue3Chat. tauri-chat 运用最新tauri+vue3+vite3+element-plus+v3layer等 ...
随机推荐
- 记一次docker安装Jenkins
docker安装Jenkins 0. 下载docker镜像 docker search jenkins docker pull jenkins/jenkins:lts 1. 安装步骤 创建映射文件夹 ...
- IDEA/Android Studio的gradle控制台输出中文乱码问题解决
原文地址: IDEA/Android Studio的gradle控制台输出中文乱码问题解决 - Stars-One的杂货小窝 在项目中,有使用到Gradle自定义脚本,会有些输出日志,但是输出中文就变 ...
- Linux DISPLAY环境变量的妙用(error:QXcbConnection: Could not connect to display) ,xhost 命令, 通过ssh连接显示界面
PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明 本文作为本人csdn blog的主站的备份.(Bl ...
- 计算机网络-DNS以及FastGitHub
前言 你是否观察到过这种现象,在访问Github时,有的时候能正常访问,有的时候再次刷新就访问不了,那么能不能有什么办法能一直访问.答案是有,就是在DNS层面能保证一直稳定获取可用并且快速的IP,这就 ...
- 重新启动mysql
liu@liu-virtual-machine:~$ ps aux|grep mysqld mysql 5252 0.2 4.5 1496516 181200 ? Sl 11:01 0:01 /usr ...
- KingbaseES 名词解释之timeline
timeline定义 每当归档文件恢复完成后,创建一个新的时间线用来区别新生成的WAL记录.WAL文件名由时间线和日志序号组成 引入timeline的意义 为了理解引入时间线的背景,我们来分析一下,如 ...
- KingbaseES集群运维案例之---主备库failover后auto-recovery机制
KingbaseES集群运维案例之---主备库failover后auto-recovery机制 案例说明: KingbaseES集群,在备库数据库服务down后,可以实现节点数据库服务的自动恢复:在集 ...
- 【已解决】aconda3 创建和切换jupyter Kernel(安装好了tensorflow在jupyter中无法使用)
如下图:在这里更换python环境内核(如果你把tensorflow安装在了一个新建的虚拟环境) 1. 创建新的环境(或者是直接激活进入已经安装了tensorflow的环境) conda create ...
- LeetCode 3093. 最长公共后缀查询 (二分法)
LeetCode 3093. 最长公共后缀查询 1 题目描述 给你两个字符串数组 wordsContainer 和 wordsQuery . 对于每个 wordsQuery[i] ,你需要从 word ...
- 记一次nginx服务异常-无法访问问题排查
上一秒还好好地,突然下一秒nginx服务器就访问不了啦. 这让人很是疑惑,到底是什么原因导致的呢?问题如下 开始一步一步地排查问题. 尝试一:在windows电脑上使用telnet命令查看端口是否正常 ...