微信小程序转发功能

微信小程序转发涉及以下4个方法:

1、Page.onShareAppMessage({}) 
设置右上角“转发”配置,及转发后回调函数返回 shareTicket 票据 
2、wx.showSahreMenu() 
用户点击右上角后,显示“转发”按钮 
3、wx.hideShareMenu() 
隐藏转发按钮,无视 Page.onShareAppMessage({}) 
4、wx.getShareInfo({}) 
根据 shareTicket 获取已加密的群信息

把转发流程切分:转发前配置->转发时->转发到群组后打开->二次转发 
转发流程图:

U1: 用户 
T1,T2,T3:表示转发票据,即 shareTicket 
G1,G2,G3:群组

1.转发前配置 
在页面 onLoad 方法添加

1 wx.showShareMenu({
2     withShareTicket: true
3 })

withShareTicket 为 true 时,表示允许转发时是否携带 shareTicket。 
shareTicket 是获取转发目标群信息的票据,只有拥有 shareTicket 才能拿到群信息,用户每次转发都会生成对应唯一的shareTicket 。

shareTicket 有两个用途:

  • 用户主动转发后,获取转发到目标群群信息,对应上图UI。
  • 用户在群组中打开小程序,获取群组信息,对应上图 G1 群组中的用户。

2.转发时获取群信息 
当某个小程序被转发到群组后,开发者想获取到转发目标群组信息,将用户和群组做某种绑定关系(openId + openGid)。

 1 onShareAppMessage: function () {
 2     return {
 3       title: ‘自定义转发标题‘,
 4       path: ‘/page/user?id=123‘,
 5       success: function(res) {
 6         var shareTickets = res.shareTickets;
 7         if (shareTickets.length == 0) {
 8             return false;
 9         }
10         wx.getShareInfo({
11             shareTicket: shareTickets[0],
12             success: function(res){
13                 var encryptedData = res.encryptedData;
14                 var iv = res.iv;
15             }
16         })
17       },
18       fail: function(res) {
19         // 转发失败
20       }
21     }
22   }

shareTickets 是一个数组,每一项是一个 shareTicket ,对应一个转发对象,转发给用户不会包含shareTicket。

拿到 shareTicket 之后,使用 wx.getShareInfo({}) 方法传入 shareTicket 参数,wx.getShareInfo({}) 里回调函数中包含 已加密的群信息和 向量IV。

3.转发到群组后打开 
用户将小程序转发到微信群组后,群成员打开小程序,通过 shareTicket,开发者就能将群成员和群组绑定起来(openId + openGid),基于群组关系,小程序有更多的应用场景,例如:王者荣耀群排行,摩拜单车。

 1 Page({
 2     onLoad: function(opt) {
 3         /** 判断场景值,1044 为转发场景,包含shareTicket 参数 */
 4         if (opt.scene == 1044) {
 5             wx.getShareInfo({
 6                 shareTicket: opt.shareTicket,
 7                 success: function(res){
 8                     var encryptedData = res.encryptedData;
 9                     var iv = res.iv;
10                 }
11             })
12         }
13     }
14 })

在群组中打开小程序,页面onLoad 或 onShow 方法包含 scene 和 shareTicket,需要判断 scene 是否为1044,如果不是则不包含 opt 中 shareTicket 参数。

4.二次转发 
二次转发重复前3个步骤,没什么可说的,但是有一个方向值得探讨,可否把小程序转发路径比作转发链,进而生成转发树,用数据结构方法(树、马尔科夫链)处理发现群组与群组,群组与成员之间微妙关系。

如开头那张图,我们很容易看出转发链和转发树。 
转发链:U1 > G1 > G2 
转发树:U1 > G1 > G2 & G3

原文地址:https://www.cnblogs.com/Magic-ST/p/8663162.html

时间: 2024-08-03 15:17:14

微信小程序转发功能的相关文章

微信小程序转发微信小程序转发

