ArkTS获取设备信息及OpenID 原创

丁斗科技
发布于 2025-3-18 16:39
浏览
0收藏

在当下数字化浪潮中,HarmonyOS Next 以其卓越的性能和强大的生态能力,成为众多开发者关注的焦点。运用 ArkTS 进行 HarmonyOS Next 原生应用开发,不仅能享受到该语言简洁高效的编程体验,还能深度挖掘系统潜力。在实际的应用开发过程中,获取设备信息或者 Openid 是极为常见且关键的需求。设备信息可帮助开发者精准适配不同硬件,优化应用性能;而 Openid 则能助力实现用户身份的精准识别与管理,提升应用的安全性和个性化服务水平。下面,我们就来详细探讨如何达成这一目标。

可获取到的设备信息包括

  1. deviceType: 设备类型
  2. manufacture: 设备厂家名称。
  3. brand: 设备品牌名称
  4. marketName: 外部产品系列。
  5. productSeries: 产品系列。
  6. productModel: 认证型号。
  7. softwareModel: 内部软件子型号。
  8. hardwareModel: 硬件版本号。
  9. hardwareProfile: 硬件Profile。
  10. bootloaderVersion: Bootloader版本号。
  11. displayVersion: 产品版本。
  12. osFullName: 系统版本,版本格式。
  13. buildVersion:Build版本号,标识编译构建的版本号。
  14. sdkApiVersion:系统软件API版本。
  15. versionId:版本ID。
  16. distributionOSName:发行版系统名称。
  17. distributionOSApiVersion:发行版系统api版本。

代码如下:
获取设备信息需导入模块

import { deviceInfo } from '@kit.BasicServicesKit';
  • 1.

例程

let deviceTypeInfo: string = deviceInfo.deviceType;
let sdkApiVersionInfo: number = deviceInfo.sdkApiVersion;
let brandInfo: string = deviceInfo.brand;
let marketNameInfo: string = deviceInfo.marketName;
let displayVersionInfo: string = deviceInfo.displayVersion;
let distributionOSApiVersion: number = deviceInfo.distributionOSApiVersion;
let osFullName:string = deviceInfo.osFullName;
let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_APPLICATION | bundleManager.BundleFlag.GET_BUNDLE_INFO_WITH_METADATA;
let appdata = bundleManager.getBundleInfoForSelfSync(bundleFlags);
let appVersion = appdata.versionName;
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

OpenID是一种去中心化的身份验证协议,旨在为用户提供一种便捷、安全的方式来登录不同的网站和应用程序,而无需为每个平台单独创建和管理用户名与密码。以下是关于OpenID的简单介绍:

  • 工作原理:用户选择一个支持OpenID的身份提供商(如谷歌、微软等),当用户访问需要登录的网站或应用时,可通过该身份提供商进行身份验证。用户向身份提供商发送认证请求,身份提供商验证用户身份后,将用户信息返回给请求的网站或应用,从而实现登录。
  • 优点
    • 便捷性:用户只需记住在身份提供商处的登录信息,即可访问多个支持OpenID的平台,无需在每个平台分别注册和登录,节省了时间和精力。
    • 安全性:避免了用户在多个平台使用相同或相似的用户名和密码,降低了因密码泄露导致的安全风险。同时,身份提供商通常具有完善的安全机制和加密技术,保障用户身份信息的安全传输和存储。
  • 应用场景:广泛应用于各种需要用户登录和身份验证的场景,如社交媒体平台、电商网站、在线办公软件等。例如,用户可以使用自己的微信账号作为OpenID登录到其他合作的应用或网站中,快速完成身份验证并使用相关服务。

华为账号一键登录(获取手机号和UnionID/OpenID)场景,应用服务器向华为账号服务器调用该接口获取UnionID,OpenID,华为账号绑定的手机号码及其相关信息。该服务仅对中国境内(不包含中国香港、中国澳门、中国台湾)用户提供。

获取OpenID的方法如下
导入模块

import { authentication } from '@kit.AccountKit';
import { BusinessError } from '@kit.BasicServicesKit';
  • 1.
  • 2.
// 获取openID
    // Create a login request and set parameters
    let loginRequest = new authentication.HuaweiIDProvider().createLoginWithHuaweiIDRequest();
    loginRequest.forceLogin = false;
    // Execute login request
    let controller = new authentication.AuthenticationController();
    controller.executeRequest(loginRequest).then((data) => {
      let loginWithHuaweiIDResponse = data as authentication.LoginWithHuaweiIDResponse;
      let openID = loginWithHuaweiIDResponse.data?.openID
 }).catch((error: BusinessError) => {
      hilog.error(0x0000, 'testTag', 'error: %{public}s', JSON.stringify(error));
      if (error.code == authentication.AuthenticationErrorCode.ACCOUNT_NOT_LOGGED_IN) {
        // HUAWEI ID is not logged in, it is recommended to jump to the login guide page
      }
});
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

通过获取设备信息与OpenID,开发者得以打造更适配、安全且个性化的HarmonyOS Next原生应用。希望本文能助力大家在开发中顺利运用这些技术,让应用在性能、用户体验及数据管理等方面更上一层楼,为用户带来更优质的服务。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报


回复
    相关推荐