生活随笔
收集整理的這篇文章主要介紹了
HarmonyOS之深入解析设备标识符的功能和使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、NetworkID
① NetworkID 簡介
- 網絡設備節點通信標識符,是分布式軟總線提供的一種非永久性標識符。NetworkID 基于 Java 原生的 UUID 接口隨機生成,長度為 32 字節,使用十六進制表示。主要用于業務調用分布式能力時,標識分布式網絡內的設備節點。如 NetworkID 示例:
6B97BC8F6F85A2A1A6E0E262111F42D6A8541CBFF6CAF688FA5293956EC3FD43
- NetworkID 為設備級標識符,不同 APP 在同一時間獲取到同一設備的 NetworkID 相同。
- NetworkID 在設備下線、設備重啟、恢復出廠設置后會發生變化,因此不可用于數據持久化存儲的索引等場景。
- 為滿足在分布式場景中的隱私要求,NetworkID 在以下幾個場景會發生變化,發生重置:
-
-
- 分布式組網的設備上線列表從非空轉為空,并持續為空 5 分鐘后。
② 應用場景
- NetworkID 是分布式網絡設備節點在分布式組網中的通信標識符,用于在分布式業務中標識網絡設備節點。
- 上層業務在調用分布式能力的時候,使用 NetworkID 標識不同的網絡設備節點。
- 由于同一設備的 NetworkID 的值在多次組網中可能會發生變化,因此 NetworkID 不能用于數據持久化存儲的索引等場景。
③ 獲取 NetworkID
- HarmonyOS SDK 提供 NetworkID 相關 API,應用程序可通過 API 使用 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";private
int abilityToken
;private String selectNetworkId
;private IContinuationRegisterManager continuationRegisterManager
;private IContinuationDeviceCallback callback
= new
IContinuationDeviceCallback() {@Overridepublic
void onDeviceConnectDone(String networkId
,String deviceType
) {selectNetworkId
= networkId
;}@Overridepublic
void onDeviceDisconnectDone(String networkId
) {}};private RequsetCallback requsetCallback
= new
RequsetCallback() {@Overridepublic
void onResult(int result
) {abilityToken
= result
;}};private ClickedListener mShowDeviceListListener
= new
ClickedListener() {@Overridepublic
void onClick(Component arg0
) {continuationRegisterManager
.showDeviceList(abilityToken
, null
, null
);}};@Overridepublic
void onStart(Intent intent
) {super.onStart(intent
);continuationRegisterManager
= getContinuationRegisterManager();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
, requsetCallback
);}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
;}@Overridepublic
void onStop() {super.onStop();continuationRegisterManager
.unregister(abilityToken
, null
);}}
二、DVID
① DVID 簡介
- DVID(Distributed Virtual device Identifier), 分布式虛擬設備標識符。設備登錄了 HarmonyOS 賬號后,系統根據 HarmonyOS 帳號及應用程序信息生成分布式虛擬設備 ID,即 DVID。
- 應用程序可以根據 DVID 訪問和管理分布式設備,具備類似管理本地設備的能力和體驗。同時,為防止其他應用獲取當前應用數據(比如用戶行為收集),DVID 與 HarmonyOS 帳號及應用程序信息強關聯,在登錄了相同 HarmonyOS 帳號的分布式設備上,相同應用獲取到的 DVID 相同,不同應用獲取的 DVID 不同。
② 應用場景
- 應用程序一鍵式登錄:登錄了相同的 HarmonyOS 帳號的多個分布式設備中,應用程序在某一設備上登錄之后,可按需同步應用帳號認證信息(帳號名、Token 或其他)到其他設備上,在其他設備上打開應用時不再需要輸入應用帳號認證信息,可直接登錄使用。
- 應用程序管理多設備:應用程序在服務器端可以根據 DVID 管理相同應用帳號關聯/綁定的分布式虛擬設備列表。
③ 獲取 DVID
- HarmonyOS SDK 提供 DVID 相關 API,應用程序可通過 API 使用 DVID 的能力。
private String
getDVID() {return AccountAbility
.getAccountAbility().getDistributedVirtualDeviceId();}
三、UUID
① UUID 簡介
- 隨機生成的字符串,同一時空下所有設備生成的 UUID 都不同。應用在其生命周期內可以用該標識唯一識別相同設備。
- 格式說明:string 型,標準的 UUID 格式為:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (8-4-4-4-12)。
② 應用場景
- 應用在后臺統計分析在相同設備上的應用的使用情況,該標識作為設備的唯一標識,區別其它設備。
- 但需要注意,當應用卸載后該標識銷毀,再次重新安裝后調用獲取 UUID 接口時會重新生成不同的 ID,所以不會持久的標識同一臺設備。
③ 獲取 UUID
import java
.util
.UUIDUUID uuid
= UUID
.randomUUID()
總結
以上是生活随笔為你收集整理的HarmonyOS之深入解析设备标识符的功能和使用的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。