微信小程序获取位置权限用户拒绝授权后重新引导用户授权

2023-10-27

微信小程序获取位置权限用户拒绝授权后重新引导用户授权

解决问题:

​ 微信小程序获取位置权限,用户点击允许后直接地图选点,或者用户拒绝授权后引导用户到设置页面重新授权,需要代码可直接滑至页面底部。

调用方法:

1.利用uni.getSetting 获取用户的当前设置

2.利用uni.authorize 提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。如果用户之前拒绝了授权,此接口会直接进入失败回调,一般搭配uni.getSettinguni.openSetting使用

3.利用uni.openSetting 调起客户端小程序设置界面,返回用户设置的操作结果

4.利用uni.chooseLocation 打开地图选择位置

解决思路:

利用uni.getSetting获取设置信息-用户权限列表:

如果用户已授权,则直接调用uni.chooseLocation 打开地图选择位置;

如果还未授权且,利用uni.authorize 发起授权

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lu4uD0ap-1648964361911)(C:\Users\GIGABYTE\AppData\Roaming\Typora\typora-user-images\1648964049110.png)]

如果用户点击了允许,调用选择位置信息函数选择位置

如果用户点击了拒绝或者用户之前点击过拒绝授权,打开用户设置模态框
在这里插入图片描述

利用uni.openSetting 调起客户端小程序设置界面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KPiAGywB-1648964361912)(C:\Users\GIGABYTE\AppData\Roaming\Typora\typora-user-images\1648963973941.png)]

用户在设置中点击了允许,调用选择位置信息函数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UU9WQNf1-1648964361913)(C:\Users\GIGABYTE\AppData\Roaming\Typora\typora-user-images\1648964288498.png)]

用户在设置中点击了不允许,展示拒绝授权信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GDBdz7pq-1648964361913)(C:\Users\GIGABYTE\AppData\Roaming\Typora\typora-user-images\1648964258438.png)]

完整代码:

页面标签

<!-- 点击按钮获取地图位置信息 -->
<view @click="getSetting">{{ address }}</view>


<!-- 为保持页面modal弹框UI样式一致,使用第三方uView组件 -->
<u-modal v-model="isShowOpen" :content="content" @confirm="openSetting"  :show-cancel-button="true"></u-modal>

方法:

