Distributed Service Kit(分布式管理服务)实现了分布式设备管理、分布式硬件管理、分布式键鼠穿越等能力。
应用开发者可以通过分布式设备管理进行周边设备的发现、认证、信息查询、状态监听等,该能力是分布式业务的入口功能,即只有完成认证后的设备之间才可以进行分布式业务。
运作机制
分布式设备管理能力作为系统为应用提供的一种基础服务,需要应用在所使用的业务场景,向系统主动发起请求,完成设备间的发现、认证、查询、监听等功能。
约束与限制
使用分布式设备管理,需要用户进行相关权限的申请。
分布式设备管理简介
随着用户不同种类的终端设备数量不断增多,将不同设备作为本端设备能力的扩展,使设备之间协同合作完成各种复杂场景即为设备的分布式业务。
分布式设备管理是分布式业务入口,在分布式业务中对周边可信和非可信设备进行统一管理。
分布式设备管理提供如下四大功能:
-
发现
发现周围终端设备并上报。周围设备需要连接同局域网或者同时打开蓝牙,可以根据设备类型、距离、设备是否可信等进行筛选。
-
绑定
不同设备协同合作完成分布式业务的前提是设备间可信,对于周边发现的不可信设备,可通过绑定使彼此建立可信关系,提供pin码、碰、扫、靠等设备认证框架,支持对接各种认证交互接口。
-
查询
查询功能包含:查询本机设备信息、查询周围的在线的可信设备、查询可信设备信息。
-
监听
监听设备上、下线。设备上线表示设备间已经可信,业务可以发起分布式操作;设备下线表示分布业务不可用。
运作机制
设备管理作为分布式业务入口,需要应用在所使用的业务场景,向发现设备主动发起绑定建立可信关系;业务结束后由业务自主判断是否解除绑定关系,设备间可信关系的解除由业务自己控制。
约束与限制
使用设备管理能力,需要用户确认不同设备已连接同一局域网或者蓝牙开关已开启,否则该能力不可用。
设备信息属于用户敏感数据,所以即使用户已连接同一局域网或者蓝牙开关已开启,应用在获取设备位置前仍需向用户申请数据同步权限。在用户确认允许后,系统才会向应用提供设备管理能力。
申请分布式数据同步权限开发指导
场景概述
应用在使用分布式设备管理系统能力前,需要检查是否已经获取用户授权访问分布式数据同步信息。如未获得授权,可以向用户申请需要的分布式数据同步权限。
ohos.permission.DISTRIBUTED_DATASYNC:分布式数据同步权限
使用设备管理能力,必须申请权限,并且获得用户授权。
开发步骤
适用于Stage应用模型。
- 在module.json5配置文件中配置分布式数据同步权限ohos.permission.DISTRIBUTED_DATASYNC。
{
"module" : {
"requestPermissions":[
{
"name" : "ohos.permission.DISTRIBUTED_DATASYNC",
"reason": "$string:distributed_permission",
"usedScene": {
"abilities": [
"MainAbility"
],
"when": "inuse"
}
}
]
}
}
-
导入common和abilityAccessCtrl模块,用于获取权限申请的能力。
import { common, abilityAccessCtrl } from '@kit.AbilityKit';
-
分布式数据同步权限的授权方式为user_grant,因此需要调用requestPermissionsFromUser接口,以动态弹窗的方式向用户申请授权。
let context = getContext(this) as common.UIAbilityContext;
let atManager = abilityAccessCtrl.createAtManager();
try {
atManager.requestPermissionsFromUser(context, ['ohos.permission.DISTRIBUTED_DATASYNC']).then((data) => {
console.log('data: ' + JSON.stringify(data));
}).catch((err: object) => {
console.log('err: ' + JSON.stringify(err));
})
} catch (err) {
console.log('catch err->' + JSON.stringify(err));
}
设备发现开发指导
场景概述
开发者可以调用DeviceManager设备发现相关接口,获取周边可用的设备。
接口说明
startDiscovering(discoverParam: {[key: string]: Object;} , filterOptions?: {[key: string]: Object;} ): void;
发现周边同局域网或者开启蓝牙的设备。
开发步骤
-
申请分布式数据同步权限。
-
导入distributedDeviceManager模块,所有与设备管理相关的功能API,都是通过该模块提供的。
import { distributedDeviceManager } from '@kit.DistributedServiceKit';
-
导入BusinessError模块,用于获取distributedDeviceManager模块相关接口抛出的错误码。
import { BusinessError } from '@kit.BasicServicesKit';
-
创建设备管理实例,设备管理实例是分布式设备管理方法的调用入口,并注册发现设备的回调。
try {
let dmInstance = distributedDeviceManager.createDeviceManager('ohos.samples.jsHelloWorld');
dmInstance.on('discoverSuccess', data => console.log('discoverSuccess on:' + JSON.stringify(data)));
dmInstance.on('discoverFailure', data => console.log('discoverFailure on:' + JSON.stringify(data)));
} catch(err) {
let e: BusinessError = err as BusinessError;
console.error('createDeviceManager errCode:' + e.code + ',errMessage:' + e.message);
}
- 发现周边设备。发现状态持续两分钟,超过两分钟,会停止发现,最大发现数量99个。
interface DiscoverParam {
discoverTargetType: number;
}
interface FilterOptions {
availableStatus: number;
discoverDistance: number;
authenticationStatus: number;
authorizationType: number;
}
let discoverParam: Record<string, number> = {
'discoverTargetType': 1
};
let filterOptions: Record<string, number> = {
'availableStatus': 0
};
try {
dmInstance.startDiscovering(discoverParam, filterOptions);
} catch (err) {
let e: BusinessError = err as BusinessError;
console.error('startDiscovering errCode:' + e.code + ',errMessage:' + e.message);
}
设备绑定开发指导
场景概述
开发者发现周边不可信设备后,通过绑定接口建立可信关系。
接口说明
bindTarget(deviceId: string, bindParam: {[key: string]: Object;} , callback: AsyncCallback<{deviceId: string;}>): void;
开发步骤
-
申请分布式数据同步权限。
-
发现周边不可信设备。
-
选择不可信设备id,发起设备绑定。
class Data {
deviceId: string = '';
}
let deviceId = 'XXXXXXXX';
let bindParam: Record<string, string | number> = {
'bindType': 1,
'targetPkgName': 'xxxx',
'appName': 'xxxx',
'appOperation': 'xxxx',
'customDescription': 'xxxx'
};
try {
dmInstance.bindTarget(deviceId, bindParam, (err: BusinessError, data: Data) => {
if (err) {
console.error('bindTarget errCode:' + err.code + ',errMessage:' + err.message);
return;
}
console.info('bindTarget result:' + JSON.stringify(data));
});
} catch (err) {
let e: BusinessError = err as BusinessError;
console.error('bindTarget errCode:' + e.code + ',errMessage:' + e.message);
}
设备信息查询开发指导
场景概述
设备与周边设备建立可信关系后,通过设备信息查询接口可以获取所有上线并且可信的设备。
接口说明
getAvailableDeviceListSync(): Array;
设备信息查询。
开发步骤
-
申请分布式数据同步权限。
-
发现周边不可信设备。
-
建立设备间的可信关系。
-
查询周围上线并且可信的设备。
try {
let deviceInfoList: Array<distributedDeviceManager.DeviceBasicInfo> = dmInstance.getAvailableDeviceListSync();
} catch (err) {
let e: BusinessError = err as BusinessError;
console.error('getAvailableDeviceListSync errCode:' + e.code + ',errMessage:' + e.message);
}
设备上下线监听开发指导
场景概述
周边可信设备可用后会给业务报上线通知,当设备不可用时会给业务报下线通知。
接口说明
on(type: ‘deviceStateChange’, callback: Callback<{ action: DeviceStateChange; device: DeviceBasicInfo; }>): void;
设备上下线监听。
开发步骤
-
申请分布式数据同步权限。
-
导入distributedDeviceManager模块,所有与设备管理相关的功能API,都是通过该模块提供的。
import { distributedDeviceManager } from '@kit.DistributedServiceKit';
-
导入BusinessError模块,用于获取distributedDeviceManager模块相关接口抛出的错误码。
import { BusinessError } from '@kit.BasicServicesKit';
-
创建设备管理实例,设备管理实例是分布式设备管理方法的调用入口,并注册设备上下线回调。
try {
let dmInstance = distributedDeviceManager.createDeviceManager('ohos.samples.jsHelloWorld');
dmInstance.on('deviceStateChange', data => console.log('deviceStateChange on:' + JSON.stringify(data)));
} catch(err) {
let e: BusinessError = err as BusinessError;
console.error('createDeviceManager errCode:' + e.code + ',errMessage:' + e.message);
}
最后呢
很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。
针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。
- 《鸿蒙 (OpenHarmony)开发学习视频》
- 《鸿蒙生态应用开发V2.0白皮书》
- 《鸿蒙 (OpenHarmony)开发基础到实战手册》
- OpenHarmony北向、南向开发环境搭建
- 《鸿蒙开发基础》
- 《鸿蒙开发进阶》
- 《鸿蒙开发实战》
总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