环信服务器发送消息ext,发送消息

发送消息

聊天相关 API,可以发送文本消息,发送图片消息,发送语音消息,发送视频消息,发送透传消息和发送扩展消息。

发送文件类型消息要先把文件上传到环信服务器,参考文档:文件上传下载

REST接口发消息,不会判断环信id在appkey下是否存在。

流程说明

消息类型说明

发送文本/透传消息直接编辑内容发送

发送图片/语音/视频消息需要先上传这三类文件,从接口返回值中获取到相应的参数,按照 API 要求编辑到消息体中然后的发送

发送文本消息

给一个或者多个用户,或者一个或者多个群组发送消息,并且通过可选的 from 字段让接收方看到发送方是不同的人。同时,支持扩展字段,通过 ext 属性,APP 可以发送自己专属的消息结构。

注意:在调用程序中,请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试,同时用户消息+扩展字段的长度在4k字节以内。详见接口限流说明。

HTTP Request

bb39c20fd837ec8278cb6614f5e083b1.png/{org_name}/{app_name}/messages

Request Headers

参数说明

Content-Typeapplication/json

AuthorizationBearer ${token}

Request Body

参数说明

target_type发送的目标类型;users:给用户发消息,chatgroups:给群发消息,chatrooms:给聊天室发消息

target发送的目标;注意这里需要用数组,数组内添加的最大用户数默认600个,即使只有一个用户,也要用数组 ['u1'];给用户发送时数组元素是用户名,给群组发送时,数组元素是groupid

msg消息内容

type消息类型;txt:文本消息,img:图片消息,loc:位置消息,audio:语音消息,video:视频消息,file:文件消息

from表示消息发送者;无此字段Server会默认设置为“from”:“admin”,有from字段但值为空串(“”)时请求失败

Response Body

在返回值中查看data字段包含的信息

参数说明

username接受消息的用户名

success表示消息发送成功

请求示例

curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer YWMtP5n9zvOQEei7KclxPqJTkgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnXcBpfQBPGgDC09w5IdrfqG_H8_F53VLVTG0_82GXyEF8ZdMCt9-UpQ' -d '{"target_type": "users","target": ["user2","user3"],"msg": {"type": "txt","msg": "testmessage"},"from": "user1"}' 'http://a1.easemob.com/easemob-demo/testapp/messages'

可能返回的结果示例

返回值200,表示消息发送成功

{

"action": "post",

"application": "8be024f0-e978-11e8-b697-5d598d5f8402",

"path": "/messages",

"uri": "https://a1.easemob.com/easemob-demo/testapp/messages",

"data": {

"user2": "success",

"user3": "success"

},

"timestamp": 1543922150902,

"duration": 1,

"organization": "easemob-demo",

"applicationName": "testapp"

}

返回值400,表示 massage 结构错误

{

"error": "json_parse",

"timestamp": 1543922465246,

"duration": 0,

"exception": "org.codehaus.jackson.JsonParseException",

"error_description": "Unexpected character ('}' (code 125)): was expecting double-quote to start field name\n at [Source: java.io.BufferedInputStream@7ba7eef2; line: 11, column: 2]"

}

返回值401,表示未授权[无token、token错误、token过期]

{

"error": "auth_bad_access_token",

"timestamp": 1543922590032,

"duration": 0,

"exception": "org.apache.usergrid.rest.exceptions.SecurityException",

"error_description": "Unable to authenticate due to corrupt access token"

}

如果返回结果是429、503或者其他5xx,有可能代表该接口被限流了,请稍微暂停一下并重试。详见接口限流说明

发送图片消息

给一个或者多个用户,或者一个或者多个群组发送消息,并且通过可选的 from 字段让接收方看到发送方是不同的人。同时,支持扩展字段,通过 ext 属性,APP 可以发送自己专属的消息结构。

注意:在调用程序中,请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见接口限流说明。

HTTP Request

bb39c20fd837ec8278cb6614f5e083b1.png/{org_name}/{app_name}/messages

Request Headers

参数说明

Content-Typeapplication/json

