认识程序员,专注于微信小程序开发的程序员!
前言:群里时不时会有同学问转发小程序能不能区分转发给好友和转发给微信群,今天就给大家讲讲怎么区分吧,顺便也说一下如何实现限制群成员可见的功能~
只要区分共享前后,就能轻松解决这个问题。
小程序在分享之前,是无法区分是分享给好友还是分享给微信群的,也就是说,在分享之前,你想干点什么,是不允许的,做不到~
分享之后,有一个间接的方式可以知道小程序卡片是否分享到好友或者群组,我们先来看截图:
(重要通知小程序)
今天主要讲一下分享之后好友卡片、群卡片的处理方式。实现思路:通过场景值来判断~
(小程序场景价值)
小程序官方给出的场景值已经区分了单聊会话和群聊会话,如上图所示。
我们可以在app.js中的方法或者方法中获取场景值:

获取到值之后可以保存全局变量,也可以写入本地缓存,在对应的page.js中判断,如果是群聊,则显示群聊界面;如果是私聊,则显示私聊界面。
上面只是说了如何区分群聊和私聊,那么限制只能在某个群组内可见的功能如何实现呢?
思路:分享完小程序卡片后,获取到的是群id,群用户点击群内的小程序卡片时,也会获取到群id,如果两个群id相同,说明是同一个群;如果没有获取到群id,说明不是从群聊打开小程序卡片;如果两个群id不一样,说明不是同一个群~
上面提到了获取 id有两种场景
第一:在群聊中分享小程序卡片,分享完成后,有分享成功的回调方法,在方法中可以获取
获取到之后就可以调用wx.获取解密gid所用的向量和加密值,传给服务端解密(小程序中所有解密操作都在服务端进行)。
注意:回调成功的时候res.是一个列表,因为分享给好友、群组的时候,可以选择多个,最多可以选择9个。
第二:当你从群聊打开小程序卡片时.当你从群打开小程序卡片时,会获取到app.js中的方法和方法
拿到之后去服务器解密吧~
相信你也看到过有些小程序有群组排名功能,实现方法都是一样的~