NetworkID

简介

定义

网络设备节点通信标识符,是分布式软总线提供的一种非永久性标识符。NetworkID基于Java原生的UUID接口随机生成,长度为32字节,使用十六进制表示。主要用于业务调用分布式能力时,标识分布式网络内的设备节点。

NetworkID举例:6B97BC8F6F85A2A1A6E0E262111F42D6A8541CBFF6CAF688FA5293956EC3FD43

NetworkID特点

* NetworkID为设备级标识符,不同APP在同一时间获取到同一设备的NetworkID相同。
* NetworkID在设备下线、设备重启、恢复出厂设置后会发生变化,因此不可用于数据持久化存储的索引等场景。
NetworkID重置

为满足在分布式场景中的隐私要求,NetworkID在以下几个场景会发生变化:

* 用户操作进行设备恢复出厂设置。
* 设备重启。
* 分布式组网的设备上线列表从非空转为空,并持续为空5分钟后。
使用场景

NetworkID是分布式网络设备节点在分布式组网中的通信标识符,用于在分布式业务中标识网络设备节点。上层业务在调用分布式能力的时候,使用NetworkID标识不同的网络设备节点。由于同一设备的NetworkID的值在多次组网中可能会发生变化,因此NetworkID不能用于数据持久化存储的索引等场景。

开发准备

HarmonyOS SDK提供NetworkID相关API,应用程序可通过API使用NetworkID的能力。

获取NetworkID
public class MainAbility extends Ability { // 建议开发者自行设计界面,示例代码仅供参考 private
static final int OFFSET_X = 100; private static final int OFFSET_Y = 100;
private static final int ADD_OFFSET_Y = 150; private static final int
BUTTON_WIDTH = 800; private static final int BUTTON_HEIGHT = 100; private
static final int TEXT_SIZE = 50; private int offsetY = 0; // 应用包名 private
String BUNDLE_NAME = "com.example.continuationdemo"; // 注册控制中心服务后返回的Ability
token private int abilityToken; // 用户在设备列表中选择设备后返回的NetworkID private String
selectNetworkId; // 获取控制中心服务管理类 private IContinuationRegisterManager
continuationRegisterManager; // 设置控制中心设备状态变更的回调 private
IContinuationDeviceCallback callback = new IContinuationDeviceCallback() {
@Override public void onDeviceConnectDone(String networkId,String deviceType) {
// 在用户选择设备后回调获取NetworkID selectNetworkId = networkId; } @Override public void
onDeviceDisconnectDone(String networkId) { } }; // 设置注册控制中心服务回调 private
RequestCallback requestCallback = new RequestCallback() { @Override public void
onResult(int result) { abilityToken = result; } }; // 弹出选择设备列表 private
ClickedListener mShowDeviceListListener = new ClickedListener() { @Override
public void onClick(Component arg0) { // 显示选择设备列表
continuationRegisterManager.showDeviceList(abilityToken, null, null); } };
@Override public void onStart(Intent intent) { super.onStart(intent);
continuationRegisterManager = getContinuationRegisterManager(); //
开发者可以自行进行界面设计 // 为按钮设置统一的背景色 // 例如通过PositionLayout可以实现简单界面 PositionLayout
layout = new PositionLayout(this); LayoutConfig config = new
LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT);
layout.setLayoutConfig(config); ShapeElement buttonBg = new ShapeElement();
buttonBg.setRgbColor(new RgbColor(0, 125, 255)); Button btnShowDeviceList =
createButton("ShowDeviceList", buttonBg);
btnShowDeviceList.setClickedListener(mShowDeviceListListener);
linear.addComponent(btnShowDeviceList); super.setUIContent(layout); // 注册控制中心
continuationRegisterManager.register(BUNDLE_NAME, null, callback,
requestCallback); } private Button createButton(String text, ShapeElement
buttonBg) { Button button = new Button(this);
button.setContentPosition(OFFSET_X, OFFSET_Y + offsetY); offsetY +=
ADD_OFFSET_Y; button.setWidth(BUTTON_WIDTH); button.setHeight(BUTTON_HEIGHT);
button.setTextSize(TEXT_SIZE); button.setTextColor(Color.YELLOW);
button.setText(text); button.setBackground(buttonBg); return button; }
@Override public void onStop() { super.onStop(); // 解注册控制中心
continuationRegisterManager.unregister(abilityToken, null); } }
DVID

简介

DVID(Distributed Virtual device Identifier),
分布式虚拟设备标识符。设备登录了HarmonyOS账号后,系统根据HarmonyOS帐号及应用程序信息生成分布式虚拟设备ID,即DVID。

应用程序可以根据DVID访问和管理分布式设备,具备类似管理本地设备的能力和体验。同时,为防止其他应用获取当前应用数据(比如用户行为收集),DVID与HarmonyOS帐号及应用程序信息强关联,在登录了相同HarmonyOS帐号的分布式设备上,相同应用获取到的DVID相同,不同应用获取的DVID不同。

使用场景

* 场景一:应用程序一键式登录

登录了相同的HarmonyOS帐号的多个分布式设备中,应用程序在某一设备上登录之后,可按需同步应用帐号认证信息(帐号名、Token或其他)到其他设备上,在其他设备上打开应用时不再需要输入应用帐号认证信息,可直接登录使用。

* 场景二:应用程序管理多设备
应用程序在服务器端可以根据DVID管理相同应用帐号关联/绑定的分布式虚拟设备列表。

开发准备

HarmonyOS SDK提供DVID相关API,应用程序可通过API使用DVID的能力。

获取DVID
private String getDVID() { return
AccountAbility.getAccountAbility().getDistributedVirtualDeviceId(); }
UUID

简介

随机生成的字符串,同一时空下所有设备生成的UUID都不同。应用在其生命周期内可以用该标识唯一识别相同设备。

格式说明:string型,标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)。

使用场景

应用使用情况统计分析:

应用在后台统计分析在相同设备上的应用的使用情况,该标识作为设备的唯一标识,区别其它设备。但需要注意,当应用卸载后该标识销毁。再次重新安装后调用获取UUID接口时会重新生成不同的ID。所以不会持久的标识同一台设备。

开发准备

集成Java JDK。

获取UUID
import java.util.UUID UUID uuid = UUID.randomUUID()

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信