AuthorizationBearer ${token}

Request Body

参数说明

target_type发送的目标类型;users:给用户发消息,chatgroups:给群发消息,chatrooms:给聊天室发消息

target发送的目标;注意这里需要用数组,数组内添加的最大用户数默认600个,即使只有一个用户,也要用数组 ['u1'];给用户发送时数组元素是用户名,给群组发送时,数组元素是groupid

msg消息内容

type消息类型;txt:文本消息,img:图片消息,loc:位置消息,audio:语音消息,video:视频消息,file:文件消息

url域名/orgname/appname/chatfiles/成功上传文件返回的UUID。参考请求示例

filename图片名称

secret成功上传文件后返回的secret

size图片尺寸;height:高度,width:宽度

from表示消息发送者;无此字段Server会默认设置为“from”:“admin”,有from字段但值为空串(“”)时请求失败

Response Body

在返回值中查看data字段包含的信息

参数说明

username接受消息的用户名

success表示消息发送成功

请求示例

curl -X POST -i 'https://a1.easemob.com/easemob-demo/testapp/messages' -H 'Authorization: Bearer YWMtsFVigGSuEeSTc7k5183Z5QAAAUqzeFx_9IjRch-ZxNbIlBIvx_4GWvzheSU' -d '{"target_type":"users","target":["user2"],"from":"user1","msg":{"type":"img","filename":"testimg.jpg","secret":"VfEpSmSvEeS7yU8dwa9rAQc-DIL2HhmpujTNfSTsrDt6eNb_","url":"https://a1.easemob.com/easemob-demo/testapp/chatfiles/55f12940-64af-11e4-8a5b-ff2336f03252","size":{"width":480,"height":720}}}'

可能返回的结果示例

返回值200,表示消息发送成功

{

"action" : "post",

"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",

"uri" : "https://a1.easemob.com/easemob-demo/testapp/messages",

"entities" : [ ],

"data" : {

"user2" : "success"

},

"timestamp" : 1415166497129,

"duration" : 12,

"organization" : "easemob-demo",

"applicationName" : "testapp"

}

返回值400,表示 massage 结构错误

{

"error": "json_parse",

"timestamp": 1543922465246,

"duration": 0,

"exception": "org.codehaus.jackson.JsonParseException",

"error_description": "Unexpected character ('}' (code 125)): was expecting double-quote to start field name\n at [Source: java.io.BufferedInputStream@7ba7eef2; line: 11, column: 2]"

}

返回值401,表示未授权[无token、token错误、token过期]

{

"error": "auth_bad_access_token",

"timestamp": 1543922590032,

"duration": 0,

"exception": "org.apache.usergrid.rest.exceptions.SecurityException",

"error_description": "Unable to authenticate due to corrupt access token"

}

如果返回结果是429、503或者其他5xx,有可能代表该接口被限流了,请稍微暂停一下并重试。详见接口限流说明

发送语音消息

发送语音文件,需要先上传语音文件,然后再发送此消息。(URL 中的 UUID 和 secret 可以从上传后的 response 获取)

注意:在调用程序中,请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见接口限流说明。

HTTP Request

bb39c20fd837ec8278cb6614f5e083b1.png/{org_name}/{app_name}/messages

Request Headers

参数说明

Content-Typeapplication/json

AuthorizationBearer ${token}

Request Body

参数说明

target_type发送的目标类型;users:给用户发消息,chatgroups:给群发消息,chatrooms:给聊天室发消息

target发送的目标;注意这里需要用数组,数组内添加的最大用户数默认600个,即使只有一个用户,也要用数组 ['u1'];给用户发送时数组元素是用户名,给群组发送时,数组元素是groupid

msg消息内容

type消息类型;txt:文本消息,img:图片消息,loc:位置消息,audio:语音消息,video:视频消息,file:文件消息

url成功上传文件返回的UUID

filename语音名称

secret成功上传文件后返回的secret

length语音时间(单位:秒)

from表示消息发送者;无此字段Server会默认设置为“from”:“admin”,有from字段但值为空串(“”)时请求失败

