本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。
在当今数字化时代,智能设备无处不在,人们对设备之间的协同工作和无缝交互的需求日益增长。华为鸿蒙HarmonyOS Next系统应运而生,其分布式管理服务为设备之间的互联互通提供了强大的支持。今天,咱们就来好好唠唠HarmonyOS Next中分布式管理的设备发现与认证功能,这可是实现分布式协同的关键第一步哦!

一、Distributed Service Kit 概览与分布式管理基本概念

HarmonyOS Next的Distributed Service Kit就像是一个智能管家,负责管理分布式设备、硬件,甚至实现键鼠穿越等神奇功能。它让不同的设备能够相互协作,共同完成各种复杂的任务。
分布式管理的核心概念就是把周围的设备都当成自己的得力助手,让它们协同工作,为用户提供更加便捷、高效的体验。比如说,你可以用手机控制智能家居设备,或者在多个设备之间共享数据和资源,就像它们是一个超级设备一样。

二、设备发现:在局域网中找到你的“小伙伴”

(一)发现机制与接口

要让设备协同工作,首先得找到它们,对吧?在HarmonyOS Next中,设备发现就像是在一个大派对里找朋友。开发者可以通过调用DeviceManager设备发现相关接口,让设备主动去寻找周围同局域网或者开启蓝牙的设备。这就好比你在派对上大喊一声:“嘿,小伙伴们,在哪里?”然后等着周围的设备回应你。

(二)所需权限与准备工作

不过呢,在开始寻找之前,你得先得到用户的许可,就像进入派对需要门票一样。使用设备管理能力,需要申请分布式数据同步权限(ohos.permission.DISTRIBUTED_DATASYNC)。这是为了保护用户的隐私和数据安全,确保只有经过授权的应用才能获取设备信息。

(三)示例代码解析

下面是一个简化的设备发现示例代码,让我们一起来看看是怎么实现的。

import { distributedDeviceManager } from '@kit.DistributedServiceKit';
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);
}
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
};
// 发现周边设备,持续两分钟,最多发现99个
try {
    dmInstance.startDiscovering(discoverParam, filterOptions);
} catch (err) {
    let e: BusinessError = err as BusinessError;
    console.error('startDiscovering errCode:' + e.code + ',errMessage:' + e.message);
}

在这段代码中,首先我们导入了必要的模块,然后创建了设备管理实例。接着,我们通过定义发现参数和筛选选项,调用startDiscovering方法开始寻找设备。如果发现成功,就会触发discoverSuccess回调;如果失败,就会触发discoverFailure回调。

三、设备认证:建立信任的桥梁

(一)认证的重要性

当我们在派对上找到了一些“小伙伴”后,怎么知道它们是可以信任的呢?这就需要设备认证了。设备认证就像是互相交换名片,确认对方的身份,确保只有可信的设备才能参与分布式业务。如果没有认证,就好比随便让一个陌生人进入你的重要会议,这显然是不安全的。

(二)认证流程与方式

在HarmonyOS Next中,对于周边发现的不可信设备,可以通过绑定操作使它们建立可信关系。系统提供了pin码、碰、扫、靠等多种设备认证框架,支持对接各种认证交互接口。这就像是有多种方式可以验证对方的身份,确保安全可靠。

(三)示例代码展示

下面是一个简单的设备认证示例代码(假设已经完成设备发现并获取到设备ID)。

import { distributedDeviceManager } from '@kit.DistributedServiceKit';
import { BusinessError } from '@kit.BasicServicesKit';
class Data {
    deviceId: string = '';
}
// 假设已经获取到设备ID
let deviceId = 'XXXXXXXX';
let bindParam: Record<string, string | number> = {
    'bindType': 1,
    'targetPkgName': 'xxxx',
    'appName': 'xxxx',
    'appOperation': 'xxxx',
    'customDescription': 'xxxx'
};
try {
    let dmInstance = distributedDeviceManager.createDeviceManager('ohos.samples.jsHelloWorld');
    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);
}

在这个示例中,我们使用设备管理实例的bindTarget方法,传入设备ID和绑定参数,尝试与指定设备建立可信关系。如果认证成功,会返回相关结果;如果失败,会打印错误信息。

四、注意事项与使用限制

(一)权限相关

再次强调,权限是非常重要的。在使用设备管理能力之前,一定要确保已经正确申请了分布式数据同步权限,并且获得了用户的授权。否则,设备发现和认证功能将无法正常使用。这就像是没有门票就想进入高级会所,肯定是不行的。

(二)设备连接要求

设备发现功能依赖于设备连接同一局域网或者开启蓝牙。如果设备没有满足这些条件,就像你在派对上喊破喉咙也找不到不在同一个场地的朋友一样,是无法发现周围设备的。

(三)数据安全与隐私

设备信息属于用户敏感数据,我们开发者在获取和使用这些数据时,必须严格遵守相关法律法规和隐私政策。不要随意泄露用户的设备信息,否则会像泄露别人的秘密一样,惹上大麻烦。
总之,HarmonyOS Next的分布式管理服务中的设备发现与认证功能为设备之间的协同工作奠定了坚实的基础。通过合理使用这些功能,开发者可以打造出更加智能、便捷的分布式应用。希望大家在开发过程中,牢记这些要点,充分发挥HarmonyOS Next的强大功能,为用户带来更好的体验。如果在开发过程中遇到问题,不要慌张,仔细检查权限设置、设备连接等方面,相信你一定能够顺利解决。加油哦,各位开发者小伙伴们!


SameX
1 声望2 粉丝