差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 后一修订版 两侧同时换到之后的修订记录 | ||
im:android:basics:message [2020/06/09 11:24] liujn [发送文件消息] |
im:android:basics:message [2020/07/03 03:39] liujn |
||
---|---|---|---|
行 12: | 行 12: | ||
//创建一条文本消息,content为消息文字内容,toChatUsername为对方用户或者群聊的id,后文皆是如此 | //创建一条文本消息,content为消息文字内容,toChatUsername为对方用户或者群聊的id,后文皆是如此 | ||
EMMessage message = EMMessage.createTxtSendMessage(content, toChatUsername); | EMMessage message = EMMessage.createTxtSendMessage(content, toChatUsername); | ||
+ | //如果是群聊,设置chattype,默认是单聊 | ||
+ | if (chatType == CHATTYPE_GROUP) | ||
+ | message.setChatType(ChatType.GroupChat); | ||
+ | //发送消息 | ||
+ | EMClient.getInstance().chatManager().sendMessage(message); | ||
+ | </code> | ||
+ | |||
+ | ====发送表情消息==== | ||
+ | 发表情消息实质上是发文本消息。接收方收到文本消息后,首先查询文本消息是否是表情消息,如果是,则显示该文本消息为对应的表情图片。可以参考[[https://unicode.org/emoji/charts/full-emoji-list.html |emoji列表]]来做表情图片和对应的文本字符串的映射。也可以自行维护表情图片和文本字符串的映射。 | ||
+ | <code java> | ||
+ | //创建一条表情消息。表情消息实质上是一个文字消息。emojiCode是表情图片对应的文本字符串,toChatUsername为对方用户或者群聊的id,后文皆是如此 | ||
+ | EMMessage message = EMMessage.createTxtSendMessage(emojiCode, toChatUsername); | ||
//如果是群聊,设置chattype,默认是单聊 | //如果是群聊,设置chattype,默认是单聊 | ||
if (chatType == CHATTYPE_GROUP) | if (chatType == CHATTYPE_GROUP) | ||
行 29: | 行 41: | ||
EMClient.getInstance().chatManager().sendMessage(message); | EMClient.getInstance().chatManager().sendMessage(message); | ||
</code> | </code> | ||
+ | 发送成功后,获取语音消息附件: | ||
+ | <code> | ||
+ | EMVoiceMessageBody voiceBody = (EMVoiceMessageBody) msg.getBody(); | ||
+ | //获取语音文件在服务器的地址 | ||
+ | String voiceRemoteUrl = voiceBody.getRemoteUrl(); | ||
+ | //本地语音文件的资源路径 | ||
+ | Uri voiceLocalUri = voiceBody.getLocalUri(); | ||
+ | </code> | ||
====发送视频消息==== | ====发送视频消息==== | ||
行 40: | 行 59: | ||
EMClient.getInstance().chatManager().sendMessage(message); | EMClient.getInstance().chatManager().sendMessage(message); | ||
</code> | </code> | ||
+ | 发送成功后,获取视频消息缩略图及附件 | ||
+ | <code> | ||
+ | EMVideoMessageBody videoBody = (EMVideoMessageBody) message.getBody(); | ||
+ | //获取视频文件在服务器的路径 | ||
+ | String videoRemoteUrl = videoBody.getRemoteUrl(); | ||
+ | //获取缩略图在服务器的路径 | ||
+ | String thumbnailUrl = videoBody.getThumbnailUrl(); | ||
+ | //本地视频文件的资源路径 | ||
+ | Uri videoLocalUri = videoBody.getLocalUri(); | ||
+ | //本地视频缩略图资源路径 | ||
+ | Uri localThumbUri = videoBody.getLocalThumbUri(); | ||
+ | </code> | ||
====发送图片消息==== | ====发送图片消息==== | ||
行 51: | 行 81: | ||
EMClient.getInstance().chatManager().sendMessage(message); | EMClient.getInstance().chatManager().sendMessage(message); | ||
</code> | </code> | ||
+ | 发送成功后,获取图片消息缩略图及附件 | ||
+ | <code> | ||
+ | EMImageMessageBody imgBody = (EMImageMessageBody) message.getBody(); | ||
+ | //获取图片文件在服务器的路径 | ||
+ | String imgRemoteUrl = imgBody.getRemoteUrl(); | ||
+ | //获取图片缩略图在服务器的路径 | ||
+ | String thumbnailUrl = imgBody.getThumbnailUrl(); | ||
+ | //本地图片文件的资源路径 | ||
+ | Uri imgLocalUri = imgBody.getLocalUri(); | ||
+ | //本地图片缩略图资源路径 | ||
+ | Uri thumbnailLocalUri = imgBody.thumbnailLocalUri(); | ||
+ | </code> | ||
====发送地理位置消息==== | ====发送地理位置消息==== | ||
行 73: | 行 114: | ||
EMClient.getInstance().chatManager().sendMessage(message); | EMClient.getInstance().chatManager().sendMessage(message); | ||
</code> | </code> | ||
+ | 发送成功后,获取文件消息附件 | ||
+ | <code> | ||
+ | EMNormalFileMessageBody fileMessageBody = (EMNormalFileMessageBody) message.getBody(); | ||
+ | //获取文件在服务器的路径 | ||
+ | String fileRemoteUrl = fileMessageBody.getRemoteUrl(); | ||
+ | //本地文件的资源路径 | ||
+ | Uri fileLocalUri = fileMessageBody.getLocalUri(); | ||
+ | </code> | ||
==== 发送透传消息 ==== | ==== 发送透传消息 ==== | ||
行 175: | 行 223: | ||
EMClient.getInstance().chatManager().removeMessageListener(msgListener); | EMClient.getInstance().chatManager().removeMessageListener(msgListener); | ||
</code> | </code> | ||
+ | ===== 下载缩略图及附件 ===== | ||
+ | |||
+ | ==== 下载缩略图 ==== | ||
+ | |||
+ | 如果设置了自动下载,即EMClient.getInstance().getOptions().getAutodownloadThumbnail()为true,SDK接收到消息后会下载缩略图;\\ | ||
+ | 如果没有设置自动下载,需主动调用EMClient.getInstance().chatManager().downloadThumbnail(message)下载。\\ | ||
+ | 下载完成后,调用相应消息body的thumbnailLocalUri()去获取缩略图路径。\\ | ||
+ | 例如: | ||
+ | <code> | ||
+ | EMImageMessageBody imgBody = (EMImageMessageBody) message.getBody(); | ||
+ | //本地图片缩略图资源路径 | ||
+ | Uri thumbnailLocalUri = imgBody.thumbnailLocalUri(); | ||
+ | </code> | ||
+ | ==== 下载附件 ==== | ||
+ | |||
+ | 下载附件的方法为:EMClient.getInstance().chatManager().downloadAttachment(message);\\ | ||
+ | 下载完成后,调用相应消息body的getLocalUri()去获取附件路径。\\ | ||
+ | 例如: | ||
+ | <code> | ||
+ | EMImageMessageBody imgBody = (EMImageMessageBody) message.getBody(); | ||
+ | //本地图片文件的资源路径 | ||
+ | Uri imgLocalUri = imgBody.getLocalUri(); | ||
+ | </code> | ||
+ | |||
===== 监听消息状态 ===== | ===== 监听消息状态 ===== | ||