Response Body

在返回值中查看data字段包含的信息

参数说明

username接受消息的用户名

success表示消息发送成功

请求示例

curl -X POST -H "Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" "https://a1.easemob.com/easemob-demo/testapp/messages" -d '{"target_type" : "users","target" : ["user2", "user3"],"msg" : {"type": "audio","url": "https://a1.easemob.com/easemob-demo/testapp/chatfiles/1dfc7f50-55c6-11e4-8a07-7d75b8fb3d42","filename": "testaudio.amr","length": 10,"secret": "Hfx_WlXGEeSdDW-SuX2EaZcXDC7ZEig3OgKZye9IzKOwoCjM"},"from" : "user1" }'

可能返回的结果示例

返回值200,表示消息发送成功

{

"action": "post",

"application": "8be024f0-e978-11e8-b697-5d598d5f8402",

"path": "/messages",

"uri": "https://a1.easemob.com/easemob-demo/testapp/messages",

"data": {

"user2": "success",

"user3": "success"

},

"timestamp": 1543922150902,

"duration": 1,

"organization": "easemob-demo",

"applicationName": "testapp"

}

返回值400,表示 massage 结构错误

{

"error": "json_parse",

"timestamp": 1543922465246,

"duration": 0,

"exception": "org.codehaus.jackson.JsonParseException",

"error_description": "Unexpected character ('}' (code 125)): was expecting double-quote to start field name\n at [Source: java.io.BufferedInputStream@7ba7eef2; line: 11, column: 2]"

}

返回值401,表示未授权[无token、token错误、token过期]

{

"error": "auth_bad_access_token",

"timestamp": 1543922590032,

"duration": 0,

"exception": "org.apache.usergrid.rest.exceptions.SecurityException",

"error_description": "Unable to authenticate due to corrupt access token"

}

如果返回结果是429、503或者其他5xx,有可能代表该接口被限流了,请稍微暂停一下并重试。详见接口限流说明

发送视频消息

发送视频消息,需要先上传视频文件和视频缩略图文件,然后再发送此消息。(URL 中的 UUID 和 secret 可以从上传后的 response 获取)

注意:在调用程序中,请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见接口限流说明。

HTTP Request

bb39c20fd837ec8278cb6614f5e083b1.png/{org_name}/{app_name}/messages

Request Headers

参数说明

Content-Typeapplication/json

AuthorizationBearer ${token}

Request Body

参数说明

target_type发送的目标类型;users:给用户发消息,chatgroups:给群发消息,chatrooms:给聊天室发消息

target发送的目标;注意这里需要用数组,数组内添加的最大用户数默认600个,即使只有一个用户,也要用数组 ['u1'];给用户发送时数组元素是用户名,给群组发送时,数组元素是groupid

type消息类型;txt:文本消息,img:图片消息,loc:位置消息,audio:语音消息,video:视频消息,file:文件消息

filename视频文件名称

thumb成功上传视频缩略图返回的UUID

length视频播放长度

secret成功上传视频文件后返回的secret

file_length视频文件大小(单位:字节)

thumb_secret成功上传视频缩略图后返回的secret

url成功上传视频文件返回的UUID

Response Body

在返回值中查看data字段包含的信息

参数说明

username接受消息的用户名

success表示消息发送成功

请求示例

curl -X POST -i 'https://a1.easemob.com/easemob-demo/testapp/messages' -H 'Authorization: Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ' -d '{"target_type":"users","target":["user2","user3"],"from":"user1","msg":{"type":"video","filename" : "testvideo.mp4","thumb" : "https://a1.easemob.com/easemob-demo/testapp/chatfiles/67279b20-7f69-11e4-8eee-21d3334b3a97","length" : 0,"secret":"VfEpSmSvEeS7yU8dwa9rAQc-DIL2HhmpujTNfSTsrDt6eNb_","file_length" : 58103,"thumb_secret" : "ZyebKn9pEeSSfY03ROk7ND24zUf74s7HpPN1oMV-1JxN2O2I","url" : "https://a1.easemob.com/easemob-demo/testapp/chatfiles/671dfe30-7f69-11e4-ba67-8fef0d502f46"}}'

