专栏首页hotqin888的专栏小程序拒绝获取位置信息后,引导用户再授权

小程序拒绝获取位置信息后,引导用户再授权

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/details/89647291

网上这类文章挺多,可惜不符合我的需求。官方的文档也是非常地奇葩。就是当用户首次打开小程序,会请求用户授权获取地理位置,当用户拒绝授权获取位置后,在需要用户地理位置的时候(比如打卡),要提供一个按钮来触发用户授权,当用户点击按钮,来到授权设置页面,点击授权后,返回,这时候,授权按钮隐藏掉。

基本概念:用户第一次使用wx.getLocation,会自动弹出授权卡,拒绝一次后,下次再调用wx.getLocation就不会自动弹出授权框了。可以在fail里获得这个反馈情况,但是,你获得了反馈情况,还是不能弹出授权框,有些要求必须是通过点击按钮才行,比如getUserinfo,有些必须是用openSetting设置小程序权限才行,而openSetting不会显示全部的授权,只显示被你拒绝过的授权,所以,要提前尝试获取用户授权,如果用户同意,则全局变量给它赋值true,如果用户拒绝,则在需要的地方,想办法再引导用户授权,通过按钮,getUserinfo直接可以授权,而getLoaction就必须通过openSetting小程序权限设置页面才能继续授权。很绕了。

知识点一:

wx.getLocation(Object object)

调用前需要 用户授权 scope.userLocation

获取当前的地理位置、速度。当用户离开小程序后,此接口无法调用。

——意思就是说调用这个接口,第一次会自动弹出授权框,但它没说第二次不自动弹出,看下面:

知识点二:

授权

部分接口需要经过用户授权同意才能调用。我们把这些接口按使用范围分成多个 scope ,用户选择对 scope 来进行授权,当授权给一个 scope 之后,其对应的所有接口都可以直接使用。

部分接口需要获得用户授权同意后才能调用。此类接口调用时:——到底哪些啊??

  • 如果用户未接受或拒绝过此权限,会弹窗询问用户,用户点击同意后方可调用接口;
  • 如果用户已授权,可以直接调用接口;
  • 如果用户已拒绝授权,则不会出现弹窗,而是直接进入接口 fail 回调。请开发者兼容用户拒绝授权的场景。

获取用户授权设置

开发者可以使用 wx.getSetting 获取用户当前的授权状态。

打开设置界面

用户可以在小程序设置界面(「右上角」 - 「关于」 - 「右上角」 - 「设置」)中控制对该小程序的授权状态。——很少这样去用。

开发者可以调用 wx.openSetting 打开设置界面,引导用户开启授权。——肯定是这个比较人性。

提前发起授权请求

开发者可以使用 wx.authorize 在调用需授权 API 之前,提前向用户发起授权请求

知识点三:

wx.getSetting(Object object)

基础库 1.2.0 开始支持,低版本需做兼容处理

获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限

wx.openSetting(Object object)

基础库 1.1.0 开始支持,低版本需做兼容处理

调起客户端小程序设置界面,返回用户设置的操作结果。设置界面只会出现小程序已经向用户请求过的权限

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

<button wx:if="{{!hasLocation}}" open-type="openSetting" bindopensetting="callback">打开设置页</button>
  callback: function (res) {
    console.log(res)
    console.log(res.detail.authSetting['scope.userLocation'])
    // detail:
    //  authSetting:
    //   scope.userInfo:false
    //   scope.userLocation:false
    if (res.detail.authSetting['scope.userLocation']){
      this.setData({
        hasLocation:true
      })
    }
  }

打开小程序设置页(wx.openSetting)接口调整官

微信团队2018-09-1241255浏览

开发者可以通过 wx.openSetting 接口来打开小程序设置界面并返回用户的设置结果。在原来的 wx.openSetting 接口中,我们允许开发者直接调用此接口,但目前我们发现有不少开发者滥用此接口,使用户在无任何操作时,不断地强行跳转至设置页,导致用户无法正常使用甚至无法退出小程序。

为保证用户获得更顺畅的小程序使用体验,避免此类滥用情况,我们对该接口进行了调整。

调整后“打开小程序设置页”将支持以下两种实现方式:

  • 方法1:使用 button 组件来使用此功能,示例代码如下: <button open-type="openSetting" bindopensetting="callback">打开设置页</button>
  • 方法2:由点击行为触发wx.openSetting接口的调用,示例代码如下: <button bindtap="openSetting">打开设置页</button>  openSetting() {  wx.openSetting()} 方法2已在最新版开发者工具中支持(基础库切到2.2.4及以上),开发者可以尽早适配。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用beego vue.js element axios 写flow办公流程——系列六(终)

    最终结果就是:显示document列表,点击详细,进人detail页面进行传递操作,即,修改文档状态。

    hotqin888
  • beego微信小程序登录、确权、解密

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • fullcalendar搜索事件并定位以及跳转到指定年月

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

    hotqin888
  • linux基础命令3

    显示命令的路径 # which ls alias ls='ls --color=auto' /bin/ls 关机命令 # shutdown -r +5 Bro...

    零月
  • phpstorm 与服务器保持更新

    说起来自己也已经折腾这个网站折腾了几个月了,但是每次更改都要从服务器上把网站文件拽下来,编辑,再放回去(是在是用不惯linux上的vim...配置成本太高......

    idealclover
  • CRM软件巨头Salesforce将成为风投界一大猛虎?

    在硅谷寻找一个有前途的初创公司是一个极具挑战性的工作,如果你的老板还是这一领域最引人注目的从业人员之一的话,难度就更大了。

    臭豆腐
  • 浅谈SDN架构下的运维

    目前国内的网络运维还处于初级阶段,工作人员每天就像救火一样,天天疲于奔命。“什么破网络怎么又断了”,“我去,服务器宕机啊”,“这个网速慢的跟乌龟爬的一样”,这些...

    SDNLAB
  • 网络基础知识

    1)以太网:采用CSMA/CD的媒体介入方法,速率为10Mb/s,地址为48 bit;

    用户1396155
  • 利用AutoSPSourceBuilder和Autospinstaller自动安装SharePoint Server 2013图解教程——Part 2

    操作系统要求 Windows Server 2012 安装SharePoint前准备 当安装了Windows Server 2012后,你需要做如下事情: 给你...

    用户1161731
  • 【玩转腾讯云】2.安装Visual Studio插件Visual Assist

    前一篇文章中我们已经把 Visual Studio 2015 安装 好了,先别急的敲代码 Hello World ,首先我们还得装个Visual Assist插...

    猿说编程[Python和C]

扫码关注云+社区

领取腾讯云代金券