• 小程序使用微信地址or小程序跳转设置页


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

    点击获取地址后,弹窗:

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

    问题是坑就在这里出现:小程序是会记住用户对上一次的授权情况,因为用户拒绝过,所以此时调用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方法(第一次下面弹窗询问的也是这个方法实现的),所以这边实现代码就如上所说。

     
  • 相关阅读:
    java实现第五届蓝桥杯六角幻方
    java实现第五届蓝桥杯六角幻方
    java实现第五届蓝桥杯六角幻方
    java实现第五届蓝桥杯海盗分金币
    java实现第五届蓝桥杯海盗分金币
    java实现第五届蓝桥杯海盗分金币
    java实现第五届蓝桥杯海盗分金币
    java实现第五届蓝桥杯海盗分金币
    jQuery异步上传文件
    关于心跳ajax请求pending状态(被挂起),stalled时间过长的问题。涉及tcp连接异常。
  • 原文地址:https://www.cnblogs.com/pjl43/p/11573262.html
Copyright © 2020-2023  润新知