可能返回的结果示例

返回值200,表示消息发送成功

{

"action" : "post",

"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",

"uri" : "https://a1.easemob.com/easemob-demo/testapp/messages",

"entities" : [ ],

"data" : {

"user2" : "success",

"user3" : "success"

},

"timestamp" : 1415166234863,

"duration" : 5,

"organization" : "easemob-demo",

"applicationName" : "testapp"

}

返回值400,表示 massage 结构错误

{

"error": "json_parse",

"timestamp": 1543922465246,

"duration": 0,

"exception": "org.codehaus.jackson.JsonParseException",

"error_description": "Unexpected character ('}' (code 125)): was expecting double-quote to start field name\n at [Source: java.io.BufferedInputStream@7ba7eef2; line: 11, column: 2]"

}

返回值401,表示未授权[无token、token错误、token过期]

{

"error": "auth_bad_access_token",

"timestamp": 1543922590032,

"duration": 0,

"exception": "org.apache.usergrid.rest.exceptions.SecurityException",

"error_description": "Unable to authenticate due to corrupt access token"

}

如果返回结果是429、503或者其他5xx,有可能代表该接口被限流了,请稍微暂停一下并重试。详见接口限流说明

发送位置消息

位置消息:获取到地址的经纬度,填写正确地址发送。

注意:在调用程序中,请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试,同时用户消息+扩展字段的长度在4k字节以内。详见接口限流说明。

HTTP Request

bb39c20fd837ec8278cb6614f5e083b1.png/{org_name}/{app_name}/messages

Request Headers

参数说明

Content-Typeapplication/json

AuthorizationBearer ${token}

Request Body

参数说明

target_type发送的目标类型;users:给用户发消息,chatgroups:给群发消息,chatrooms:给聊天室发消息

target发送的目标;注意这里需要用数组,数组内添加的最大用户数默认600个,即使只有一个用户,也要用数组 ['u1'];给用户发送时数组元素是用户名,给群组发送时,数组元素是groupid

msg消息内容

type消息类型;txt:文本消息,img:图片消息,loc:位置消息,audio:语音消息,video:视频消息,file:文件消息

from表示消息发送者;无此字段Server会默认设置为“from”:“admin”,有from字段但值为空串(“”)时请求失败

Response Body

在返回值中查看data字段包含的信息

参数说明

username接受消息的用户名

success表示消息发送成功

请求示例

curl -X POST -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer YWMtP5n9zvOQEei7KclxPqJTkgAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnXcBpfQBPGgDC09w5IdrfqG_H8_F53VLVTG0_82GXyEF8ZdMCt9-UpQ' -d '{"target_type": "users","target": ["user2"],"msg": {"type": "loc","lat": "39.966","lng":"116.322",."addr":"中国北京市海淀区中关村"},"from": "user1"}' 'http://a1.easemob.com/easemob-demo/testapp/messages'

可能返回的结果示例

返回值200,表示消息发送成功

{

"action": "post",

"application": "8be024f0-e978-11e8-b697-5d598d5f8402",

"path": "/messages",

"uri": "https://a1.easemob.com/easemob-demo/testapp/messages",

"data": {

"user2": "success"

},

"timestamp": 1543922150902,

"duration": 1,

"organization": "easemob-demo",

"applicationName": "testapp"

}

返回值400,表示 massage 结构错误

{

"error": "json_parse",

"timestamp": 1543922465246,

"duration": 0,

"exception": "org.codehaus.jackson.JsonParseException",

"error_description": "Unexpected character ('}' (code 125)): was expecting double-quote to start field name\n at [Source: java.io.BufferedInputStream@7ba7eef2; line: 11, column: 2]"

}

返回值401,表示未授权[无token、token错误、token过期]

{

"error": "auth_bad_access_token",

"timestamp": 1543922590032,

"duration": 0,

"exception": "org.apache.usergrid.rest.exceptions.SecurityException",

"error_description": "Unable to authenticate due to corrupt access token"

}

