全部产品
云市场

单数据同步接口

更新时间:2019-11-13 22:22:14

接口说明

同步单条数据至指定用户或设备。

  • 当推送目标用户或设备处于在线状态时,推送数据将直接在线同步至终端。
  • 当推送目标用户或设备处于不在线转状态时,推送数据将持久化至数据库,待终端再次上线并与 MSS 服务建立连接后,再进行同步操作(配置数据持久化操作请参见 新增配置)。

接口 URL 示例

  1. http://11.160.18.15/webapi/sync/single?instanceId=sit_320C94C171133
  • IP(域名)地址:请替换成现场部署的 MSS 服务器 IP 配置。
  • instanceId:组成结构为 workspaceId_AppId,instanceID 为用于 APP 数据逻辑隔离的核心属性。

代码示例

  1. import net.sf.json.JSONObject;
  2. import org.apache.commons.httpclient.HttpStatus;
  3. import org.apache.http.HttpEntity;
  4. import org.apache.http.client.methods.CloseableHttpResponse;
  5. import org.apache.http.client.methods.HttpPost;
  6. import org.apache.http.entity.StringEntity;
  7. import org.apache.http.impl.client.CloseableHttpClient;
  8. import org.apache.http.impl.client.HttpClients;
  9. import org.apache.http.util.EntityUtils;
  10. /**
  11. * 单条推送,使用httpclinet模拟post请求发送到指定服务器(只需要修改apiURL中的服务 器ip地址即可)
  12. */
  13. public class SingleTest {
  14. private static String apiURL = "http://11.162.169.36/webapi/sync/single?instanceId=sit_320C94C171133";
  15. /**
  16. * post请求
  17. *
  18. * @param url URL
  19. * @param json JSONObject
  20. * @return JSONObject
  21. */
  22. private static JSONObject doPost(String url, JSONObject json) {
  23. CloseableHttpClient httpclient = HttpClients.createDefault();
  24. HttpPost httpPost = new HttpPost(url);
  25. JSONObject response = null;
  26. try {
  27. StringEntity s = new StringEntity(json.toString());
  28. StringEntity s = new StringEntity(json.toString(),"UTF-8");
  29. s.setContentEncoding("UTF-8");
  30. //发送json数据需要设置contentType
  31. s.setContentType("application/json");
  32. httpPost.setEntity(s);
  33. CloseableHttpResponse res = httpclient.execute(httpPost);
  34. if (res.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
  35. HttpEntity entity = res.getEntity();
  36. //返回json格式:
  37. String result = EntityUtils.toString(entity);
  38. response = JSONObject.fromObject(result);
  39. }
  40. } catch (Exception e) {
  41. throw new RuntimeException(e);
  42. }
  43. return response;
  44. }
  45. public static void main(String arg[]) {
  46. JSONObject params = new JSONObject();
  47. //bizType
  48. params.put("bizType", "UCHAT");
  49. //用户ID or 设备ID
  50. params.put("linkToken", "2088102147396225");
  51. //消息体,原样透传至客户端
  52. JSONObject payload = new JSONObject();
  53. payload.put("name", "李四");
  54. payload.put("age", "30");
  55. payload.put("address", "浙江省杭州市");
  56. //String格式
  57. params.put("payload", JSON.toJSONString(payload));
  58. //业务ID,可包含业务规则,长度不超过100,本DEMO为随机一个值
  59. Double i = Math.random() * 1000000;
  60. String[] num = i.toString().split("\\.");
  61. params.put("thirdMsgId", "test_third_msg_id_" + num[0] + System.currentTimeMillis());
  62. //可支持的最小客户端版本
  63. params.put("appMinVersion", "0.0.0.0");
  64. //可支持的最大客户端版本
  65. params.put("appMaxVersion", "100.100.100.100");
  66. //当前时间
  67. long today = System.currentTimeMillis();
  68. //有效期30天
  69. long validTimeEnd = today + 30 * 24 * 60 * 60 * 1000L;
  70. //有效期
  71. params.put("validTimeEnd", validTimeEnd);
  72. //提交Post请求
  73. JSONObject ret = doPost(apiURL, params);
  74. System.out.println(ret);
  75. }
  76. }

请求参数

参数名称 是否必填 数据类型 最大长度 说明
bizType String 30 业务场景标识:在 mPaaS 控制台上进行推送配置时设置的 同步标识,详细操作请参见 管理控制台
linkToken String 100 根据配置的 bizType 决定,用户维度业务填写 userId, 设备维度业务填写 utdid。
payload String 4096 推送的数据,为文本字符串或 Josn 字符串。与 binaryPayload 二选一,不可都为空。
thirdMsgId String 100 一次数据同步请求 ID,由业务方自定义,用于数据关联和幂等控制。bizType + linkToken + thirdMsgId 需唯一,重复时,对应的新推送数据不予入库,接口返回调用成功。
binaryPayload String 4096 推送的数据,由一个原始 byte 数组经过 base64 编码之后生成的字符串。与 payload 二选一,不可都为空。
osType String 10 指定消息推送的客户端操作系统类型,(iOS / Android),不限制操作系统类型时,留空。
appMinVersion String 20 支持的最小客户端版本号【包含】,仅推送至大于等于该版本的客户端。例如:8.6.0.9999 ,强烈建议使用标准格式的版本号。
appMaxVersion String 20 支持的最大客户端版本号【包含】,仅推送至小于等于该版本的客户端。如:9.0.0.9999 ,强烈建议使用标准格式的版本号。
validTimeEnd long 13 推送有效期结束时间,过期后,MSS 服务端将不再推送过期数据至客户端。格式: (new Date()).getTime();

返回参数

返回数据为 JOSN 格式,示例代码如下:

  1. {
  2. "msg": "SUCCESS",
  3. "success": true
  4. }

各属性含义及解释:

名称 类型 示例 说明
success
boolean true / false 业务调用结果,成功返回 true,失败返回 false。失败的情况下,可通过 msg 查看失败原因,参考下表 结果码
msg String SUCCESS 结果码

结果码:

调用结果 结果码 含义
true SUCCESS 业务成功 - 在线推送成功
true DUPLICATED_BIZ_ID bizId  重复,在线推送成功
true NOT_ONLINE 用户 / 设备不在线
false THIRDMSGID_IS_NULL thirdMsgId 为空
false BIZ_NOT_ONLINE 同步配置未提交上线
false ARGS_IS_NULL 请求必选参数为空
false NOT_SUPPORT_GLOBAL 接口不支持全局业务
false PAYLOAD_LONG 消息体超长
false THIRD_MSG_ID_LONG 第三方消息 Id 过长
false SYSTEM_ERROR 系统异常