请选择 进入手机版 | 继续访问电脑版
查看: 639|回复: 0

[经验分享]网易云信红包实现

[复制链接]

353

主题

373

帖子

9万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
99914
发表于 2017-11-23 14:44:57 | 显示全部楼层 |阅读模式
前言
云信并不原生支持红包消息,所以红包消息需要应用方通过自定义消息和自定义通知配合实现。
需求分析
做红包消息之前,我们先进行一下需求的分析,将用户可见的分发红包的过程拆解成程序可以理解的步骤。一个完整的红包收发流程如下:

  • 发出红包
  • 拆开红包
  • 通知红包已拆完

翻译成云信内的术语则是:

  • 红包发送者发送一条带有红包信息的自定义消息给消息接受者 (群/个人)
  • 消息接受者发送拆红包的指令给应用服务器
  • 应用服务器发送一条通知消息知会红包发起者和接受者红包已被拆完

需求分析完毕,只需要按照步骤实现即可。


发送红包消息
云信原生不支持红包消息,第一步需要构造一个表示红包的消息。一般而言我们需要定义如下字段

  • 消息子类型 (即红包类型)
  • 红包金额
  • 分红包人数
  • 瓜分红包方式 (平分,随机等)
  • 当前红包 id (用于服务器鉴权等)

具体构造自定义消息的方法可以参考 UI 组件的使用方法。 出于安全和业务完整性的考虑,所有红包消息都推荐由应用服务器代发,而不是通过 SDK 的发送接口进行发送,原因如下
  • 云信 SDK 对消息发送并不做任何限制,但红包消息需要涉及到用户信息鉴权,如获取当前账户余额等信息
  • 使用 SDK 相对于使用服务器代发消息更容易造成数据不一致,如服务器已扣款,但是 SDK 消息并未送达对面。(使用服务器代发也有这个问题,但是相对而言网络情况会好很多,更容易避免)

流程如下


拆红包
拆红包的流程和云信并没有太多关系,接收端直接请求自己应用服务器即可,由应用服务器进行金额的分配并返回数据。


通知红包已拆完
当应用服务器收到拆红包信息并验证成功成功后进行红包金额的分配。金额分配完毕,应用服务器通过发送通知消息给红包发送端和接收端表示红包已拆完。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表