【HarmonyOS NEXT】鸿蒙获取appIdentifier,Identifier
在HarmonyOS NEXT开发中,appIdentifier 是应用在AppGallery Connect平台上的全局唯一身份标识。它由云端统一分配,在应用的全生命周期中都不会改变——即使版本升级、更换证书或开发者公私钥,这个ID依然保持不变。
这个标识的核心使用场景包括:
-
平台身份认证:在接入华为或第三方服务(如支付、推送)时,用于校验你的应用身份。
-
跨应用身份识别:在Intent Kit等场景中,作为应用的身份凭证。
区分关键概念
appIdentifier是应用的身份ID(类似身份证号,终身不变),而fingerprint是应用的签名指纹(类似印章,随证书变化而变化)。
获取方法一:通过代码获取(最常用)
通过 bundleManager.getBundleInfoForSelf API可以在运行时代码中获取你自己的应用信息,前提是传入正确的 BundleFlag。
核心代码示例 (ArkTS):
ts
import { bundleManager } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit';
// 必须同时包含应用信息和签名信息两个标志位
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION |
bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
try {
bundleManager.getBundleInfoForSelf(bundleFlags).then((bundleInfo: bundleManager.BundleInfo) => {
// appIdentifier 位于 signatureInfo 下
console.info('获取到的 appIdentifier:', bundleInfo.signatureInfo.appIdentifier);
}).catch((err: BusinessError) => {
console.error('获取失败,错误信息:', err.message);
});
} catch (err) {
let message = (err as BusinessError).message;
console.error('调用异常:', message);
}
关键点:bundleFlags 必须包含 GET_BUNDLE_INFO_WITH_SIGNATURE_INFO,因为 appIdentifier 是 SignatureInfo 的一部分。
获取方法二:通过AGC平台获取
如需在后台配置或填写相关信息,可直接登录AppGallery Connect平台查看。
-
进入 “我的项目”,选择你的应用。
-
在左侧菜单进入 “项目设置” > “常规” 标签页。
-
在 “应用” 信息区域,即可找到 “APP ID”。这个值就是你需要的
appIdentifier。
获取方法三:通过命令行工具(bm工具)获取
适用于在调试阶段或未集成代码的环境下快速查询。
使用HDC命令行工具连接设备后,执行以下命令(替换 your.bundle.name 为你的应用包名):
bash
hdc shell bm dump -n your.bundle.name | grep appIdentifier
这条命令会输出应用详细信息,你可以从中过滤出 appIdentifier 字段。
获取方法四:利用Want传递的信息(查看来源)
当你的应用被其他应用拉起时,可以通过 Want 参数获取调用方(即发起拉起的应用)的 appIdentifier。这有助于你识别调用者的身份。
在 Want 的 parameters 中,可以直接获取到 callerAppIdentifier 字段。
总结与建议
-
首选代码方式:在开发中,推荐通过
getBundleInfoForSelfAPI动态获取,这样最准确且不易出错。 -
注意标志位:切记在
bundleFlags中同时使用GET_BUNDLE_INFO_WITH_APPLICATION和GET_BUNDLE_INFO_WITH_SIGNATURE_INFO。 -
区分其他标识:请勿将
appIdentifier与fingerprint(签名指纹)、appId(另一种格式)混淆。appId的格式通常是“包名_签名信息”,而appIdentifier是纯随机字符串。
更多推荐

所有评论(0)