微信小程序之获取用户位置权限(拒绝后提醒)

微信小程序获取用户当前位置有三个方式:

1. wx.getLocation(多与wx.openLocation一起用)
  获取当前的精度、纬度、速度。不需要授权。当type设置为gcj02 返回可用于wx.openLocation的坐标
2. wx.chooseLocation
  需要授权,打开地图选择位置

  第一次调用方法时先出现

  

  允许权限之后之后再出现

  

  如果第一次就不允许,则一直调用wx.chooseLocation的fail方法

 3. wx.openLocation

  需要授权,使用微信内置地图查看位置。多半用于查看起点到终点的路线怎么走

  

 授权方法有三种:

1. wx.getSetting
  获取用户的当前设置,返回值中只会出现小程序已经向用户请求过的权限,类似下面的样子

  

2. wx.openSetting

  调起权限设置选择界面,设置界面只会出现小程序已经向用户请求过的权限,类似下面的样子

  

 3. wx.authorize

  提前向用户发起授权请求。调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。,类似下面的样子

  

  这就是wx.authorize出现的内容

 

问题来了:假如我第一次使用wx.chooseLocation()获取权限被拒绝,然后使用wx.getSetting()来重新获取权限该怎么做呢?

思路:wx.chooseLocation()有fail方法,如果第一次拒绝之后,以后调用选择地图都是触发的这个,那么我可以在fail方法里面,使用wx.getSetting(),这样就每次都能判断是否已经给与了权限了。

第一步:由于有可能会多次使用定位的方法,所以我把定位的方法写到App.js中,方便调用

App({//获取用户地理位置权限getPermission:function(obj){wx.chooseLocation({success: function (res) {    obj.setData({addr: res.address      //调用成功直接设置地址})                },fail:function(){wx.getSetting({success: function (res) {var statu = res.authSetting;if (!statu['scope.userLocation']) {wx.showModal({title: '是否授权当前位置',content: '需要获取您的地理位置,请确认授权,否则地图功能将无法使用',success: function (tip) {if (tip.confirm) {wx.openSetting({success: function (data) {if (data.authSetting["scope.userLocation"] === true) {wx.showToast({title: '授权成功',icon: 'success',duration: 1000})//授权成功之后,再调用chooseLocation选择地方wx.chooseLocation({success: function(res) {obj.setData({addr: res.address})},})} else {wx.showToast({title: '授权失败',icon: 'success',duration: 1000})}}})}}})}},fail: function (res) {wx.showToast({title: '调用授权窗口失败',icon: 'success',duration: 1000})}})}})        },
})

  第二步:在需要获取地址的页面中:

var app = getApp();
Page({data:{addr:'请选择位置'         },//选择获取地理位置getAddress:function(){var that=this;app.getPermission(that);    //传入that值可以在app.js页面直接设置内容    
}, })

 最终效果图:

 最终在手机上获取到的位置偏差不太大。

 


更新     wx.openSetting   的注意事项。

2.3.0 版本开始,用户发生点击行为后,才可以跳转打开设置页,管理授权信息

2.3.0版本之后,我通过上面的wx.showModal的回调函数来调用wx.openSetting 会发生下面的错误:

openSetting:fail can only be invoked by user TAP gesture.

但是我测试 2.2.4 开始 到2.3.1 都会出现上面这种错误。

2.3.2及以上又不会出现这种问题。。。。。。。。

 

而且当我测试2.0.8 到  2.2.3  会出现下面的错误。。。。。。

其它的就没有这问题了。搞不懂。。。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41080.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序之位置信息权限获取和设置界面权限显示

小程序提交审核和发布后,多种机型使用起来发现了一个问题,在小程序设置中没有显示具体的权限信息。如下图所示 当考虑到用户使用小程序时,若缺少对应权限,按照官方案例讲的方式是进行自动导航跳转“设置”页面,让用户手…

微信小程序+权限操作

微信小程序权限操作 在小程序端查询数据(只能查询到用户在小程序中创建的数据,导入的数据是查不到的;要想查到导入的数据需要把数据表中的权限改为所有*用户可读 *) wx.getSetting(Object object) 获取用户的当前设置。返回值中只会出现小程序已经向用户…

【微信小程序】用户授权及getUserProfile接口使用

小程序登录、用户信息相关接口调整说明 为优化用户的使用体验,平台将进行以下调整: 1,2021年2月23日起,若小程序已在微信开放平台进行绑定,则通过wx.login接口获取的登录凭证可直接换取unionID 2&#xff…

微信小程序授权 获取用户信息

小程序在18年4月25日做了一次更新,不再支持直接弹出授权信息框 具体代码请看这里: >> 获取用户信息(用户信息、获取unionId、openId)请移步到这里 用户打开小程序时,直接弹框获取用户信息授权,可能会立马懵圈: 你是谁&#xff1…

微信小程序之获取用户位置权限

