设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权)
Posted 子钦加油
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权)相关的知识,希望对你有一定的参考价值。
这个API解决了过去一个长久以来无法解决的问题,如何让用户重复授权;
打开小程序的设置界面:就是主动调取授权
目前资料极少,但是已经可以让大家先看看了;
官方文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/setting.html#opensettingobject
基础库版本 1.1.0 开始支持,低版本需做兼容处理调起客户端小程序设置界面,返回用户设置的操作结果
scope 说明:
scope | 对应接口 |
scope.userInfo | wx.getUserInfo |
scope.userLocation | wx.getLocation, wx.chooseLocation |
scope.address | wx.chooseAddress |
scope.record | wx.startRecord |
相关文章:
微信小程序重新调起授权用户信息,扫码进入小程序获取二维码携带参数
wx.openSetting,wx.setClipboardData,wx.getClipboardData
微信小程序最新更新--api测试一览
微信小程序之新版本测试
相关讨论:
wx.openSetting()怎么判断success里面 用户有没有授权了我写的
[AppleScript] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
|
wx.openSetting ( { success : ( res ) = > { console. log ( "授权结果.." ) console. log ( res ) if ( !res.authSetting.scope.userInfo || !res.authSetting.scope.userLocation ) { applyNotice ( ) } } } ) |
[AppleScript] 纯文本查看 复制代码
123456789wx.openSetting
(
{
success
:
(
res
)
=
>
{
console.
log
(
"授权结果.."
)
console.
log
(
res
)
if
(
!res.authSetting[
"scope.userInfo"
] || !res.authSetting[
"scope.userLocation"
]
)
{
applyNotice
(
)
}
}
}
)
试试上述改动。
打印出来的console的可以判断了,对象还可以像数组一样键值调用,谢谢啦!
相关讨论:
用户取消后如何再次调出允许授权的modal?
如果用户错点了拒绝,就没办法再继续进入使用小程序了。能重新再调出许可的小窗让用户重新再选择吗?
答:林超
使用 wx.openSetting接口
相关讨论:
关于用户授权界面的唤醒
用户如果不小心拒绝了授权,之前是过十分钟之后还可以被唤醒,最近发现唤不醒了,一直是:"getUserInfo:fail auth deny",该如何应对?
答:Tïedào
用户如果不小心拒绝了授权,之前是过十分钟之后还可以被唤醒,最近发现唤不醒了,一直是:"getUserInfo:fail auth deny",该如何应对?
答:Tïedào
//如下,在getUserInfo失败后调用wx.openSetting即可
如下是我的真实示例:
// pages/contactus/contactus.js var app = getApp() Page({ /** * 页面的初始数据 */ data: { loadingHidden: false, latitude: 23.099994, longitude: 113.324520, markers: [{ iconPath: ‘../../images/location.png‘, id: 1, latitude: 31.245442, longitude: 121.506337, title: ‘千卉摄影‘, width: 50, height: 50, callout: { content: ‘千卉摄影‘, color: ‘#ff00000‘, fontSize: ‘18‘, borderRadius: ‘5‘, bgColor: ‘#ffffff‘, padding: ‘10‘, display: ‘ALWAYS‘, textAlign: ‘center‘ } }], }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var that = this wx.getSystemInfo({ success: function (res) { // console.log(res) that.setData({ scrollHeight: res.windowHeight }); } }); wx.getSetting({ success(res) { console.log(!res.authSetting[‘scope.userLocation‘]); if (!res.authSetting[‘scope.userLocation‘]) { wx.authorize({ scope: ‘scope.userLocation‘, success() { // 用户已经同意 //其他操作... console.log("用户已经同意位置授权"); }, fail() { console.log("用户已经拒绝位置授权"); that.openConfirm();//如果拒绝,在这里进行再次获取授权的操作 } }) } //其他操作.. } }); }, //当用户第一次拒绝后再次请求授权 openConfirm: function () { wx.showModal({ content: ‘检测到您没打开此小程序的定位权限,是否去设置打开?‘, confirmText: "确认", cancelText: "取消", success: function (res) { console.log(res); //点击“确认”时打开设置页面 if (res.confirm) { console.log(‘用户点击确认‘) wx.openSetting({ success: (res) => { } }) } else { console.log(‘用户点击取消‘) } } }); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function (e) { this.mapCtx = wx.createMapContext(‘myMap‘) }, /** * 生命周期函数--监听页面显示 */ onShow: function () { var that = this app.reqGetfunc.reqGet(‘qh_contact.html‘, {}, function (res) { // console.log(res) that.setData({ tel: res.tel, address: res.address, map: res.map, qq: res.qq, wechat: res.wechat, code: res.code, loadingHidden: true }) }) }, getLocation:function(){ var that = this wx.getSetting({ success(res) { console.log(res) if (!res.authSetting[‘scope.userLocation‘]) { wx.authorize({ scope: ‘scope.userLocation‘, success() { // 用户已经同意小程序使用此功能,后续调用 wx.getLocation 接口不会弹窗询问 wx.getLocation({ type: ‘gcj02‘, success: function (res) { //console.log(res) var latitude = res.latitude var longitude = res.longitude var speed = res.speed var accuracy = res.accuracy console.log("latitude:" + latitude) console.log("longitude:" + longitude) console.log("speed:" + speed) console.log("accuracy:" + accuracy) wx.openLocation({ name: ‘山东省‘, address: ‘山东省临沂市千卉摄影‘, //latitude: latitude, //longitude: longitude, latitude: Number(that.data.map.latitude), longitude: Number(that.data.map.longitude), scale: 28 }) } }) }, fail() { console.log("用户已经拒绝位置授权"); that.openConfirm();//如果拒绝,在这里进行再次获取授权的操作 } }) } } }) }, chooseLocation:function(){ wx.getSetting({ success(res) { if (!res.authSetting[‘scope.userLocation‘]) { wx.authorize({ scope: ‘scope.userLocation‘, success(){ wx.chooseLocation({ success: function (res) { var name = res.name var address = res.address var latitude = res.latitude var longitude = res.longitude } }) } }) } }, fail() { console.log("用户已经拒绝位置授权"); that.openConfirm();//如果拒绝,在这里进行再次获取授权的操作 } }) }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { } })
以上是关于设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权)的主要内容,如果未能解决你的问题,请参考以下文章
小程序获取地址授权的修改 wx.openSetting需点击