当前位置:   article > 正文

小程序禁止二次转发分享私密消息,动态消息 wx.updateShareMenu

小程序禁止二次转发分享私密消息,动态消息 wx.updateShareMenu

小程序禁止二次转发分享私密消息,动态消息 wx.updateShareMenu

私密消息:运营人员分享小程序到个人或群之后,该消息只能在被分享者或被分享群内打开,不可以二次转发。

可用于不希望目标客群外的人员看到的分享信息,比如私有化活动的分享

如图:分享和发送到朋友圈都是置灰的

在这里插入图片描述在这里插入图片描述

未设置私密消息则可以长按转发

在这里插入图片描述

需要使用到以下三种API进行结合操作

//私密消息 
wx.updateShareMenu({
 isPrivateMessage: true,
})
  • 1
  • 2
  • 3
  • 4
// 禁用分享
wx.hideShareMenu({
  menus: ['shareAppMessage', 'shareTimeline']
})
  • 1
  • 2
  • 3
  • 4
// 显示分享
wx.showShareMenu({
  withShareTicket: true,
  menus: ['shareAppMessage', 'shareTimeline']
})
  • 1
  • 2
  • 3
  • 4
  • 5

案例需求:私有活动 需要私密消息

私有活动-需要使用私密消息
直接启用wx.hideShareMenu,wx.updateShareMenu,此时已经禁用所有分享渠道
后端接口判断白名单运营人员
调用wx.showShareMenu
则不执行操作

实例代码

<script>
  export default {
    data() {
      return {
      }
    },
    created() {
		//设置私密消息,在群聊中也不可转发
		wx.updateShareMenu({
		 isPrivateMessage: true,//只是做禁止分享可以不用activityId
	    })
		//隐藏三个点的分享到朋友圈和转发好友或群的按钮
		wx.hideShareMenu({
 		 menus: ['shareAppMessage', 'shareTimeline']
	  	})
	  	//进入后判断是否是白名单人员
		this.isWhitelist()
    },
    methods: {
    //判断是否是白名单
      async isWhitelist() {
        const res = await isWhitelist();
        if (res.success) {
         if(res.result.isStaff){
             wx.showShareMenu({
  			  menus: ['shareAppMessage', 'shareTimeline']
			})
         }
         }
        },    
      },
    }
</script>

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
updateShareMenu调用一次之后其他页面也会启用私密转发注意页面卸载时把方法重新调用isPrivateMessage改成false

小程序私密分享之动态消息的两种用法

1.第一种用法

需求是运营人员分享出去给被分享者和或被分享群后被分享者再分享给被分享群之外的用户,被分享用户分享的用户打开后需要判断非被分享群的人并提示关注公众号加群参与活动

流程图如下

动态消息
运营人员分享出去
被分享人或被分享群
第三者
第三者非被分享群人员打开后提示关注公众号加群参与活动
动态消息示例
wx.updateShareMenu({
  withShareTicket: true, //分享时是否携带ShareTicket
  isPrivateMessage: false,//是否是私密消息
  activityId: 'xxx' //后端接口生成返回
})
  • 1
  • 2
  • 3
  • 4
  • 5
知识概要点牢记

1.ShareTicket是withShareTicket=true后分享自动生成的这点牢记

ShareTicket转发出去的小程序被二次打开的时候能够获取到一些信息,例如群的标识

从群聊、单聊消息卡片进入小程序时,通过 wx.authPrivateMessage 接口可以验证当前用户是否是私密消息的接收者

我们只判断是否是私密消息可以只用valid判断,但是有被篡改的风险。可以使用activityId避免

代码示例

此api需要在APP.vue中的onshow调用也可在onLaunch调用,options中取shareTicket

  onShow(options) {
    const { shareTicket,referrerInfo } = options
    console.log(shareTicket,referrerInfo)
    if(shareTicket){
      this.authPrivate(shareTicket)
    }
  },
  authPrivate(shareTicket,callback){
    wx.authPrivateMessage({
      shareTicket: shareTicket,
      success(res) {
      if(res.valid == true){
          //提示这个人是私密分享的接受者 可以参与活动
      }else{
          //提示这个人是不是私密分享的接受者
      }
      },
      fail(res) {
      
      }
    })
  }
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

第二种用法

需求限制参与人数组队类型流程

如图
在这里插入图片描述

在这里插入图片描述

动态消息:仅使用于组队场景,分享消息会带上当前组队的进度,如图,“成员正在加入,当前m/n人”只能修改mn,其他文字不能修改,并且mn只能为正整数
动态消息示例
wx.updateShareMenu({
  withShareTicket: true,
  isUpdatableMessage: true,
  activityId: 'xxx' //后端接口生成返回
  templateInfo: {
    parameterList: [{
      name: 'member_count',//不用修改
      value: '1' // 填实际的已加入人数
    }, {
      name: 'room_limit',//不用修改
      value: '3' // 填实际的房间总人数
    }]
  }
//此处可增加一个templateld 就是消息推送模板 开始提醒或满人提醒由于我没有此模板权限无法给出dome
})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
当组队人数有变化时调用一次下面的接口达成动态修改页面中已参与的人数,分享的卡片状态会实时变更
POST https://api.weixin.qq.com/cgi-bin/message/wxopen/updatablemsg/send?access_token=ACCESS_TOKEN 
  • 1

文档地址:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/updatable-message/setUpdatableMsg.html

参考文章如下:https://zhuanlan.zhihu.com/p/578915337

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/268089
推荐阅读
相关标签
  

闽ICP备14008679号