本文介绍消息接收个性化的实践方案。

实践介绍

消息接收个性化是指在同一个会话中的不同账号看到不同消息。

发送的消息默认所有加入会话的人都能收到,每个账号看到的消息是相同的,有时候业务上有些场景希望只有某一部分人收到。典型场景如下:
  • 场景一:一条消息只有某个或某几个用户能看到,比如以系统身份发送安全提示。
    • 发送者:不能看到。
    • 接收者:能看到。
  • 场景二:不同用户看到的消息不一样,比如单聊里一张评价卡片。
    • 发送方:展示的卡片无评价按钮,有是否已评价的状态。
    • 接收方:展示的卡片有评价按钮,可点击。

实现

上面的场景可以通过AIM SendMessage提供的指定接收者实现。
  • 场景一实现:仅发送者收到,或仅接收者收到。
  • 场景二实现:分别给两个用户发送一条消息,Message1仅发送者接收,Message2仅接收者接收。
ReceiveScopeOption用于消息的实时接收和拉消息控制,实现消息个性化。具体逻辑如下:
  • 如无该选项,实时发给该会话的所有成员,并且所有成员都可拉到该条消息。
  • 实时接收控制:如receiverIds为空,系统会将receiverIds设为会话所有成员。消息会发给receiverIds去除excludeReceiverIds之后的账号列表。
  • 拉消息控制:由receiveScope字段来控制,默认值为0。
    • 0:除了excludeReceiverIds,其他人都可以拉到该消息。
    • 1:只有receiverIds能拉到该消息。

示例

A、B、C、D、E在同一个群里,A往群发送一条消息,下面是要实现需求伪代码的核心部分:
  • 仅B和C可接收
    options.receiveScopeOption.receiverIds = ["B", "C"]; //这里没有A的话发送者也看不到这条消息
    options.receiveScopeOption.receiveScope = 1;
  • 除C以外其他人可接收
    options.receiveScopeOption.excludeReceiverIds = ["C"];
    options.receiveScopeOption.receiveScope = 0;