设置API:wx.openSetting,wx.getSetting使用说明(示例:地图授权与取消授权后的重新授权)
2024-09-01 23:37:51
这个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 () { }
})
最新文章
- Droid4x快照还原
- system 函数
- HDU 2665 &;&; POJ 2104(主席树)
- 深入理解HTML5:语义、标准与样式
- mysql insert语句错误问题解决
- 【转载】怎么理解Condition
- iOS手写2048--基于Xcode7.1
- javascript--时钟
- 数据库 isnull()、nvl()、ifnull() 使用
- JavaScript 中的事件类型2(读书笔记思维导图)
- js缓冲运动
- RMQ(模板 ST 区间最值,频繁的间隔时间)
- 关于如何使用SVN的一些建议
- SpringBoot系列三:SpringBoot自定义Starter
- Angular4 组件间通讯
- npm快速入门
- LearnOpenGL学习笔记(三)——VBO,VAO,EBO理解
- [转帖] .NET FrameWork 版本的确定方法
- 如何同步两台Linux机器的时间?
- mysql中explain的用法
热门文章
- flask项目统一捕获异常并自定义异常信息
- js 获取当前日期和时间
- SpringCloud Zuul2.X网关实现服务熔断降级(复制即用)
- ASP.NET MVC5基础 - Global.asax详解
- springboot 打包jar 运行找资源文件
- DevExpress Skins<;2>;
- JS---DOM---自定义属性引入和移除
- English:Root ";tele";
- Git问题汇总
- Go 数组(array) &; 切片(slice)