消息负载

消息内容需要在网络上传输或本地存储,而消息内容是复杂多变的,因此消息发送过程中先encode为消息负载;消息接收后由消息负载decode为对应的消息内容。在数据库从存取也是如此。

消息流程

在SDK中,会处理消息内容和消息负载的转换。在SDK之上都是使用具体的消息内容,比如文本消息内容、图片消息内容等;在SDK之下,包括协议栈和IM服务都是使用MessagePayload,并不知道具体属于那个消息内容。

public class MessagePayload {

    public int type;//ios平台上是contentType

    public String searchableContent;
    public String pushContent;
    public String pushData;
    public String content;
    public byte[] binaryContent;
    public String extra;

    public int mentionedType;
    public List<String> mentionedTargets;


    public MessageContentMediaType mediaType;
    public String remoteMediaUrl;


    //前面的属性都会在网络发送,下面的属性只在本地存储
    public String localMediaPath;

    //前面的属性都会在网络发送,下面的属性只在本地存储
    public String localContent;
}

0.0.1. Server API

通过server api发送/获取消息及IM服务回调消息时,消息内容都是MessagePayload,MessagePayload与客户端完全一致(客户端的payload有个二进制属性,api使用的是经过base64编码的)。服务处理时需要注意跟客户端保持一致,比如服务器想发送图片消息,则需要检查一下客户端中图片消息encode的payload格式:设置payload的消息类型为3,remoteUrl为图片的地址(图片需要先上传到对象存储服务得到这个链接),mediaType为图片类型,basedBinaryContent为图片缩略图数据的base64编码。这样发送这个payload到客户端就能正确转化为图片消息。其他消息以此类推。

0.0.2. type(contentType)

消息内容类型,根据该类型decode成对应的消息内容。系统内置了如下消息类型,也可以添加自定义消息:

内容类型 说明
MESSAGE_CONTENT_TYPE_UNKNOWN 0 未知消息内容
MESSAGE_CONTENT_TYPE_TEXT 1 文本消息内容
MESSAGE_CONTENT_TYPE_SOUND 2 语音消息内容
MESSAGE_CONTENT_TYPE_IMAGE 3 图片消息内容
MESSAGE_CONTENT_TYPE_LOCATION 4 位置消息内容
MESSAGE_CONTENT_TYPE_FILE 5 文件消息内容
MESSAGE_CONTENT_TYPE_VIDEO 6 视频消息内容
MESSAGE_CONTENT_TYPE_STICKER 7 动态表情消息内容
MESSAGE_CONTENT_TYPE_IMAGETEXT 8 图文消息混排内容
MESSAGE_CONTENT_TYPE_P_TEXT 9 不计数的文本消息
MESSAGE_CONTENT_TYPE_CARD 10 名片消息内容
MESSAGE_CONTENT_TYPE_COMPOSITE_MESSAGE 11 组合消息
MESSAGE_CONTENT_TYPE_RICH_NOTIFICATION 12 富通知消息
MESSAGE_CONTENT_TYPE_ARTICLES 13 文章消息
MESSAGE_CONTENT_TYPE_STREAMING_TEXT_GENERATING 14 流式消息正在生成消息
MESSAGE_CONTENT_TYPE_STREAMING_TEXT_GENERATED 15 流式消息生成消息
MESSAGE_CONTENT_NOT_DELIVERED 16 消息未送达
MESSAGE_CONTENT_TYPE_PTT_VOICE 23 对讲语音消息
MESSAGE_CONTENT_TYPE_MARK_UNREAD_SYNC 31 标记未读同步消息
MESSAGE_CONTENT_TYPE_CREATE_SECRET_CHAT 40 密聊创建通知
MESSAGE_CONTENT_TYPE_ACCEPT_SECRET_CHAT 41 密聊接受通知
MESSAGE_CONTENT_TYPE_DESTROY_SECRET_CHAT 42 密聊销毁通知
MESSAGE_CONTENT_TYPE_SECRET_CHAT_MESSAGE 43 密聊消息内容
MESSAGE_CONTENT_TYPE_BURN_MSG_READED 46 阅后即焚消息已读
MESSAGE_CONTENT_TYPE_BURN_MSG_PLAYED 47 阅后即焚消息已播放
MESSAGE_CONTENT_TYPE_ENTER_CHANNEL_CHAT 71 进入频道通知消息
MESSAGE_CONTENT_TYPE_LEAVE_CHANNEL_CHAT 72 离开频道通知消息
MESSAGE_CONTENT_TYPE_CHANNEL_MENU_EVENT 73 点击频道菜单事件
MESSAGE_CONTENT_TYPE_RECALL 80 撤回消息内容
MESSAGE_CONTENT_TYPE_DELETE 81 删除消息
MESSAGE_CONTENT_TYPE_TIP 90 提醒消息内容
MESSAGE_CONTENT_TYPE_TYPING 91 正在输入提醒消息内容
MESSAGE_FRIEND_GREETING 92 添加好友问候内容
MESSAGE_FRIEND_ADDED_NOTIFICATION 93 好友已添加通知
MESSAGE_PC_LOGIN_REQUSET 94 PC或者Web客户端登录请求
MESSAGE_CONTENT_TYPE_CREATE_GROUP 104 创建群组消息内容
MESSAGE_CONTENT_TYPE_ADD_GROUP_MEMBER 105 添加群组成员
MESSAGE_CONTENT_TYPE_KICKOF_GROUP_MEMBER 106 移出群组成员
MESSAGE_CONTENT_TYPE_QUIT_GROUP 107 退出群组
MESSAGE_CONTENT_TYPE_DISMISS_GROUP 108 解散群组
MESSAGE_CONTENT_TYPE_TRANSFER_GROUP_OWNER 109 转让群组
MESSAGE_CONTENT_TYPE_CHANGE_GROUP_NAME 110 修改群组名称
MESSAGE_CONTENT_TYPE_MODIFY_GROUP_ALIAS 111 修改群昵称
MESSAGE_CONTENT_TYPE_CHANGE_GROUP_PORTRAIT 112 修改群头像
MESSAGE_CONTENT_TYPE_CHANGE_MUTE 113 群组禁言状态变化通知
MESSAGE_CONTENT_TYPE_CHANGE_JOINTYPE 114 群组加入方法变化通知
MESSAGE_CONTENT_TYPE_CHANGE_PRIVATECHAT 115 群组允许私聊状态变化通知
MESSAGE_CONTENT_TYPE_CHANGE_SEARCHABLE 116 群组是否可以被搜索状态变化通知
MESSAGE_CONTENT_TYPE_SET_MANAGER 117 群组管理员设置通知
MESSAGE_CONTENT_TYPE_MUTE_MEMBER 118 群组成员禁言通知
MESSAGE_CONTENT_TYPE_ALLOW_MEMBER 119 群组成员添加白名单通知
MESSAGE_CONTENT_TYPE_KICKOF_GROUP_MEMBER_VISIBLE_NOTIFICATION 120 移出群成员可见通知
MESSAGE_CONTENT_TYPE_QUIT_GROUP_VISIBLE_NOTIFICATION 121 退出群可见通知
MESSAGE_CONTENT_TYPE_MODIFY_GROUP_EXTRA 122 修改群组Extra通知
MESSAGE_CONTENT_TYPE_MODIFY_GROUP_MEMBER_EXTRA 123 修改群成员Extra通知
MESSAGE_CONTENT_TYPE_MODIFY_GROUP_SETTINGS 124 修改群设置通知
VOIP_CONTENT_TYPE_START 400 网络电话发起
VOIP_CONTENT_TYPE_END 402 网络电话结束
VOIP_CONTENT_TYPE_ACCEPT 401 网络电话接听
VOIP_CONTENT_TYPE_SIGNAL 403 网络电话信令
VOIP_CONTENT_TYPE_MODIFY 404 网络电话变更
VOIP_CONTENT_TYPE_ADD_PARTICIPANT 406 添加新的参与者
VOIP_CONTENT_MUTE_VIDEO 407 视频mute状态变化通知
VOIP_CONTENT_CONFERENCE_INVITE 408 会议邀请通知
VOIP_CONTENT_CONFERENCE_CHANGE_MODE 410 会议模式变化通知
VOIP_CONTENT_CONFERENCE_KICKOFF_MEMBER 411 会议移出成员通知
VOIP_CONTENT_CONFERENCE_COMMAND 412 会议命令消息
VOIP_CONTENT_MULTI_CALL_ONGOING 416 群组通话正在进行通知
VOIP_CONTENT_JOIN_CALL_REQUEST 417 请求加入群组通话通知

野火IM支持自定义消息内容,type请使用1000以上

0.0.3. searchableContent

可搜索内容,用于本地搜索或者在服务器搜索

0.0.4. pushContent

对于自定义消息,如果需要推送需要encode此字段。推送内容会使用此字段。此字段会显示在用户手机推送内容区。

0.0.5. pushData

对于自定义消息,如果需要推送需要encode此字段。推送内容会使用此字段。此字段不显示在推送内容中,但可以作为推送点击之后的数据。比如内容为订单号,点击打开对应订单。

0.0.6. binaryContent;

二进制内容。

0.0.7. mentionedType

提醒类型(就是@某人或@全体)。0 不提醒;1 对mentionedTargets里的user进行提醒;2 对群内所有人提醒。

0.0.8. mediaType

媒体类型,媒体消息内容使用,用来区别在服务器端文件对应的bucket。

0.0.9. remoteMediaUrl

媒体类消息的远程地址。

0.0.10. local**

本地使用内容,不会在网络发送。比如媒体文件下载下来需要记录路径,或者本地处理过需要标记一些内容等。

2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2024-10-01 07:37:49

results matching ""

    No results matching ""