export default{
    data(){
        address: '点击添加地址(必填)',
        isShowOpen:false,//是否打开设置
		content:'检测到您没打开获取位置功能权限,是否去设置打开?',
    },
    methods:{
            // 1.获取设置信息-用户权限列表
			getSetting() {
				const that = this;
				uni.getSetting({
					success: res => {
						console.log('用户权限列表:', res.authSetting)
						if (res.authSetting['scope.userLocation']) {
							console.log('已授权userLocation')
							// 选择位置信息
							that.chooseLocation();
						} else {
							console.log('用户未授权userLocation')
                            //2.用户第一次进来发起授权
							uni.authorize({
								scope: 'scope.userLocation', 
								success: (res1) => {
									console.log("允许授权", res1);
									// 3.如果用户点击了允许,调用选择位置信息函数选择位置
									that.chooseLocation();
								},
								fail: (err1) => {
									console.log("拒绝授权", err1);
                                    // 3.如果用户点击了拒绝或者用户之前点击过拒绝授权,打开用户设置模态框
									that.isShowOpen = true;
								},
							})
						}
					}
				})
			},
                
            // 4.打开设置
			openSetting(){
				const that = this;
				uni.openSetting({
					success: (res) => {
						console.log("打开设置成功", res);
						if (res.authSetting['scope.userLocation']) {
							console.log('成功授权userLocation')
							// 5.用户在设置中点击了允许,调用选择位置信息函数
							that.chooseLocation();
						} else {
							console.log('用户未授权userLocation')
                            // 5.用户在设置中点击了不允许,展示拒绝授权信息
							uni.showToast({
								title: '你拒绝了授权,无法操作内容',
								icon: 'none',
								duration: 3000,
							})
						}
					},
					fail: (err) => {
						console.log("打开设置失败", err)
					}
				})
			},


			// 选择位置信息
			chooseLocation() {
				uni.chooseLocation({
					success: (res) => {
						console.log("选择位置信息", res)
						this.address = res.address + res.name
						this.lat = res.latitude
						this.lng = res.longitude
					},
					fail(err) {
						console.log("选择位置信息失败或者点击了取消按钮", err)
					},
				})
			},
                
            
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序获取位置权限用户拒绝授权后重新引导用户授权 的相关文章

  • vue中的防抖和节流

    在Vue中 防抖和节流是两种常用的优化技术 用于限制事件的触发频率 以提高页面性能 防抖 Debounce 是指在事件被触发后 等待一段时间后再执行回调函数 如果在这段等待时间内 事件又被触发 则重新计时 防抖通常用于限制重复触发频率较高的
  • vue的组件

    在Vue中 组件是可复用的代码块 用于构建用户界面 Vue的组件系统允许您将界面拆分为独立的 可重复使用的部件 提供了更好的代码组织和复用性 以下是在Vue中创建组件的基本步骤 创建一个组件实例 可以使用Vue extend 方法创建一个V
  • 从three.js旋转动画,我了解了requestAnimationFrame

    前言 大家好 我是南木元元 热衷分享有趣实用的文章 希望大家多多支持 一起进步 个人主页 南木元元
  • ECMAScript简介及特性介绍

    ECMAScript 简称ES 是JavaScript的规范 同时也是被广泛采用和实现的脚本语言标准 从最初的1996年推出第一版至今 ECMAScript已经经历了数十年的发展和改进 成为了互联网开发中的重要基石之一 本文将对ECMASc
  • ❤ Vue3 使用

    Vue3 使用 Vue3之toRefs的使用 作用 toRefs 可以将一个响应式的对象 转换成普通对象 但是转换后的普通对象的每一个属性值都是响应式的 这样我们可以使用es6的对象解构或者三点运算符等操作 代码
  • 接口测试之Fiddler弱网测试

    前言 目前市面上的APP功能越来越丰富 移动端测试也越显为重要 因为用户在网速慢的情况下 你的网站 软件 总能出现各种各样的问题 请不要忽略这一点 针对在不同的网络情况下 接下来 本篇要讲述的就是在通过fiddler对APP进行模拟弱网测试
  • 【连续和自适应资源需求估计】通过不断应用在线优化、选择和估计,SARDE能够有效地适应在线跟踪,并使用得到的集成技术减少模型误差(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据 文章
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • 微信小程序的自动化测试框架

    微信发布了小程序的自动化测试框架Minium 提供了多种运行验证方式 其特点 支持一套脚本 iOS Android 模拟器 三端运行 提供丰富的页面跳转方式 看不到也能去得到 可以获取和设置小程序页面数据 让测试不止点点点 可以直接触发小程
  • 【计算机毕业设计】毕业生就业管理微信小程序_lm9q0

    腾讯公司在2017年1月19日发布了一款不需要下载 不需要卸载 不需要存储的软件叫微信小程序 受到了很多人的喜欢 微信小程序自2017年发布至今 依托微信的社交属性和庞大的用户基数 已经渗透到生活的方方面面 1 微信小程序可以将基于微信平台
  • 【计算机毕业设计】微信小程序反诈科普平台

    相比于以前的传统手工管理方式 智能化的管理方式可以大幅降低反诈科普平台的运营人员成本 实现了反诈科普平台的标准化 制度化 程序化的管理 有效地防止了反诈科普平台的随意管理 提高了信息的处理速度和精确度 能够及时 准确地查询和修正反诈科普 一
  • HTML概述、基本语法(表格整理、标签、基本结构)

    一 HTML概述 HTML指的是超文本标记语言 超文本 是指页面内可以包含图片 链接 声音 视频等内容 标记 标签 通过标记符号来告诉浏览器页面该如何显示 我们可以打开浏览器 右击页面 点击 查看网页源代码 来方便了解HTML标签通过浏览器
  • JVM优化之 -Xss -Xms -Xmx -Xmn 参数设置

    JVM优化之 Xss Xms Xmx Xmn 参数设置 XmnXmsXmxXss有什么区别 Xmn Xms Xmx Xss都是JVM对内存的配置参数 我们可以根据不同需要区修改这些参数 以达到运行程序的最好效果 Xms 堆内存的初始大小 默
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 每日变更的最佳实践

    在优维公司内部 我们采用发布单的方式进行每天的应用变更管理 这里给各位介绍优维的最佳实践 变更是需要多角色合作的 而且他是整体研发流程的一部分 在优维内部 我们坚持每日变更 打通开发环节到最终发布上线的全过程 在保证质量的前提下 尽可能提升
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser
  • 【前端】canvas图片加文字

    注释标记了操作步骤 import React Component createRef from react class CertifyImgRender extends Component bgRef createRef

随机推荐

  • PLC工程师必备知识— IO模块选型和使用(上篇)

    概述 我们在使用PLC IO模块的时候 高频率会遇到一些与IO有关的用法和功能 有与IO模块型号中特定符号有关的 有与IO模块特性有关的 它们都与选型和使用息息相关 下面就从几个方面为大家一一介绍 由于本次内容较多 所以分为上下两篇来介绍
  • XCode14 & iOS16 适配问题汇总

    Tips iOS 16 真机调试时需要在设备的设置 gt 隐私与安全 gt 开发者模式中打开开发者模式 适配内容 新增控件内容 UICalendarView 显示日期支持单选与多选 UIPasteControl 读取剪贴板中的内容 跨 Ap
  • 【蓝桥杯】1246. 等差数列*

    穿越隧道 计算每两项差值之间的最大公因数 最后的值则为数列的等差 include
  • 2023年最新Python所有方向的学习路线图,让Python初学者少走弯路

    在放学习路线之前 我先来讲一下这个学习路线图有什么作用 避免有些新手看得云里雾里的 学习路线图上面写的是某个方向建议学习和掌握的知识点汇总 举个例子 如果你要学习爬虫 那么你就去学Python爬虫学习路线图上面的知识点 这样学下来之后 你的
  • Android http安全之网络编程和证书

    最近面试上市大公司遇到的问题 网络安全底层与fiddler证书 我只想吐槽果然不缺人 上篇劫持的第二篇研究总结 如果通常网络我们使用常用的开源框架 然后设置通用的异步同步通信等格式 但是底层呢 这个我们常说只有面试的时候会用到 那如果想要黑
  • 开发参考资料

    一 开发环境 Ubuntu gt 20 04 x64 arm64 Visual Studio gt 2019 二 参考资料 OpenCV 官方文档 https opencv org releases Qt6 下载地址 https mirro
  • Vue中使用原生js创建元素样式不生效解决办法

    在Vue项目中也会遇到需要动态创建DOM的情况 但是采用指定className的方式给创建的DOM元素指定样式不起作用 在调试界面能看到类名被解析 但是样式未加载 三天里尝试了N种方法 终于填了这个大坑 有需要的可以参考一下 measure
  • 概念解析

    注1 本文系 概念解析 系列之一 致力于简洁清晰地解释 辨析复杂而专业的概念 本次辨析的概念是 CLIP和BLIP模型 揭秘视觉与语言交叉模型 CLIP和BLIP的介绍 LB 0 45836 BLIP CLIP CLIP Interroga
  • 让你的微信小程序具有在线支付功能

    最近需要在微信小程序中用到在线支付功能 于是看了一下官方的文档 发现要在小程序里实现微信支付还是很方便的 如果你以前开发过服务号下的微信支付 那么你会发现其实小程序里的微信支付和服务号里的开发过程如出一辙 下面我就具体说一下小程序里微信支付
  • JS限制Textarea文本域字符个数

  • overlay(VLAN,VxLAN)、underlay网络、大二层概述

    一 网络类型 1 第一种网络 网络分为物理网络和虚拟网络 物理网络就是对物理交换机 物理路由器 物理防火墙 物理负载均衡器 物理行为管理设备组成的网络 就叫做物理网络 虚拟网络 一般指虚拟交换机 虚拟路由器 虚拟防火墙 虚拟负载均衡器 虚拟
  • 企业子网划分详解

    一 IP协议 1 IP协议简介 IP协议是TCP IP协议族的基石 它为上层提供无状态 无连接 不可靠的服务 也是Socket网络编程的基础之一 IP协议特点 无状态 指IP通信双方不同步传输数据的状态信息 因此所有IP数据报的发送 传输
  • 如果XML文件太大(10M),打开方式选择

    用UltraEdit打开 其他的例如Editplus和notepad 根本打不开上百M的文件 一打开就死了
  • 小白入门必看——idea中JAVA配置

    java基础篇 首先需要大家下载idea 这里楼主为大家提供idea官网 供大家使用 idea官网 点这里 文章目录 java基础篇 前言 一 为什么要安装jdk 二 配置步骤 1 创建时配置 2 创建好后导入JDK 总结 前言 在idea
  • Ubantu使用kubeadm部署kubernetes1.25.10+cri-docker

    基于Ubantu系统的k8s集群搭建 文章目录 前言 一 Kubernetes是什么 二 环境准备 依赖添加 三节点操作 三 修改初始化文件 配置初始化 Master节点 Node节点 四 安装Calio网络插件 Master节点 总结 前
  • vant 做表格_Vant Cell 单元格

    引入import Vue from vue import Cell CellGroup from vant Vue use Cell Vue use CellGroup 代码演示 基础用法 Cell可以单独使用 也可以与CellGroup搭
  • 服务器组装 华硕主板,专业组装服务器 华硕主板P9D-C/4L热销

    中关村在线西安行情 华硕P9D C 4L是一款新推出的高性能主板 小编了解到在商家 西北服务器配件批发中心 正在热销中 报价仅1980元 用兴趣的朋友不妨与商家联系 图为 华硕P9D C 4L 华硕P9D C 4L产品简介 出色的 I O扩
  • 实战:win10安装docker并用docker-compose构建运行容器

    文章目录 前言 Docker Desktop Hyper V 安装 Docker Desktop for Windows 下载docker desktop Docker安装目录软连接 运行Docker Desktop安装文件 Docker
  • SpringBoot中静态变量注入方案,一网打尽

    前言 Hi 大家好 我是麦洛 昨天同事来找我 说自己想使用 Value注解来注入值 但是发现注入不进去 想让我帮忙看看 研究了一番 最后发现是 Value注解无法注入静态变量 下面我们一起来回顾一下本次的bug 普通变量 首先我们来看看 如
  • 微信小程序获取位置权限用户拒绝授权后重新引导用户授权

    微信小程序获取位置权限用户拒绝授权后重新引导用户授权 解决问题 微信小程序获取位置权限 用户点击允许后直接地图选点 或者用户拒绝授权后引导用户到设置页面重新授权 需要代码可直接滑至页面底部 调用方法 1 利用uni getSetting 获