小程序中首次获取位置权限失败后,主动引导用户授权方案

最近做的"湖北垃圾治理"小程序

初次进入监督举报页面后,会使用  wx.getLocation 调起用户的位置授权,

如果点击允许,则能在地图上显示当前定位;但是当用户点击取消后,就无法正常使用地图定位功能。

并且小程序会记录用户的这个授权设置,除了删除小程序再重新进入,否则位置权限就一直无法获得,地图一直无法定位。

因此我们需要主动引导用户给予位置权限。以下是代码:

onLoad() {
    wx.getLocation({
      type: "wgs84",
      success(res) {
        //如果首次授权成功则执行地图定位操作,具体实现代码与此文无关,就不贴出
      },
      fail: function(res) {
        //授权失败
        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
                          });
                          wx.getLocation({
                            //通过getLocation方法获取数据
                            type: "wgs84",
                            success(res) {
                              //成功的执行方法
                            }
                          });
                        }
                      }
                    });
                  } else {
                    //点击取消按钮,则刷新当前页面
                    wx.redirectTo({
                      //销毁当前页面,并跳转到当前页面
                      url: "index" //此处按照自己的需求更改
                    });
                  }
                }
              });
            }
          },
          fail: function(res) {
            wx.showToast({
              title: "调用授权窗口失败",
              icon: "success",
              duration: 1000
            });
          }
        });
      }
    });
  }

 上述代码可以每次进入页面时,进行弹窗询问,点击取消则会不断刷新弹窗提醒用户授予位置权限。代码可以直接使用。

原文地址:https://www.cnblogs.com/liuwei54/p/10911091.html

时间: 2024-07-31 20:55:37

小程序中首次获取位置权限失败后,主动引导用户授权方案的相关文章

微信小程序中如何获取for循环的item相关值到JS页面的问题

今天小程序开发过程中,遇到了这个棘手的问题.由于我没有前段基础,只是知道一点儿基本的HTML标签,所以卡了好久,特此分享,望后来的你,可以有所收获. measure WXML:在view中定义一个变量,将item或者item的部分值存起来 js:在绑定的事件中通过e.currentTarget.变量名,来获取值,再做其他的搜索等处理. 原文地址:https://www.cnblogs.com/yocichen/p/10349339.html

WKWebView中HTML5获取位置失败

WKWebView中HTML5获取位置失败,在info.plist文件中添加以下代码打开网页时就会询问是否允许获取位置信息了. <key>NSLocationAlwaysUsageDescription</key> <true/> <key>NSLocationWhenInUseUsageDescription</key> <true/> IOS9开始所有网页及服务默认都要用ssl,如果想用普通的http请求的话,可以加上以下配置,这

微信小程序中获取高度及设备的方法

由于js中可以采用操纵dom的方法来获取页面元素的高度,可是在微信小程序中不能操纵dom,经过查找之后发现仅仅只有以下几个方法可以获取到高度 wx.getSystemInfoSync().windowWidth // 获取当前窗口的宽度 wx.getSystemInfoSync().windowHeight // 获取当前窗口的高度 wx.getSystemInfoSync().model // 获取当前采用的设备 wx.getSystemInfoSync().pixelRatio wx.get

移动开发之【微信小程序】的原理与权限问题以及相关的简易教程

这几天圈子里到处都在传播着这样一个东西,微信公众平台提供了一种新的开放能力,开发者可以快速开发一个小程序,取名曰:微信公众平台-小程序 据说取代移动开发安卓和苹果,那这个东东究竟是干吗用的?但很多人觉得是网页版应用. 有的人很鸡冻,但是--最后文章会提及具体的权限开放问题,所以,还是保持一颗冷静的?比较好. 那我们先来看看组件和API开放了哪些服务: 视图容器:视图(View).滚动视图.Swiper 基础内容:图标.文本.进度条 表单组件:按钮.表单等等 操作反馈 导航 媒体组建:音频.图片.

【小程序+ thinkphp5】 获取微信运动数据

配置.请参看上篇文章.这里直接上代码 PHP 代码: //获取微信运动数据: public function test(){ $code = input("code"); $signature = input("signature"); //数据签名 $rawDate = $_GET['rawData']; //记住不应该用TP中的input方法,会过滤掉必要的数据 $encryptedData = $_GET['encryptedData']; //微信运动数据

WePY 在手机充值小程序中的应用与实践

wepyjs 发布了两个月了,中间经历了很多版本更新,也慢慢开始有一些用户选择 wepyjs 作为开发框架来开发小程序,比如一些线上小程序. 以及一些来自网上的 wepyjs 的相关资源: demo源码: one,图书管理系统 组件:图表控件 因此我也将手机充值小程序在开发过程中 wepyjs 的应用心得分享出来,可以参照对比与传统小程序开发上的差异. 说明:本文不涉及到 wepyjs 的使用与说明,如果需要请参看我的另一篇文章 "打造小程序组件化开发框架" 或直接参看wepyjs 项

蓝牙在小程序中的应用

1. 背景介绍 蓝牙是爱立信公司创立的一种无线技术标准,为短距离的硬件设备提供低成本的通信规范.蓝牙规范由蓝牙技术联盟(Bluetooth Special Interest Group,简称SIG)管理,在计算机,手机,传真机,耳机,汽车,家用电器等等很多场景广泛使用.蓝牙具有以下一些特点: (1) 免费使用:蓝牙技术免费使用,并且使用的工作频段在2.4GHz的工科医(ISM)频段,无需申请许可证. (2) 功耗低:BLE4.0包含了一个低功耗标准(Bluetooth Low Energy),可

微信小程序之动态获取元素宽高

我以前一直以为微信小程序不能动态获取view元素的宽高.但是自从看到: wx.createSelectorQuery() 这个api接口,以前的某些问题就能得到解决了... 那么,这个api接口怎么用呢? 首先,这个接口会返回一个对象实例. var obj=wx.createSelectorQuery(); 下面的就是返回的对象实例 obj 的所有内容. 返回的 obj 有五个方法: 1.  obj.in(component):没用过这个方法,多用于组件的选择器. 2.   obj.select

在微信小程序中使用LeanCloud(一)

之前学习了微信小程序前端,使用到LeanCloud线上数据库 [传送门].作为一个前端开发人员,了解后端及数据库是学习工作的需要. LeanCloud直接登录,未注册直接创建账户.它是一款免费的线上数据库(开发版免费).适用于一些想自己写微信小程序前端但不太会后端的开发者学习用.本篇文章涉及数据存储服务(增删查改). 首先,下载一个JavaScript-sdk :av-weapp-min.js[下载链接],它是在微信小程序中使用此数据库的关键文件.下载之后,保存至项目路径,这里以'/libs/a