ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Flutter 鸿蒙化实战:flutter_udid 适配 OpenHarmony,一行依赖搞定设备唯一标识

Flutter 鸿蒙化实战:flutter_udid 适配 OpenHarmony,一行依赖搞定设备唯一标识 Flutter 鸿蒙化实战flutter_udid 适配 OpenHarmony前言随着鸿蒙生态的快速发展越来越多的 Flutter 应用需要适配 OpenHarmony 平台。但生态早期大量常用三方库只有 Android / iOS 实现鸿蒙侧只能自己造轮子。为了解决这个问题CPF-Flutter 社区对一批高频使用的 Flutter 三方库做了 OpenHarmony 平台适配统一托管在 GitCode 的 CPF-Flutter 组织 下全部通过 TAG 版本隔离、配套门禁编译验证开箱即用。本篇是系列文章之一主角是flutter_udid—— 设备唯一标识获取插件。flutter_udid 是什么flutter_udid 是一个获取设备唯一标识符UDID的 Flutter 插件原始标识在应用卸载重装后依然保持不变。在 OpenHarmony 平台上该插件有两大能力FlutterUdid.udid获取设备唯一标识。OHOS 平台底层基于OAID开放匿名设备标识符实现Android 返回ANDROID_IDiOS/macOS 返回identifierForVendorFlutterUdid.consistentUdid对 udid 做SHA-256 摘要在所有平台返回 64 位十六进制的一致格式方便跨平台比对。适配情况Flutter 框架版本TAG 名称分支名3.74.1.1-ohos-1.0.0-beta.2br_v4.1.1_ohos3.224.1.1-ohos-1.0.0-beta.2br_v4.1.1_ohos3.274.1.1-ohos-1.0.0-beta.2br_v4.1.1_ohos3.354.1.1-ohos-1.0.0-beta.2br_v4.1.1_ohos已验证环境3.35 为例Flutter 3.35.7-ohosDevEco Studio 6.0.1.260SDK 6.0.1(21)ROM 6.0.0.120 SP6。快速接入在 pubspec.yaml 中添加 git 依赖dependencies:flutter_udid:git:url:https://gitcode.com/CPF-Flutter/fluttertpc_flutter_udid.git# 按你的 Flutter 框架版本从上方映射表选择对应 TAGref:4.1.1-ohos-1.0.0-beta.2执行flutter pub get使用示例获取 UDIDimportpackage:flutter_udid/flutter_udid.dart;finalStringudidawaitFlutterUdid.udid;获取跨平台一致的 UDIDfinalStringconsistentUdidawaitFlutterUdid.consistentUdid;完整示例importpackage:flutter/material.dart;importpackage:flutter_udid/flutter_udid.dart;classUdidPageextendsStatefulWidget{constUdidPage({super.key});overrideStateUdidPagecreateState()_UdidPageState();}class_UdidPageStateextendsStateUdidPage{String_udidUnknown;String_consistentUdidUnknown;Futurevoid_readIdentifiers()async{Stringudid;StringconsistentUdid;try{udidawaitFlutterUdid.udid;consistentUdidawaitFlutterUdid.consistentUdid;}onException{udidFailed to get UDID.;consistentUdidFailed to get consistentUDID.;}if(!mounted)return;setState((){_udidudid;_consistentUdidconsistentUdid;});}overrideWidgetbuild(BuildContextcontext){returnScaffold(appBar:AppBar(title:constText(flutter_udid example)),body:Center(child:Text(udid:$_udid\nconsistentUdid:$_consistentUdid),),);}}错误处理首次调用会触发APP_TRACKING_CONSENT运行时权限弹窗OAID 读取需要用户授权。读取失败时会抛出PlatformException错误码触发条件PERMISSION_DENIED用户拒绝了授权弹窗UNAVAILABLEOAID 不可用关闭个性化广告、设备/模拟器返回空值等ERROR权限请求或读取链路的意外错误注意事项OAID 可以被用户在系统设置中重置重置后 udid 会变化持久性弱于 iOS 钥匙串方案业务侧建议按设备标识参考而非绝对唯一 ID使用部分模拟器/模拟器镜像 OAID 不可用会抛UNAVAILABLE。仓库地址OpenHarmony 适配仓库https://gitcode.com/CPF-Flutter/fluttertpc_flutter_udid使用问题反馈请到 CPF-Flutter 社区 Issues 提交问题社区统一收集跟进本仓库 Issues 区亦可。系列预告截至目前CPF-Flutter 社区已完成250 个Flutter 三方库的 OpenHarmony 平台适配覆盖权限管理、UI 组件、设备信息、位置服务、媒体处理、网络、支付等多个领域完整的适配清单含每个库的版本映射表见适配总览文档https://gitcode.com/CPF-Flutter/docs/blob/main/ThirdpartyLibrarites.md仓库组织https://gitcode.com/CPF-Flutter本系列后续会陆续挑选高频库展开讲解比如屏幕常亮flutter_wakelock、本地通知flutter_local_notifications、支付宝支付tobias、JS 桥接flutter_jsbridge_plugin等。如果你的 Flutter 应用正在计划适配鸿蒙欢迎关注 CPF-Flutter 组织也欢迎参与共建。
返回列表