关于小程序授权地理位置(wx.getLocation + 用户体验)
wx.getLocation 如果用户曾点击过一次 “确认授权” ,
那么再次调用该接口时将不会出现弹出框(可以直接拿到经纬度)
关于用户体验:
在 onLoad 中判断:
如果用户之前“没有触发过“授权地理位置事件,则发起请求授权-----> 如果同意授权,直接拿到经纬度处理逻辑;
如果不同意,则弹出自定义模态框进行提示,如果用户同意就打开setting页面;如果还不同意,就执行默认事件(用户不授权的逻辑)
wx.getSetting({
success: function(res){
if (typeof (res.authSetting['scope.userLocation']) == "undefined") { // 从未触发过授权的情况
wx.getLocation({ // 用户同意授权地理位置
success: function (res) {
that.setData({
latitude: res.latitude,
longitude: res.longitude
});
that.getShopInfo_nearby(res.latitude, res.longitude);
},
fail: function (err) { // 用户拒绝授权地理位置
wx.showModal({//弹出模态框,询问
title: '是否授权当前位置',
content: '如需正常使用本程序,请按确定并在授权管理中选中“地理位置”,然后点按返回即可正常使用。',
cancelColor: '#f00',
success: function (res) {
if (res.confirm) {//同意授权
wx.openSetting({})
} else if (res.cancel) {//不同意授权,进行普通查询
mac = '08:D8:33:7C:5E:5';
that.getShopInfo(mac);
}
}
})
}
})
}
}
})
在 onShow 中:先检查用户授权状态,如果“曾经触发过“地理位置授权事件,但没有确认授权,就弹出自定义模态框进行询问(同意->setting页面; 不同意-> 走不同意的逻辑);
如果授权过了,则直接使用wx.getLocation 获取经纬度拿到经纬度处理逻辑(此时不会再触发弹框)
wx.getSetting({//检测用户权限
success: (res) => {
if (res.authSetting['scope.userLocation'] == false) { // 地理位置授权 触发过但没有授权
wx.showModal({//弹出模态框,询问
title: '是否授权当前位置',
content: '如需正常使用紫燕到家设备,请按确定并在授权管理中选中“地理位置”,然后点按返回即可正常使用。',
cancelColor: '#f00',
success: function (res) {
if (res.confirm) {//同意授权
wx.openSetting({})
} else if (res.cancel) {//不同意授权,进行普通查询
mac = '08:D8:33:7C:5E:5';
that.getShopInfo(mac);
}
}
})
} else if (res.authSetting['scope.userLocation'] == true){ // 地理位置授权过了
wx.getLocation({
success: function(res) {
that.getShopInfo_nearby(res.latitude, res.longitude);
},
})
}
}
})
1
关于小程序授权地理位置(wx.getLocation + 用户体验)的更多相关文章
- 小程序 获取地理位置-- wx.getLocation
话不多说直接上栗子 //首先声明变量data:{ showLocationAuth:fasle } //这是第一种逻辑实现方式 点击按钮//当第一次点击授权按钮,用户取消授权之后,就会显示 授权当前定 ...
- 小程序授权怎么写 , 用户点击取消授权 调用 wx.authorize
点击获取授权 onLoad: function (options) { console.log("onLoad====="); var that=this; wx.getUserI ...
- 小程序----选择地理位置 ( wx.chooseLocation ) 和 获取地理位置 (wx.getSetting)
问题来了:假如我第一次使用wx.chooseLocation()获取权限被拒绝,然后使用wx.getSetting()来重新获取权限该怎么做呢? 思路:wx.chooseLocation()有fail ...
- 微信小程序获取地理位置授权
微信小程序获取地理位置授权,首先需要在app.json中添加配置: "permission": { "scope.userLocation": { " ...
- 微信小程序API 登录-wx.login(OBJECT) + 获取微信用户唯一标识openid | 小程序
wx.login(OBJECT) 调用接口获取登录凭证(code)进而换取用户登录态信息,包括用户的唯一标识(openid) 及本次登录的 会话密钥(session_key).用户数据的加解密通讯需要 ...
- 微信 公众号 小程序 授权 unionid 用户信息 实验总结
-*-*-*-*-*-*-*-*-*--*-*-*-1.小程序通过code获取用户openid的接口,如果用户曾经授权并未过期,或者用户关注过同主体的公众号,会带回unionID,但没有用户头像等信息 ...
- 微信小程序获取地理位置
小程序只支持获取当前位置的经纬度,并不能直接获取到地理名称,需要通过第三方来逆地址解析,这里我选择的是腾讯位置服务 在使用前需要去申请key,这里是地址:https://lbs.qq.com/cons ...
- 微信小程序登录流程及解析用户openid session_key,获取用户信息
为优化用户体验,使用 wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持.从2018年4月30日开始,小程序与小游戏的体验版.开发版调用 wx.getUserInfo 接口,将无 ...
- 微信小程序+微信管理后台+微信用户前台
代码地址如下:http://www.demodashi.com/demo/15043.html #### 微信小程序+微信管理后台+微信用户前台 #### 产品介绍 基础功能开发:景区微信地图导游.天 ...
随机推荐
- ARM 链接脚本分析
分析连接脚本的语法规则 /* ---------------------------------------------------------------------------- * Memory ...
- c# Mono.Cecil IL方式 读MethodBody
using Kufen.Common.Definitions; using Mono.Cecil; using System; using System.Collections.Generic; us ...
- awk:for循环输出文件名
简单来说,有file1.txt, file2.txt, file3.txt file1.txt如下: 1 a 4 d d g file2.txt如下: 2 b g 6 9 0 file3.txt如下: ...
- 封装redis操作 php版本
<?php namespace App\Service; use App\Service\BaseService; use Illuminate\Support\Facades\Redis; / ...
- 【linux基础】如何配置ubuntu系统为静态IP地址
前言 连接远程server重启的时候发现IP发生变化,影响远程连接,此时,需要将server配置为静态IP. 系统环境 ubuntu16.04 操作过程 1. 设置IP和DNS command sud ...
- bridge和原生交互的简单用法
首先获取当前环境是ios还是Android var u = navigator.userAgent; var isAndroid = u.indexOf('Android') > -1 || u ...
- Linux内核中的双向链表struct list_head
一.双向链表list_head Linux内核驱动开发会经常用到Linux内核中经典的双向链表list_head,以及它的拓展接口和宏定义:list_add.list_add_tail.list_de ...
- BJFU-216-基于链式存储结构的图书信息表的修改
#include<stdio.h> #include<stdlib.h> #define MAX 100 typedef struct Book{ double no; cha ...
- LeetCode 1253. 重构 2 行二进制矩阵 - Java - 统计
题目链接:https://leetcode-cn.com/contest/weekly-contest-162/problems/reconstruct-a-2-row-binary-matrix/ ...
- Unity 代码提示符和UGUI屏幕自适应
[Header]("提示字符") Canvas Scaler 屏幕自适应