zoukankan      html  css  js  c++  java
  • “微信小程序从分享卡片进入,第一次获取不到用户uid、第二次能获取到用户uid”解决方法

    用uniapp开发微信小程序时,有一个需求是分享罐表详情页面给其它用户,其它用户(在已经登录的状态下)点击分享卡片可以直接跳转到该罐表详情页,且能显示自己是否已经收藏该罐表(收藏状态由用户uid和罐表id共同确定)。

    基本思路是用 微信原生的 onShareAppMessage(OBJECT) 实现,uniapp文档:https://uniapp.dcloud.net.cn/api/plugins/share?id=onshareappmessage,微信小程序文档:https://developers.weixin.qq.com/miniprogram/dev/reference/api/Page.html#onShareAppMessage-Object-object 

    path 是其它用户点击分享卡片直接进入的页面,不写默认是分享的当前页面。

     在 onShareAppMessage 的path中传递的参数,由下一页面的onLoad(option)接收。

     以上是微信小程序实现页面分享的基础功能。


     遇到的一个bug是:其它用户点击分享卡片第一次不能正确获取uid、第二次进入小程序才能正确获取uid时。

    第一次进入小程序: 

     第二次进入小程序: 

    解决办法:在罐表详情页面的分享设置path为home(而不是当前页面),然后从home跳转到罐表详情,这样就可以正确显示页面数据了。丹尼斯小程序就是这样实现的。丹尼斯小程序效果如下:


    罐表详情.vue

    onShareAppMessage(options) {
        var msg = "我给你分享了一个罐表,快来点击查看吧";
        return {
            title: msg, // 转发后 所显示的title
            path: '/pages/home/home?id=' + this.id
        }
    },

    home.vue

    onLoad(option) {
        var scene = wx.getLaunchOptionsSync().scene; //获取场景值,判断是用哪种方式进入的小程序
        if (scene == 1007 || scene == 1008 || scene == 1044) { //从分享进入
            if (option.id) {
                uni.navigateTo({
                    url: '../subpage/tableMarket/marketSeeTable/marketSeeTable?id=' + option.id
                })
            }
        }
    }

    场景值介绍:https://developers.weixin.qq.com/miniprogram/dev/reference/scene-list.html

  • 相关阅读:
    MySql
    Zookeeper
    Kafka
    Mybatis
    Spring/Spring MVC
    Spring Boot/Spring Cloud
    网络
    设计模式
    Strassen algorithm(O(n^lg7))
    dynamic programming:find max subarray
  • 原文地址:https://www.cnblogs.com/sunshine233/p/15222540.html
Copyright © 2011-2022 走看看