前置條件
添加 數據同步 SDK 前,請您確保已經將工程接入到 mPaaS。更多信息請參見 基于已有工程使用 ohpmrc 接入。
引入依賴
在項目的 .ohpmrc
中添加如下倉庫:
@mpaas:registry=https://mpaas-ohpm.oss-cn-hangzhou.aliyuncs.com/meta
添加 SDK
在 oh-package.json5
中配置所需依賴,其中,當前版本號為 0.0.2
。
{
"license": "",
"devDependencies": {},
"author": "",
"name": "entry",
"description": "Please describe the basic information.",
"main": "",
"version": "1.0.0",
"dependencies": {
"@mpaas/sync-service": "0.0.2"
}
}
配置權限
在 module.json5
中配置所需權限。
"requestPermissions":[
{
"name" : "ohos.permission.GET_NETWORK_INFO",
},
{
"name" : "ohos.permission.SET_NETWORK_INFO",
},
{
"name" : "ohos.permission.INTERNET",
}
]
初始化框架
在使用 數據同步 之前,需先初始化 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) | 用于登錄信息 |
clearUserInfo() | 用于用戶登出。 |
registerBiz(biz:string, syncCallback:ISyncCallback) | 用于注冊一個接收業務數據的 |
unregisterBiz(bizType:string) | 用于反注冊指定同步配置。在獲取到同步推送的數據后,客戶端 SDK 則不會回調 |
reportMsgReceived(syncMessag:SyncMessage ) | 用于在 |
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)
}