如果返回结果是429、503或者其他5xx,有可能代表该接口被限流了,请稍微暂停一下并重试。详见接口限流说明

发送透传消息

透传消息:不会在客户端提示(铃声、震动、通知栏等),也不会有 APNS 推送(苹果推送),但可以在客户端监听到,具体功能可以根据自身自定义。

注意:在调用程序中,请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见接口限流说明。

HTTP Request

bb39c20fd837ec8278cb6614f5e083b1.png/{org_name}/{app_name}/messages

Request Headers

参数说明

Content-Typeapplication/json

AuthorizationBearer ${token}

Request Body

参数说明

target_type发送的目标类型;users:给用户发消息,chatgroups:给群发消息,chatrooms:给聊天室发消息

target发送的目标;注意这里需要用数组,数组内添加的最大用户数默认600个,即使只有一个用户,也要用数组 ['u1'];给用户发送时数组元素是用户名,给群组发送时,数组元素是groupid

msg消息内容

type消息类型;txt:文本消息,img:图片消息,loc:位置消息,audio:语音消息,video:视频消息,file:文件消息,cmd:透传消息

from表示消息发送者;无此字段Server会默认设置为“from”:“admin”,有from字段但值为空串(“”)时请求失败

Response Body

在返回值中查看data字段包含的信息

参数说明

username接受消息的用户名

success表示消息发送成功

请求示例

curl -X POST -H "Authorization:Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" -i "https://a1.easemob.com/easemob-demo/testapp/messages" -d '{"target_type":"users","target":["user2","user3"],"msg":{"type":"cmd","action":"action1"},"from":"user1"}'

可能返回的结果示例

返回值200,表示消息发送成功

{

"action" : "post",

"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",

"uri" : "https://a1.easemob.com/easemob-demo/testapp/messages",

"entities" : [ ],

"data" : {

"user2" : "success",

"user3" : "success"

},

"timestamp" : 1415167842297,

"duration" : 4,

"organization" : "easemob-demo",

"applicationName" : "testapp"

}

返回值400,表示 massage 结构错误

{

"error": "json_parse",

"timestamp": 1543922465246,

"duration": 0,

"exception": "org.codehaus.jackson.JsonParseException",

"error_description": "Unexpected character ('}' (code 125)): was expecting double-quote to start field name\n at [Source: java.io.BufferedInputStream@7ba7eef2; line: 11, column: 2]"

}

返回值401,表示未授权[无token、token错误、token过期]

{

"error": "auth_bad_access_token",

"timestamp": 1543922590032,

"duration": 0,

"exception": "org.apache.usergrid.rest.exceptions.SecurityException",

"error_description": "Unable to authenticate due to corrupt access token"

}

如果返回结果是429、503或者其他5xx,有可能代表该接口被限流了,请稍微暂停一下并重试。详见接口限流说明

发送自定义消息

自定义消息:若普通消息类型不满足用户消息需求,可以使用自定义消息来自定义消息类型,主要是通过message的customEvent字段实现。

注意:在调用程序中,请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见接口限流说明。

HTTP Request

bb39c20fd837ec8278cb6614f5e083b1.png/{org_name}/{app_name}/messages

Request Headers

参数说明

Content-Typeapplication/json

AuthorizationBearer ${token}

Request Body

参数说明

target_type发送的目标类型;users:给用户发消息,chatgroups:给群发消息,chatrooms:给聊天室发消息

target发送的目标;注意这里需要用数组,数组内添加的最大用户数默认600个,即使只有一个用户,也要用数组 ['u1'];给用户发送时数组元素是用户名,给群组发送时,数组元素是groupid

msg消息内容

type消息类型;txt:文本消息,img:图片消息,loc:位置消息,audio:语音消息,video:视频消息,file:文件消息,custom:自定义消息

customEvent用户自定义的事件类型,必须是string,值必须满足正则表达式 [a-zA-Z0-9-_/\.]{1,32},最短1个字符 最长32个字符

customExts用户自定义的事件属性,类型必须是Map,最多可以包含16个元素。customExts 是可选的,不需要可以不传

