场景描述:
本模块为统一数据管理框架(Unified Data Management Framework,UDMF)的组成部分,针对多对多跨应用数据共享的不同业务场景提供了标准化的数据通路,提供了标准化的数据接入与读取接口。同时对文本、图片等数据类型提供了标准化定义,方便不同应用间进行数据交互,减少数据类型适配的工作量。
常见场景:
1、考虑到会存在一台手机同时安装多个app的场景,需要有同一个用户账号登录信息。
2、期望公司内部的应用可以使用同一个唯一标识符用于识别同一用户。
场景实现:
场景一:
同一公司不同App间的账号共享
效果图:
方案:
一、应用A创建用户id并插入到UDMF的公共数据通路中。
1、在ui界面定义了两个文本输入框(用于输入用户名和密码)
2、声明一个 options 变量,并指定了要插入数据的数据通路枚举类型为 DATA_HUB。
3、调用 insertData 函数,尝试将数据插入到指定的数据通路中
4、进行异常处理
import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData';
import { BusinessError } from '@kit.BasicServicesKit';
@Entry
@Component
struct Index {
@State username: string = '';
@State passwd: string = '';
insert() {
//创建一个新的 PlainText 实例。
let plainText = new unifiedDataChannel.PlainText();
plainText.textContent = this.username;
//创建一个 UnifiedData 实例,传入之前创建的 PlainText 实例作为参数
let unifiedData = new unifiedDataChannel.UnifiedData(plainText);
// 声明一个 options 变量,并指定了要插入数据的数据通路枚举类型为 DATA_HUB。
let options: unifiedDataChannel.Options = {
intention: unifiedDataChannel.Intention.DATA_HUB
}
//异常处理
try {
//调用 insertData 函数,尝试将数据插入到指定的数据通路中。
// (err,data)回调函数,用于处理 insertData 函数执行过程中可能出现的错误信息和插入成功后返回的数据信息。
unifiedDataChannel.insertData(options, unifiedData, (err, data) => {
if (err === undefined) {
console.info(`Succeeded in inserting data. key = ${plainText.textContent}`);
} else {
console.error(`Failed to insert data. code is ${err.code},message is ${err.message} `);
}
});
} catch (e) {
//将捕获的异常 e 强制转换为 BusinessError 类型,并赋值给 error 变量。
let error: BusinessError = e as BusinessError;
console.error(`Insert data throws an exception. code is ${error.code},message is ${error.message} `);
}
}
build() {
Column() {
//定义了两个文本输入框(用于输入用户名和密码)
TextInput({ placeholder: 'input your username',text: this.username })
.margin({ top: 20 })
.onSubmit((EnterKeyType)=>{
console.info(EnterKeyType+'输入法回车键的类型值')
})
.onChange((value: string) => {
this.username = value;
})
TextInput({ placeholder: 'input your password',text: this.passwd })
.type(InputType.Password).margin({ top: 20 })
.onSubmit((EnterKeyType)=>{
console.info(EnterKeyType+'输入法回车键的类型值')
})
//触发按钮
Button('insert')
.width(150)
.margin({ top: 20 })
.onClick(() => this.insert());
}
}
二、应用B查询存储在UDMF公共数据通路中的用户id。
1、创建 PlainText 实例和UnifiedDat