如果你有使用过小程序需要你授权微信地址的情况,那么正常的逻辑应该是这样的:

点击获取地址后,弹窗:

此时我相信选择拒绝的人应该还是比较多的,毕竟这是敏感数据,拒绝后再看页面相关功能是否有使用地址的合适理由,再重新点击给予权限。

问题是坑就在这里出现:小程序是会记住用户对上一次的授权情况,因为用户拒绝过,所以此时调用wx.chooseAddress()方法是不会再主动弹窗的,这时的处理是要跳转到权限设置页让用户打开。

当然,第二次点击时,直接跳转设置页就不太合理,而应该是先弹窗说明下:

在开发的过程中,被神奇的坑了一把。这个弹窗是在model当中,一开始将openSetting方法放在model中,当用户confirm去设置的时候调用,结果发现压根没反应。去看了官方的文档说

看了下面一些评论之后,以为无法在model中调用openSetting方法跳转设置页,就在以为不得不要手动写model弹窗时,突然发现跳转可以在model中实现了!!!。

下面就不多废话,贴上现在可以正常运行的代码,帮助现在看文章的你解决下这个地址处理问题:

(这边用了京东的小程序开发框架,如果你用原生或其他框架看懂逻辑即可)

 

<View
className="right"
onClick={this.chooseAddress}
>
<Text className="text">
{address ? '切换地址' : '选择地址'}
</Text>
<Image src={rightImg} className="icon-right" />
</View>
 
chooseAddress() {
Taro.chooseAddress().then(
res => {
const { cityName, countyName, detailInfo, provinceName } = res;
this.setState({
address: provinceName + cityName + countyName + detailInfo,
});
},
err => {
if (err.errMsg === 'chooseAddress:fail auth deny') {
const { title, content, confirmText } = modalData.address; // tips:像这种获取手机,地址等通用信息的弹窗信息,最好抽离到公共常量数据,因为其他页面也可能用到,就不用每个用到的页面都写一次。
即使只有一个地方用到,也不应该将这里弹窗提示的中文代码放这里,因为下面的代码看起来明显简洁很多。
Taro.showModal({
title,
content,
confirmText,
}).then(res => {
if (res.confirm) {
Taro.openSetting();
}
});
}
},
);
}

看完代码的你是不是有点懵,就这样?是的,上面就是实现功能所需代码。

看到有一些人有用到getSetting方法去提前获取用户权限设置,我这边实践发现貌似用不上,因为无论提前获取到的是否true or false,都要调用chooseAddress方法(第一次下面弹窗询问的也是这个方法实现的),所以这边实现代码就如上所说。

 