from表示消息发送者;无此字段Server会默认设置为“from”:“admin”,有from字段但值为空串(“”)时请求失败

ext扩展属性,由APP自己定义。可以没有这个字段,但是如果有,值不能是“ext:null”这种形式,否则出错

attr1消息的扩展内容,可以增加字段,扩展消息主要解析部分,必须是基本类型数据

Response Body

在返回值中查看data字段包含的信息

参数说明

username接受消息的用户名

success表示消息发送成功

请求示例

curl -L -X POST 'https://a1.easemob.com/easemob-demo/testapp/messages' -H 'Accept: application/json' -H 'Content-Type: application/json' -H 'Authorization: Bearer ${token}' -d '{ "target_type":"users", "target":["user2"], "msg":{"type":"custom", "customEvent":"gift_1", "customExts":{"name":"flower","size":"16","price":"100"}}, "from":"user1","ext":{"attr1":"test"}}'

可能返回的结果示例

返回值200,表示消息发送成功

{

"path": "/messages",

"uri": "https://a1.easemob.com/easemob-demo/testapp/messages",

"timestamp": 1597292981767,

"organization": "easemob-demo",

"application": "e82bcc5f-3366-4d96-a7c1-92de917ea2b0",

"action": "post",

"data": {

"user2": "success"

},

"duration": 0,

"applicationName": "testapp"

}

返回值400,表示 massage 结构错误

{

"error": "illegal_argument",

"exception": "java.lang.IllegalArgumentException",

"timestamp": 1597292940854,

"duration": 1,

"error_description": "target_type must be provided"

}

返回值401,表示未授权[无token、token错误、token过期]

{

"error": "unauthorized",

"exception": "EasemobSecurityException",

"timestamp": 1597292804746,

"duration": 1,

"error_description": "Unable to authenticate (OAuth)"

}

如果返回结果是429、503或者其他5xx,有可能代表该接口被限流了,请稍微暂停一下并重试。详见接口限流说明

发送扩展消息

扩展消息:若普通消息类型不满足用户消息需求,可以使用扩展消息。任何类型的消息都支持扩展,主要是通过message的ext字段实现。

注意:在调用程序中,请求体如果超过 5kb 会导致413错误,需要拆成几个更小的请求体重试。详见接口限流说明。

HTTP Request

bb39c20fd837ec8278cb6614f5e083b1.png/{org_name}/{app_name}/messages

Request Headers

参数说明

Content-Typeapplication/json

AuthorizationBearer ${token}

Request Body

参数说明

target_type发送的目标类型;users:给用户发消息,chatgroups:给群发消息,chatrooms:给聊天室发消息

target发送的目标;注意这里需要用数组,数组内添加的最大用户数默认600个,即使只有一个用户,也要用数组 ['u1'];给用户发送时数组元素是用户名,给群组发送时,数组元素是groupid

msg消息内容

type消息类型,不局限与文本消息。任何消息类型都可以加扩展消息;txt:文本消息,img:图片消息,loc:位置消息,audio:语音消息,video:视频消息,file:文件消息

msg消息;随意传入都可以

from表示消息发送者;无此字段Server会默认设置为“from”:“admin”,有from字段但值为空串(“”)时请求失败

ext扩展属性,由APP自己定义。可以没有这个字段,但是如果有,值不能是“ext:null”这种形式,否则出错。Key值类型必须是NSString,Value值类型必须是NSString或者 NSNumber类型的 BOOL,int,unsigned in,long long,double。

attr1消息的扩展内容,可以增加字段,扩展消息主要解析部分,必须是基本类型数据

Response Body

在返回值中查看data字段包含的信息

参数说明

username接受消息的用户名

success表示消息发送成功

请求示例

curl -X POST -H "Authorization:Bearer YWMtxc6K0L1aEeKf9LWFzT9xEAAAAT7MNR_9OcNq-GwPsKwj_TruuxZfFSC2eIQ" -i "https://a1.easemob.com/easemob-demo/testapp/messages" -d '{"target_type":"users","target":["user2","user3"],"msg":{"type":"txt","msg":"testmessage"},"from":"user1","ext":{"attr1":"test"}}'

