HarmonyOS 鸿蒙Next如何获取appIdentifier

发布于 1周前 作者 vueper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next如何获取appIdentifier

微信支付注册鸿蒙应用需要填写appIdentifier,请问获取方式按照下面的方式获取正确么?另外,我通过debug证书和release证书打包后,获取到的值不一样,正常么?

获取方法如下:

let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_METADATA | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;

Logger.debug(TAG, `appIdentifier->${bundleManager.getBundleInfoForSelfSync(bundleFlags).signatureInfo.appIdentifier}`)

更多关于HarmonyOS 鸿蒙Next如何获取appIdentifier的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
  /**
   * 获取appIdentifier
   */
  getBundleAppIdentifier() {
    // 根据给定的bundle名称获取BundleInfo。
    // 使用此方法需要申请 ohos.permission.GET_BUNDLE_INFO权限。
    let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_SIGNATURE_INFO;
    try {
      bundleManager.getBundleInfoForSelf(bundleFlags).then((data) => {
        //获取appIdentifier
        let appIdentifier = data.signatureInfo.appIdentifier;
        console.info('getBundleAppIdentifier successfully. Data: ' + appIdentifier);
      }).catch((err: BusinessError) => {
        console.error('getBundleAppIdentifier failed. Cause: ' + err.message);
      });
    } catch (error) {
      console.error('getBundleAppIdentifier failed:' + error.message);
    }
  }

更多关于HarmonyOS 鸿蒙Next如何获取appIdentifier的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-bundleinfo-V5#signatureinfo

包管理这边有这个属性SignatureInfo内的appIdentifier就代表了应用的唯一标识。

该字段使用bundleManager.getBundleInfoForSelf接口去获取,传入对应的flag去获取,

参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-bundlemanager-V5#bundlemanagergetbundleinfoforself

flag传GET_BUNDLE_INFO_WITH_SIGNATURE_INFO就可以获取signatureinfo内的信息。

appIdentifier由应用市场分发 就是AGC创建应用分配的 APPID ,纯数字算法生成,位数统一 19位,应用一旦创建是不可能变化的 同一应用申请的debug profile或release profile中,appIdentifier一致。 同一应用,指的是在agc portal创建的单个HarmonyOS应用/元服务。 注:如果debug启用IDE自动签名,那么appIdentifier为随机分配(此appIdentifier不可作为应用正式的身份标识),不同于应用正式profile中的appIdentifier。 所有用户是同一个 appIdentifier

在HarmonyOS鸿蒙Next系统中,获取appIdentifier(应用标识符)通常涉及对应用上下文或包信息的访问。以下是直接获取appIdentifier的方法:

  1. 通过Ohos.Bundle获取: 在鸿蒙应用中,可以通过Ohos.Bundle对象获取应用的包名(即appIdentifier)。这通常在应用的启动过程中,或者在需要确认应用身份的场景下使用。

    import ohos from '[@ohos](/user/ohos).bundle';
    
    function getAppIdentifier() {
        return ohos.bundle.getBundleInfo().name;
    }
    
    let appId = getAppIdentifier();
    console.log("App Identifier: " + appId);
    
  2. 通过AbilityContext获取: 如果你处于某个Ability(如PageAbility或EntryAbility)的上下文中,可以通过该Ability的上下文对象获取应用包名。

    import abilityContext from '[@ohos](/user/ohos).ability.AbilityContext';
    
    function getAppIdentifierFromContext() {
        let context = abilityContext.getContext();
        let bundleInfo = context.getBundleManager().getBundleInfo(context.getBundleName(), 0);
        return bundleInfo.name;
    }
    
    let appId = getAppIdentifierFromContext();
    console.log("App Identifier from Context: " + appId);
    

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部