小程序使用微信地址or小程序跳转设置页的更多相关文章

  1. 微信答题小程序 微信小程序 答题 demo 头脑王者这样的答题小程序开发 答题的微信小程序开发经验 微信答题比赛小程序

    最近随着王思聪的我撒币,我快乐,直播答题非常火.同时知乎的答题小程序头脑王者也非常火爆.大家在微信和微信群里玩的不亦乐乎. 好吧,快乐总是属于你们,我却只能埋头写代码... 公司要求赶紧开发一个这样的 ...

  2. 微信小程序(原名微信应用号)开发工具0.9版安装教程

    微信小程序全称微信公众平台·小程序,原名微信公众平台·应用号(简称微信应用号) 声明 微信小程序开发工具类似于一个轻量级的IDE集成开发环境,目前仅开放给了少部分受微信官方邀请的人士(据说仅200个名 ...

  3. TP3.2校验微信公众号||小程序 服务器地址

    1.在TP3.2里面,写一个控制器,用来校验微信公众号||小程序的服务器地址 <?php namespace Home\Controller; use Think\Controller; hea ...

  4. JavaScript和微信小程序获取IP地址的方法

    最近公司新加了一个需求,根据用户登录的IP地址判断是否重复登录,重复登录就进行逼退,那么怎么获取到浏览器的IP地址呢?最后发现搜狐提供了一个JS接口,可以通过它获取到客户端的IP. 接口地址如下: h ...

  5. 微信小程序之提高应用速度小技巧

    作者:vicyao, 腾讯web前端开发 高级工程师商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/294.htm ...

  6. [小程序开发] 微信小程序内嵌网页web-view开发教程

    为了便于开发者灵活配置小程序,微信小程序开放了内嵌网页能力.这意味着小程序的内容不再局限于pages和large,我们可以借助内嵌网页丰富小程序的内容.下面附上详细的开发教程(含视频操作以及注意事项) ...

  7. 微信小程序之微信登陆 —— 微信小程序教程系列(20)

    简介: 微信登陆,在新建一个微信小程序Hello World项目的时候,就可以看到项目中出现了我们的微信头像,其实这个Hello World项目,就有一个简化版的微信登陆.只不过是,还没有写入到咱们自 ...

  8. 微信小程序PHP 微信支付接口调用

    小程序端 /** * 微信支付接口 */ wxPaymoney:function (out_trade_no, true_money){ //out_trade_no 后台统一下单接口需要用 var ...

  9. [微信小程序] 认识微信小程序及开发环境搭建

    微信公众平台首页 https://mp.weixin.qq.com 微信公众平台测试帐号系统 https://open.weixin.qq.com/connect/qrconnect?appid=wx ...

随机推荐

  1. [期望DP][纪中]【2010集训队出题】彩色圆环

    彩色圆环 感谢名单 十分感谢 JA_Ma 为我讲解了 \(T1\) 的 期望DP 的思想和推论. 十分感谢 SSL_LYF 为我解答了 \(T1\) 的 期望DP 的概率的大小问题. 十分感谢 SSL ...

  2. 带实习生学Spring Boot 之 Spring Profiles

    大家好,我是指北君. 最近公司新来了一个实习生,挺上进的,天天追着我问问题.指北君开启了带实习生打怪升级之路.吶,今天问了一个关于 Spring Profiles 的问题. 实习生:指北君,你知道 S ...

  3. 痞子衡嵌入式:串行NOR Flash的页编程模式对于量产时间的影响

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是串行NOR Flash的页编程模式对于量产时间的影响. 任何嵌入式产品最终都绕不开量产效率话题,尤其是对于主控是非内置 Flash 型 ...

  4. python 07篇 内置函数和匿名函数

    一.内置函数 # 下面这些要掌握 # len type id print input open # round min max filter map zip exec eval print(all([ ...

  5. IDEA上搭建spark开发

    IDEA上搭建spark开发环境 我本地系统是windows10,首先IDEA上要安装了scala插件. 1.下载winutils.exe文件 winutils.exe是在Windows系统上需要的h ...

  6. odoo14学习----x2many操作与图片设置继承image.mixin

    三种方式实现数据更新 一,如上所述 二,通过对数据集调用update({'key':value,'key1':value1..})更新数据集 三,调用write函数,与update类似,传递字典.   ...

  7. 斐波那契数列——Python实现

      # 功能:求斐波那契数列第 n 个数的值 # 在此设置 n n = 30 print('\n');print('n = ',n) # 代码生成 Fibonacci 序列,存于数组A A = [0] ...

  8. Python - 赋值运算符

    前置知识 先了解下变量: https://www.cnblogs.com/poloyy/p/15042257.html 再了解下算术运算符: https://www.cnblogs.com/poloy ...

  9. 大数据学习(25)—— 用IDEA搭建Spark开发环境

    IDEA是一个优秀的Java IDE工具,它同样支持其他语言.Spark是用Scala语言编写的,用Scala开发Spark是最舒畅的.当然,Spark也提供Java和Python的API. Java ...

  10. 抽奖动画 - lao虎机抽奖

    本文介绍一个lao虎机抽奖动画的实现,lao虎机抽奖在各类商家营销活动中非常常见,这里主要介绍动画的实现过程,其他细节不做详细分析. ps:lao虎机是敏感词,博客园不允许出现,所有老用拼音. 1. ...