微信小程序转发涉及以下4个方法: 1.Page.onShareAppMessage({}) 设置右上角"转发"配置,及转发后回调函数返回 shareTicket 票据 2.wx.showSahreMenu() 用户点击右上角后,显示"转发"按钮 3.wx.hideShareMenu() 隐藏转发按钮,无视 Page.onShareAppMessage({}) 4.wx.getShareInfo({}) 根据 shareTicket 获取已加密的群信息 1.转发前配置

[转] 扩展微信小程序框架功能

通过第三方 JavaScript 库,扩展微信小程序框架功能. 扩展微信小程序框架功能(1)——Promise ES6 对 Promise 有了原生的支持,但微信开发者工具更新版本(0.11.112200)后, 移除了开发者工具对 ES6 中Promise 特性原生的支持, 需要引入第三方的 Promise 库. 扩展微信小程序框架功能(2)——Generator Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同. 扩展微信小程序框架功能(3)——函数功能增强

微信小程序支付功能 C# .NET开发

微信小程序支付功能的开发的时候坑比较多,不过对于钱的事谨慎也是好事.网上关于小程序支付的实例很多,但是大多多少有些问题,C#开发的更少.此篇文档的目的是讲开发过程中遇到的问题做一个备注,也方便其他开发的同学作为参考! 1.首先建议把官方文档支付部分看上三遍,每个细节都不要放过,因为任何一个点和微信要求不符都会导致支付不成功.https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=3_1 2.经过验证的微信支付功能,会需要一些商

微信小程序超强功能,震惊了十亿微民!

微信小程序(应用号)就是用户关注了一个应用号,就像安装了一个App一样.这样微信将被打造成一个全新的appstore,而每一个应用号就是一个个的webapp. 怎么理解这个概念? 下载安装 app 太麻烦了,微信的小程序就可以满足你:安装 / 卸载 / 使用小程序,就像关注 / 取关 / 进入公众号一样简单:你用完就可以走,不用担心装个 app 占你空间. 微信小程序(应用号)有几个功能? 1.微信小程序(应用号)能实现对App个性功能的完美支持.这项服务就是将App的独立功能通过微信应用号开放

店铺无缝对接一号旺铺小程序 盘点微信小程序新增功能

前段时间,笔者写过一篇<不开发,商家店铺如何快速接入微信一号旺铺小程序>的文章.结果反响平平,无人问津.所以,笔者就在想,也许小程序真的大势已去. 盘点迄今为止微信小程序增加的功能:价值提升,商家福音到了! 盘点迄今为止微信小程序增加的功能:价值提升,商家福音到了! 但是,就在本人下定决心以后少关注小程序的当口,腾讯似乎终于觉醒了,张小龙也终于向现实低头妥协,微信官方宣布的小程序新增功能绝地反击,热乎了众多商家的心,也活跃了个人创业开发者的兴奋基因.其实,自小程序面市已来,其功能一直在不断完善

微信小程序 支付功能(前端)的实现

只提供微信小程序端代码: 1 var app = getApp(); 2 Page({ 3 data: {}, 4 onLoad: function (options) { 5 // 页面初始化 options为页面跳转所带来的参数 6 var that = this 7 //登陆获取code 8 wx.login({ 9 success: function (res) { 10 console.log(res.code) 11 //获取openid 12 that.getOpenId(res.

web-view小程序转发功能,web-view和小程序之间传参

web-view的src只能带一个参数src="…?a=1" h5页面 <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script> var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i)

微信小程序——倒计时功能

做小程序项目中,需要做一个倒计时功能,如下图: 记录一下实现步骤: 1.考虑到这个功能可能会有多处用到,所以把倒计时的函数写在utils.js里面: const formatNumber = n => { n = n.toString() return n[1] ? n : '0' + n } // 倒计时 function countDown(that) { //倒计时函数 let newTime = new Date().getTime(); let endTime = that.data.

微信小程序 支付功能 服务器端(TP5.1)实现

首先下载微信支付SDK ,将整个目录的文件放在 /application/extend/WxPay 目录下 在使用SDK之前我们需要对 WxPay.Config.php 进行配置 <?php namespace app\api\service; use app\api\model\Order as OrderModel; use app\lib\exception\OrderException; use app\lib\exception\TokenException; use think\Ex