可能返回的结果示例

返回值200,表示消息发送成功

{

"action" : "post",

"application" : "4d7e4ba0-dc4a-11e3-90d5-e1ffbaacdaf5",

"uri" : "https://a1.easemob.com/easemob-demo/testapp/messages",

"entities" : [ ],

"data" : {

"user2" : "success",

"user3" : "success"

},

"timestamp" : 1415167842297,

"duration" : 4,

"organization" : "easemob-demo",

"applicationName" : "testapp"

}

返回值400,表示 massage 结构错误

{

"error": "json_parse",

"timestamp": 1543922465246,

"duration": 0,

"exception": "org.codehaus.jackson.JsonParseException",

"error_description": "Unexpected character ('}' (code 125)): was expecting double-quote to start field name\n at [Source: java.io.BufferedInputStream@7ba7eef2; line: 11, column: 2]"

}

返回值401,表示未授权[无token、token错误、token过期]

{

"error": "auth_bad_access_token",

"timestamp": 1543922590032,

"duration": 0,

"exception": "org.apache.usergrid.rest.exceptions.SecurityException",

"error_description": "Unable to authenticate due to corrupt access token"

}

如果返回结果是429、503或者其他5xx,有可能代表该接口被限流了,请稍微暂停一下并重试。详见接口限流说明

iOS扩展消息

环信提供以下几种扩展字段:

扩展字段描述

em_push_content

em_push_sound

em_push_mutable_content

em_ignore_notification

em_force_notification

—-

### 如何通过 SDK 发送视频消息 要实现通过 SDK 发送视频消息的功能,可以按照以下方式操作: #### 1. 初始化 IM SDK 在发送任何消息之前,必须确保已经完成了 IM SDK 的初始化工作。如果没有完成此步骤,请参考官方文档中的相关内容进行配置[^1]。 #### 2. 准备视频文件 为了成功发送视频消息,需要准备一个有效的本地视频文件路径或者 URL 地址作为数据源。以下是获取本地视频文件的一个简单示例代码片段: ```swift let videoURL = Bundle.main.url(forResource: "example", withExtension: "mp4")! if let data = try? Data(contentsOf: videoURL) { // 使用该数据创建消息对象 } ``` #### 3. 创建并发送视频消息 利用 `EMMessage` 类来构建一条新的消息实例,并指定其类型为 `video`。接着调用相应的 API 方法将其传递给目标用户或群组。 ```swift import HyphenateChat func sendVideoMessage(to chatId: String, filePath: URL) { guard let messageBody = EMFileMessageBody(filePath: filePath.path) else { return } let msg = EMMessage(conversationID: chatId, from: EMClients.getInstance().currentUsername!, to: chatId, body: messageBody, ext: nil) let conversation = EMClients.getInstance().chatManager.asyncGetConversation(chatId, type: .chat) conversation?.asyncSendMessage(msg, progress: nil) { error in if let err = error { print("Failed to send the video message due to \(err.localizedDescription)") } else { print("Successfully sent the video message.") } } } ``` 上述函数展示了如何封装一段逻辑用于向特定联系人发送视频资源。 #### 4. 接收端处理接收到的消息 当另一方设备上安装的应用程序接收到此类媒体形式的通知时,它应该能够解析这些息并展示出来供查看者消费它们的内容。这通常涉及到设置监听器以及定义渲染视图组件等方面的工作。 --- ### 注意事项 - **版本兼容性**: 如果使用的 SDK 版本低于 4.4.0,则可能无法直接转发未下载的附件类消息。在这种情况下,建议升级至最新稳定版以获得更好的功能支持和服务体验[^2]。 - **性能优化**: 对于大尺寸多媒体素材来说,在实际开发过程中还需要考虑带宽消耗、存储空间占用等问题,因此有必要采取适当措施加以缓解,比如压缩编码技术应用等手段提高传输效率降低延迟影响用户体验质量[^4]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值