全部产品
云市场
云游戏

使用 SDK

更新时间:2020-07-10 11:56:54

重要:自 2020 年 6 月 28 日起,mPaaS 停止维护 10.1.32 基线。请使用 10.1.6810.1.60 系列基线。可以参考 mPaaS 10.1.68 升级指南mPaaS 10.1.60 升级指南 进行基线版本升级。

前置条件

确认您所使用的 SDK 版本 ≥ 10.1.32。

修改项目配置

  1. 在 Portal 工程的 ..\app\src\main\AndroidManifest.xml 文件中,确认已经包含了以下配置信息。

    1. <!-- 移动同步服务端地址和端口 -->
    2. <meta-data
    3. android:name="syncport"
    4. android:value="443"/>
    5. <meta-data
    6. android:name="syncserver"
    7. android:value="cn-hangzhou-mss-link.cloud.alipay.com"/>
    8. <!-- work space id -->
    9. <meta-data
    10. android:name="workspaceId"
    11. android:value="default"/>
    12. <!--无限保镖 appkey, used for encrypt-->
    13. <meta-data
    14. android:name="appkey"
    15. android:value="5E5FD99271812_ANDROID"/>
    • 在控制台创建应用时,生成了一个配置文件,该配置文件的文件名以 Ant-mpaas- 开头,接着为在服务端创建应用时自动生成的 App ID 和 workspace ID,最后以平台(Android)结尾,类似于 Ant-mpaas-5E5FD99271812-demo-Android.config
    • 如果在创建 Portal工程的时候上传了该配置文件,那么 AndroidManifest.xml 应该已经包含以上配置信息。
    • 如果 AndroidManifest.xml 没有包含以上配置信息,则需要参考配置文件添加。
  2. 在 Portal 工程的 ..\app\src\main\assets\mpaas.properties 文件中,确认已经包含了以下配置信息。

    1. AppId=5E5FD99271812
    2. Platform=ANDROID
    3. WorkspaceId=default
    • 以上各取值与上一步 AndroidManifest.xml 中信息的获取方式一样,也是从服务端生成的配置文件中获取。
    • 如果在创建 Portal工程的时候上传了该配置文件,那么 mpaas.properties 应该已经包含以上配置信息。
    • 如果 mpaas.properties 没有包含上述信息,则需要参考配置文件添加。

编写代码

mPaaS 中间层的 MPSync 类封装了移动同步组件所有 API,请参考 Android 接口说明 查看 API 接口信息。

代码示例

以下为注册同步配置、获取数据的示例。在接入代码之前需要配置好具体的同步配置,获取到对应的同步标识。以下示例中的同步标识为 UCHAT

  1. String bizType ="UCHAT";
  2. //实现一个用于接收数据的 callback
  3. //请 import com.alipay.mobile.rome.longlinkservice.ISyncCallback private ISyncCallback syncCallback = new ISyncCallback() {
  4. @Override
  5. public void onReceiveMessage(final SyncMessage syncMessage) {//在独立的线程中完成,否则可能堵塞后面的操作 Runnable runnable = new Runnable(){
  6. @Override
  7. public void run() {
  8. //做下基本的数据准确性校验,最终的数据是以 JSONArray 放在 msgData 字段中
  9. Log.d("sync_Activity","onReceiveMessage1:"+syncMessage.msgData+"/"+syncMessage.userId+"/"+syncMessage.bi z);
  10. if(!TextUtils.isEmpty(syncMessage.msgData) ){ try {
  11. JSONArray jsonArray = new JSONArray(syncMessage.msgData); int count = jsonArray.length(); final StringBuffer sb = new StringBuffer(); for(int index = 0; index < count;index++){
  12. JSONObject jsonObject = (JSONObject) jsonArray.get(index);
  13. //最终需要的数据就在下面字段 finalData 中。
  14. String finalData = jsonObject.optString("pl");
  15. //对于isB标志,需要base64解码
  16. if ("1".equals(jsonObject.optString("isB"))) {
  17. finalData = new String(Base64.decode(finalData, Base64.DEFAULT),"UTF-8");
  18. }
  19. //解析 finalData, 获取数据
  20. sb.append(index+":"+finalData+"|");
  21. }
  22. runOnUiThread(new Runnable() {
  23. @Override
  24. public void run() {
  25. Toast.makeText(SYNCServiceActivity.this,sb,Toast.LENGTH_LONG).show();
  26. }
  27. });
  28. //通知数据已经接收,如果不通知,我们将会重试,达到 6 次之后,数据将被删除。
  29. MPSync.reportMsgReceived(syncMessage);
  30. } catch (JSONException e) {
  31. Log.d("sync_Activity","onReceiveMessage
  32. JSONException"+syncMessage.msgData+"/"+syncMessage.userId+"/"+syncMessage.biz); } catch (Exception e) {
  33. Log.d("sync_Activity","onReceiveMessage :" + e);
  34. }
  35. }
  36. }
  37. };
  38. Thread thread = new Thread(runnable); thread.start();
  39. }
  40. };
  41. //注册服务对应的 callback,我们的服务在接收到服务端推送的数据之后就通过 callback 把数据传过来
  42. MPSync.registerBiz(bizType,syncCallback);