小程序如何区分转发好友和转发群

知晓程序员,专注微信小程序开发的程序员!

前言:群内隔段时间就有同学问,小程序的转发,是否可以区分转发给好友,还是转发给微信群,今天给大家说说如何区分。顺便说一下限群成员可见功能如何实现~

这个问题,要区分一下分享之前和分享之后就好办了。

当小程序分享之前,小程序无法区分到底是分享给了好友,还是分享给了微信群。也就是说,你想在分享之前去做些事情,这是不可以的,做不到~

分享之后,有间接的办法来知道小程序卡片分享的是好友还是群,先看一下截图:

(重要通知小程序)

我们今天主要来说说,分享后是如何对好友卡片和群卡片的。实现思路:通过场景值来判断~

(小程序场景值)

小程序官方给的场景值,已经对单人聊天会话群聊天会话做了区分,如上图。

我们可以在app.js里面的onLaunch方法或者onShow方法获取到场景值:

拿到值之后,你可以保存全局变量,或者写入本地缓存,在相应的page.js里面去做判断,如果是群聊,显示群聊界面,如果是私聊,显示私聊界面。

上面只说了如何区分群聊还是私聊,那么仅限某个群可见这功能又如何实现呢?

思路:分享小程序卡片之后,获取到群id,当群用户点击群内小程序卡片时,也会获取一个群id,这两个群id相同,则表明是同一个群;没有获取到群id,表明不是从群聊中打开小程序卡片;两个群id不同,则表明不是同一个群~

上面已经说了,有两种场景可以获取群id

第一:小程序卡片分享到群聊中。分享完成之后,有个分享成功的回调方法,可以在此方法中获取到shareTickets

拿到shareTickets之后,可以调用wx.getShareInfo,获取解密gid会用到的向量和加密值,传给服务端进行解密(小程序中所有的解密操作,都放在服务端进行)。

注:上面成功回调时,res.shareTickets是个list,因为分享给好友和群的时候,可以多选,最多选9项~

第二:从群聊中打开小程序卡片时。从群中打开小程序卡片,会在app.js里面的onLaunch方法和onShow方法中获取到shareTickets

拿到shareTickets之后,去服务端解密~

相信大家也有看到过,有些小程序做了群排行榜功能吧。实现方式,也是同样的道理~

原文发布于微信公众号 - 知晓程序员(bainaweb)

原文发表时间:2018-03-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏张善友的专栏

Mix 10 上的asp.net mvc 2的相关Session

Beyond File | New Company: From Cheesy Sample to Social Platform Scott Hansel...

2627
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2170
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3255
来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2626
来自专栏张善友的专栏

Miguel de Icaza 细说 Mix 07大会上的Silverlight和DLR

Mono之父Miguel de Icaza 详细报道微软Mix 07大会上的Silverlight和DLR ,上面还谈到了Mono and Silverligh...

2727
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

32610
来自专栏转载gongluck的CSDN博客

cocos2dx 打灰机

#include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

5676
来自专栏杨龙飞前端

scrollto 到指定位置

2554
来自专栏java 成神之路

使用 NIO 实现 echo 服务器

4827
来自专栏陈仁松博客

ASP.NET Core 'Microsoft.Win32.Registry' 错误修复

今天在发布Asp.net Core应用到Azure的时候出现错误InvalidOperationException: Cannot find compilati...

4878

扫码关注云+社区