微信小程序获取用户当前位置有三个方式: 1. wx.getLocation 注意: 先要在app.json里配置permission: 不然就会出现以下提示(本地测试环境): 配置如下: "permission": {"scope…

发布微信小程序获取收集用户信息权限

前言 在发布微信小程序的时候我们经常会遇到审核不通过的情况,其中一种特别让我头疼就是说小程序收集、使用和储存用户信息。不给予通过。 但是他们的接口又不能提供这个功能,并且老是改动,真的特别的麻烦加无语。有时候审核偷一下懒&#xf…

微信小程序授权登录wx.getUserProfile获取不到昵称及头像解决方案

半年前做的个小程序,更新了二个文字,重新上传审核通过,悲剧了,新用户的昵称全部变为微信用户,头像全部变为默认头像,查了半天代码没找到原因,相当头大,搜了一下文档,尴尬…

小程序中的权限设计

日常我们开发小程序的时候,经常需要考虑权限如何设计,比如在我的页面,管理员可以看到一些菜单,而普通用户可以看到另外一些菜单。那如何设计这种带权限的功能呢?本文就以低代码工具为例,看看低代码中是如何设计小程序的权限的。 1 权限表设计 在通用的RBAC模型中,角色…

chatgpt赋能python:Python画出物体的运动轨迹

Python画出物体的运动轨迹 Python是一种很流行的编程语言,主要用于数据处理、科学计算以及图形绘制。在这篇文章中,我们将探讨如何使用Python画出物体的运动轨迹。 介绍 物体的运动轨迹通常是我们需要关注的问题。当我们在研究物理、机械、运动学、航…

chatgpt赋能python:Python画三维轨迹图:一个引人注目的可视化工具

Python画三维轨迹图:一个引人注目的可视化工具 Python是一种十分适合数据分析及科学计算的编程语言,它的可视化功能非常强大,其中最为出色的一点就是画三维轨迹图。这种图表的本质是一种描绘物体运动轨迹的可视化效果,它可以直观…

英文面试常见问题及回答汇总

今天给大家奉上英文面试常见问题及回答的合集,英语面试主要就是学习如何用英语回答面试常见问题,英文面试常见问题说来说去其实重要的就那么几个,所以今天分享的英文面试常见问题及回答大家只要知道其套路,然后灵活运用就行了。 常…

我的性格类型—— INFP(哲学家型人格 )

测试日期:2019/6/9 基本描述 INFP (Introverted Feeling with Intuition)代表人物:卢梭 语录:虽然我的心既傲慢又温柔,我的性格柔弱,然而,我是不可战胜的。 才储分析:您的性格类型倾向为“…

什么是MBTI,16种人格类型详解

MBTI是Myers-Briggs Type Indicator的缩写,是一种经典的人格类型测评工具,通过对个体心理偏好的测试和分析。 MBTI人格理论认为,人类的人格特征可以从四个角度进行分析:认知功能、信息获取、决策方式和生活方式。每个角度都有两个…

什么是i人,mbti中的i型人格是怎么样的

i人是MBTI总的I型人格,也就是内向型人格(Introversion),在MBTI中是其中一个维度。以下是i人的一些常见特征和倾向: 1、内向和独处:I型人格更倾向于独自思考和独处。他们通常从独立的思考和内省中获取精力和…

MBTI性格测试中的 INTP 型人格

摘要:熟悉心理学的朋友,对mbti都不会陌生。而intp,可以说是一种牌玩得好就是天才,玩得不好境遇会十分惨,两极分化很严重的类型。今天我们来讲讲intp型人格都有哪些特征吧。 先来看看intp类型的人一般的倾向性。 MBTI性…

AI风范,院士点赞丨北京人工智能峰会暨AI金雁奖颁奖典礼成功举办,实在智能再获AI金雁奖

4月14日,由中国电子商会人工智能委员会主办,中国创业者俱乐部、北京集智未来人工智能产业创新基地联合主办的“2023北京人工智能峰会暨AI金雁奖颁奖典礼”举行,汇聚了人工智能各领域的产学研专家、院士、人工智能企业代表近300人,…

危!这回,我真的失业了!

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号,领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇:赞!ChatGPT能接入微信了! 大家好,…

智能化时代的软件工程:拥抱大模型的正确姿势

智能化时代 Foundation Model Software Engineering 软件工程 以ChatGPT为代表的大模型技术对于包括软件工程在内的很多领域都带来了巨大的冲击,也引发了广泛的焦虑。为了在迷雾中看清一点方向,近期我们基于各种技术文献和实践分享以及我们自身的一些初步…

Apple Watch 发布 | 历史上的今天

整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来。 今天是 2023 年 4 月 24 日,中国航天日,在 1970 年的今天,中国第一颗卫星“东方红一号”发射升空。“东方红一号”是我国于 1970 年 4 月 24…

若依前后端分离 使用富文本编辑器 wangEditor

用于 Vue React | wangEditor 组件下载地址 有视频教程 vue版本 2的使用 进入项目cmd输入安装命令 yarn add wangeditor/editor 新建一个文件夹 新建一个文件名字为MyEditor <template><div><div><div class"header-height"><el-bu…