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

点击获取地址后,弹窗:

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

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

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

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

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

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

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

 

<ViewclassName="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方法(第一次下面弹窗询问的也是这个方法实现的),所以这边实现代码就如上所说。

 

转载于:https://www.cnblogs.com/pjl43/p/11573262.html

小程序使用微信地址or小程序跳转设置页相关推荐

  1. 生鲜小程序解决方案,微信水果生鲜小程序制作

    传统生鲜行业为什么要开发小程序 1.生鲜小程序非常适合生鲜食品比如蔬菜这些季节性很强的产品特点.商户可直接用收集完成拍照.发布.出售.下架等过程,及时的管理产品列表.与买家沟通.更新产品信息,让周边的 ...

  2. 租房微信小程序--基于微信云开发--小程序端集成了管理员后台

    文章目录 项目简介 界面预览 结语 目录结构 功能说明 配置过程 项目简介 温馨提醒 如需商用升级版,请联系我微信,微信二维码在这里的右上角 https://www.cnblogs.com/Liang ...

  3. 微信群打卡小程序_微信打卡小程序上线,你会用吗?

    原标题:微信打卡小程序上线,你会用吗? 对于微信,这是大家都比较熟悉的东西,尤其是在当前,旗下用户量可以说达到了数亿的人脉.对此不少商家都很关注这个,尤其是该平台推出的小程序出现,更让很多企业为此受益 ...

  4. 【微信小游戏】微信对战小游戏知识储备

    一.前提 在微信小游戏异常火爆的前提下,开发个小游戏才是正事,而不是玩个小游戏才是正事! 废话不多说,步入今天的正题,在慢慢成熟起来的小游戏生态中我们的小游戏如果只是单机+排行的组合,难免显得小游戏单 ...

  5. 新生报到小程序毕业设计,微信新生报到小程序系统设计与实现,微信小程序毕业设计论文怎么写毕设源码开题报告需求分析怎么做

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序新生报到系统,前台用户使用小程序,后台管理使用基PHP+MySql的B/S架构:通过后台添加学校信息.分院信息.班级信息.老师信息 ...

  6. 抖音壁纸表情包小程序快手微信QQ四端小程序

    流量主小程序,以DOUYIN壁纸表情包小程序举例 看下演示 流量主项目,比较热门的有壁纸表情包等图文内项目,抖音的客服给你介绍和搭建即 可. 演示私信

  7. 小云路由器mysql地址_小云路由器助手

    小云路由器助手是一款广泛支持市面上常见路由的路由器增强管理软件.小云路由器助手支持识别各型号路由器的默认管理帐号.后台地址等信息,能方便地进行品牌路由固件升级以及刷第三方固件等维护工作,让普通路由轻松 ...

  8. Php 小视频存储,微信里的小视频怎样保存和下载

    微信里可以和好友间互发小视频,还可以分享到朋友圈,但是除了在微信里直接查看外,这些小视频到底保存在哪儿了?朋友圈里好友分享的小视频也能保存么? 今天,小编就整理了几个方法,教你如何查找和保存微信小视频 ...

  9. 小云路由器mysql地址_小云OS3.0,极简操作,让小白玩转离线下载和NAS(转发)

    赞助商链接 小云OS3.0是联想新路由系列最近推出的路由器操作系统,给我印象最深刻的是操作简便.下载方便.局域网访问下载资源方便.流畅. 这次体验小云OS3.0,是基于联想newifi mini的,不 ...

最新文章

  1. 创建Cocoapods私有库
  2. (017)java后台开发之客户端通过HTTP获取接口Json数据
  3. 一文读懂spring boot 和微服务的关系
  4. 【大学课程】计算机组成原理知识点
  5. 2014年考研计算机大纲解析:数据结构,2014年考研计算机大纲解析之数据结构
  6. mysql插入数据到底哪里错了?
  7. Linux网络模式及远程连接出错排障
  8. hdu 2896 病毒侵袭
  9. 安卓模拟器获取服务器信息出错,安卓模拟器客户端与服务器不同步
  10. Centos7 安装Mysql5.7
  11. LeetCode 1943. 描述绘画结果(差分思想)
  12. Js获取字符串的显示宽度/高度
  13. 使用正则表达是搜索多个字符串,表达式中加入变量
  14. apache 编译报错:undefined reference to `apr_array_clear'
  15. 用Java+Html+MySQL 实现注册、登录(servlet框架)-(一)
  16. python之syslog学习
  17. Unity 游戏框架之GameFramework和ET对比
  18. 任正非:华为云不能简单模仿阿里、亚马逊,要有所为有所不为|CEO说
  19. SpringBoot整合MybatisPlus
  20. 【TypeScript介绍】一文带你初步了解TypeScript

热门文章

  1. 目前最强开源人脸检测算法RetinaFace
  2. 近期计算机视觉算法竞赛汇总—总奖池超300万人民币
  3. 计算机视觉研究入门全指南
  4. 收藏 | 让你纵横 GitHub 的五大神器
  5. 写给萌新们的Python安装及环境配置(anaconda,pycharm,GPU)教程
  6. 数学建模之图论——图与网络模型(一)(基本概念和最短路问题,附MATLAB源码)
  7. debian查询端口进程_centos linux系统配置查询
  8. python设计贪吃蛇游戏论文_用Python写一个贪吃蛇AI,让程序自己玩游戏
  9. 如何用vbs编写一个游戏_如何编写一个 SkyWalking 插件
  10. wget 和 curl 区别