微信、企微小程序使用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等 ...
随机推荐
- 二进制文件分析工具-hexdump使用指南
一 概念: hexdump是Linux下的一个二进制文件查看工具,它可以将二进制文件转换为ASCII.八进制.十进制.十六进制 格式进行 查看. 二 用法简介: 该工具的用法十分简单,具体如下所示: ...
- 没有有线网卡的笔记本如何在PVE下All in one?—NAS + Linux +win下载机
没有有线网卡的笔记本在PVE下All in one | NAS + Linux + Win下载机 (保姆级未完成版) 目录: 1.前言 2.PVE的安装 3.PVE联网前的准备工作 4.PVE使用无线 ...
- day03-2-应用线程02
JavaGUI-坦克大战03-2 7.线程的应用02 7.3.坦克大战4.0版 坦克大战4.0版 增加功能: 功能1.让敌人的坦克也能够发射子弹(可以有多个子弹) 功能2.当我方坦克集中敌人坦克时,敌 ...
- epoll反应堆理解
https://www.aliyundrive.com/s/oBvP7BcjsCS https://blog.csdn.net/weixin_36750623/article/details/8354 ...
- Android 开发Day10
这是main里面的所有代码,按版本修改过 AndroidManifest.xml <?xml version="1.0" encoding="utf-8" ...
- JS(数组)
一 数组的概念 问:之前学习的数据类型,只能存储一个值.如果我们想存储班级中所有学生的姓名,那么该如何存储呢?答:可以使用数组(Array).数组可以把一组相关的数据一起存放,并提供方便的访问(获取) ...
- 为什么延迟删除可以保证MYSQL 与redis的一致性?
看过很多保持MYSQL 与redis保持一致性的文章都提到了延迟删除,其实脱离任何业务场景的设计都是不切实际的,所以我会本着一个通用的读写场景去分析为什么延迟删除大概率可以保证MYSQL与redis的 ...
- Python简单程序设计(Average篇)
如题: 解题方式如下:
- .NET Emit 入门教程:第五部分:动态生成方法(MethodBuilder 与 DynamicMethod)
前言: 当我们涉及到在运行时生成和定义方法时,便需要使用到C#中的两个关键类之一:MethodBuilder 或 DynamicMethod. 这两者都属于反射(Reflection.Emit)的一部 ...
- Make It Equal 题解
Problem Link 简要题意 翻译很清楚. 思路 提供一种简单直接的思路. 可以发现最多会操作 \(n\) 次. 那么就可以每次直接枚举切的高度 \(h\),检查更改是否超过 \(k\),之后暴 ...