接入 HarmonyOS NEXT

前置条件

  • 添加移动同步 SDK 前,请您确保已经将工程接入到 mPaaS。更多信息请参见开发指南 接入 mPaaS 能力

  • 完成 mppm 插件安装。详情请参考 安装 mppm 工具

添加 SDK

执行 mppm initmppm sdk时,勾选 移动同步 选项。

image

初始化框架

在使用 数据同步 之前,需先初始化 mPaaS 框架:

export default class EntryAbilityStage extends AbilityStage {
 async onCreate() {
 const app = this.context;
 MPFramework.create(app);
 const instance: MPFramework = MPFramework.instance;
 const ctx: Context = instance.context
 }
}

import 接口

import {MPSync} from '@mpaas/sync-service'

相关接口

接口名称

说明

initialize(Context context)

用于初始化接口和数据同步服务。

appToForeground()

用于让客户端 SDK 感知到当前 App 已经启动,使其建立与服务器的网络连接。每次 App 回到前台时调用。

appToBackground()

用于让客户端 SDK 感知到当前 App 已经回到后台,使其断开与服务器的网络连接。每次 App 压后台时调用。

updateUserInfo(sessionId:string)

用于登录信息 userId/sessionId 有变化时调用。至少调用一次。useridMPFramework 的接口中设置。

clearUserInfo()

用于用户登出。

registerBiz(biz:string, syncCallback:ISyncCallback)

用于注册一个接收业务数据的 callback。在获取到同步推送的数据后,客户端 SDK 会回调 syncCallback 实现类。

unregisterBiz(bizType:string)

用于反注册指定同步配置。在获取到同步推送的数据后,客户端 SDK 则不会回调 syncCallback 实现类。

reportMsgReceived(syncMessag:SyncMessage )

用于在 syncCallback 实现类中收到数据后,调用该接口通知数据同步服务端接收同步数据成功。在没有收到 reportMsgReceived 前,数据同步会重试投递,重试 6 次之后数据会被永久删除。

isConnected():Promise<boolean>

用于检查当前数据同步服务是否正常。

addConectionListener(listener:connectionListener)

添加监听连接状态。

removeConnectionListener(listener:connectionListener)

删除连接状态监听。

使用实例

export default class EntryAbility extends UIAbility {
  onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
   	..
    //在ability开始阶段进行初始化相关操作
    MPFramework.create(this.context);//初始化
    MPFramework.instance.userId = example_userid;//设置userid
    MPSync.initialize();//初始化sync
    ..
  }
}

//page代码示例
connectListener:ConnectionListener = {
    onConnectionStateChanged: (connectionEvent: ConnectionEvent) => {
      let type = connectionEvent.getEventType();
      switch (type) {
        case ConnectionType.Connecting:
          this.connectionMsg = "连接中"
          break;
        case ConnectionType.Unknown:
          this.connectionMsg = "未知"
          break;
        case ConnectionType.Connected:
          this.connectionMsg = "已连接"
          break;
        case ConnectionType.Disconnected:
          this.connectionMsg = "已断开"
          break;
        case ConnectionType.ConnectFailed:
          let message = connectionEvent.getExtras();
          this.connectionMsg = "连接失败:" + message
          break;
      }
    }
  
onPageShow(): void {
  MPSync.appToForeground();
  MPSync.addConnectionListener(this.connectListener)
}

build() {
    Row() {
      Column({ space: 20 }) {
        Button('初始化', { type: ButtonType.Capsule, stateEffect: true })
          .onClick(() => {
            let index = 1;
            let callback:ISyncCallback= {//消息接收callback示例
              onReceiveMessage:(message:SyncMessage):void=>{
                let msg = message.msgData;
                let obj:object[] = JSON.parse(msg);
                let str = "收到消息:\n";
                obj.forEach(value=>{
                  let m:string = getMessageObjString(value);
                  str += "message:"+index+":"+ m+'\n'
                  index++
                })
                this.message = str
              },
              onReceiveCommand:(message:SyncCommand):void=>{
              }
            }
            MPSync.registerBiz("oneUserSync",callback)//注册biz,
          }).width('90%').margin({ top: 15 })
  		  Button('用户绑定', { type: ButtonType.Capsule, stateEffect: true })
          .onClick(() => {
            MPSync.updateUserInfo("harmony_session")//绑定用户
          }).width('90%').margin({ top: 15 })
			}
    }
    .height('100%').alignItems(VerticalAlign.Top)
  }