收藏
评论

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

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

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


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

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


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

(重要通知小程序)

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

(小程序场景值)

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


我们可以在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之后,去服务端解密~


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


《END》


欢迎交流技术问题,群人数已满100,可添加小助手:


最后一次编辑于  2018-03-05  (未经腾讯允许,不得转载)
复制链接收藏赞 0

5 个评论

  • 连胜
    连胜
    2018-03-05

    自己抢个沙发

    2018-03-05
    赞同
    回复
  • 👼🦎🥗🍧哈哈👑💋
    👼🦎🥗🍧哈哈👑💋
    2018-03-05

    好文章,正好在找分享到群的功能怎么实现

    2018-03-05
    赞同
    回复
  • 海阔天空
    海阔天空
    2018-03-15

    请问楼主,如果是转发给个人多次,能否判断接受者是不是同一个人?

    2018-03-15
    赞同
    回复
  • 剼羹
    剼羹
    2018-03-16

    同4楼,一样的问题,请问楼主有解决办法吗?

    2018-03-16
    赞同
    回复
  • kong
    kong
    2018-04-10

    想问楼主大神,请问如何获取分享到私聊之后的用户信息呢

    2018-04-10
    赞同
    回复