本文档提供消息相关的类型和接口使用说明。API 接口详细文档参看 Android API 参考、iOS API 参考。
BIMMessage 为 IMSDK 的消息内容承载类,在使用 IMSDK 的过程中会频繁的使用该类。
IMSDK 支持如下消息:
| 消息分类 | 消息类型 | 说明 |
|---|---|---|
| 文本消息 | BIM_MESSAGE_TYPE_TEXT | 普通文本消息 |
| 图片消息 | BIM_MESSAGE_TYPE_IMAGE | 图片消息,含原始图,缩略图 |
| 视频消息 | BIM_MESSAGE_TYPE_VIDEO | 视频文件以及视频封面图 |
| 语音消息 | BIM_MESSAGE_TYPE_AUDIO | 不超过 60s 的语音文件 |
| 文件消息 | BIM_MESSAGE_TYPE_FILE | 文件消息,最大不超过 100M |
| 自定义消息 | BIM_MESSAGE_TYPE_CUSTOM | 开发者自定义字符串发送,IMSDK 透传 |
使用 BIMClient 中的 createTextMessage 方法创建文本消息。
BIMMessage textMessage = BIMClient.getInstance().createTextMessage("消息内容");
javaBIMMessage *textMessage = [[BIMClient sharedInstance] createTextMessage:@"消息内容"];
objectivec使用 BIMClient 中的 createImageMessage 方法创建图片消息,其中 path 为当前发送图片文件的本地路径。
BIMMessage imageMessage = BIMClient.getInstance().createImageMessage(path);
javaBIMMessage *imageMessage = [[BIMClient sharedInstance] createImageMessage:path];
objectivec使用 BIMClient 中的 createVoiceMessage 方法创建语音消息,其中 path 为当前语音文件的本地路径。
BIMMessage audioMessage = BIMClient.getInstance().createAudioMessage(path);
javaBIMMessage *audioMessage = [[BIMClient sharedInstance] createAudioMessage:path duration:duration];
objectivec使用 BIMClient 中的 createVideoMessage 方法创建视频消息,其中 path 为当前视频文件的本地路径。
BIMMessage videoMessage = BIMClient.getInstance().createVideoMessage(path);
javaBIMMessage *videoMessage = [[BIMClient sharedInstance] createVideoMessage:path];
objectivec使用 BIMClient 中的 createFileMessage 方法创建文件消息,其中 path 为当前文件的本地路径,uri 为当前文件本地 uri,path 和 uri 可以二选一使用(iOS 只有 path),推荐优先使用 path。
/**
* 创建文件消息
* @param uri 文件uri
* @param path 文件路径
* @param fileName 文件名称
* @param length 文件大小
* @return
*/
BIMMessage fileMessage = BIMClient.getInstance().createFileMessage(uri, path, fileName, length);
javaBIMMessage *fileMessage = [[BIMClient sharedInstance] createFileMessage:path fileName:fileName];
objectivec使用 BIMClient 中的 createCustomMessage 方法创建文件消息,其中 data 参数为自定义消息内容,通常为 json 格式数据。
/**
* 创建自定义消息
* @param data 自定义消息内容
* @return
*/
BIMMessage customMessage = BIMClient.getInstance().createCustomMessage(data);
javaBIMMessage *customMessage = [[BIMClient sharedInstance] createCustomMessage:data];
objectivec发送消息的方法在 BIMClient 中,使用 sendMessage 接口可实现,示例代码如下。
/**
* @param message
* @param conversationId 会话id
* @param callback 回调
*/
BIMClient.getInstance().sendMessage(msg, conversationId, new BIMSendCallback() {
@Override
public void onAdd(BIMMessage message) {
//媒体消息回调,方便媒体消息上屏
}
@Override
public void onProgress(BIMMessage message, int progress) {
//媒体消息回调,上传进度
}
@Override
public void onSaved(BIMMessage bimMessage) {
//媒体消息回调,消息已经入库
}
@Override
public void onSuccess(BIMMessage bimMessage) {
//发送成功
}
@Override
public void onAsync(BIMMessage bimMessage, boolean isUpdate) {
//发送风控回调
}
@Override
public void onError(BIMMessage bimMessage, int code, String desc) {
//发送失败
}
})
java//发送消息
[[BIMClient sharedInstance] sendMessage:sendMessage conversationId:self.conversation.conversationID saved:nil completion:^(BIMMessage * _Nonnull message, BIMError * _Nullable error) {
}];
objectivec使用 BIMClient 中的 addMessageListener 设置消息监听,可通过 bimMessage.getMsgType() 获取消息类型属性。
BIMClient.getInstance().addMessageListener(new BIMMessageListener() {
@Override
public void onReceiveMessage(BIMMessage bimMessage) {
//收到消息回调
}
@Override
public void onSendMessage(BIMMessage bimMessage) {
//本地发出消息回调
}
@Override
public void onDeleteMessage(BIMMessage bimMessage) {
//删除消息回调
}
@Override
public void onRecallMessage(BIMMessage bimMessage) {
//撤回消息回调
}
@Override
public void onUpdateMessage(BIMMessage bimMessage) {
//消息更新回调
}
});
java[[BIMClient sharedInstance] addMessageListener:<#(nonnull id<BIMMessageListener>)#>];
/// 收到新消息
- (void)onReceiveMessage:(BIMMessage *)message {
}
/// 收到消息被删除
- (void)onDeleteMessage:(NSString *)msgID {
}
/// 收到消息撤回
- (void)onRecallMessage:(BIMMessage *)message {
}
/// 消息被修改(内容+扩展)
- (void)onUpdateMessage:(BIMMessage *)message {
}
/// 发送消息入库完成
- (void)onSendMessage:(BIMMessage *)message {
}
objectivec