跳到主要内容

订阅华为账号的登录/登出事件

场景介绍

应用在前台时可以订阅Account Kit提供的华为账号登录/登出广播事件,来感知华为账号的登录状态,实现用户登录/登出应用的逻辑。应用也可通过getHuaweiIDState实时查询华为账号登录状态。

事件说明

以下是华为账号登录/登出发送的广播事件。

事件名称描述
COMMON_EVENT_DISTRIBUTED_ACCOUNT_LOGIN表示分布式账号登录成功的动作。华为账号登录成功也会发这个广播事件。
COMMON_EVENT_DISTRIBUTED_ACCOUNT_LOGOUT表示分布式账号登出成功的动作。华为账号登出成功也会发这个广播事件。

开发前提

在进行代码开发前,请确保已按照“开发准备”章节中的指导完成配置签名和指纹配置Client ID。此场景无需申请账号权限。

开发步骤

  1. 导入commonEventManager模块及相关公共模块。

    import { hilog } from '@kit.PerformanceAnalysisKit';
    import { BusinessError, commonEventManager } from '@kit.BasicServicesKit';
  2. 创建订阅者,并处理订阅结果。

    // 订阅者信息
    const subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {
    events: [commonEventManager.Support.COMMON_EVENT_DISTRIBUTED_ACCOUNT_LOGIN,
    commonEventManager.Support.COMMON_EVENT_DISTRIBUTED_ACCOUNT_LOGOUT]
    };
    let subscriber: commonEventManager.CommonEventSubscriber;

    // 创建订阅者
    commonEventManager.createSubscriber(subscribeInfo)
    .then((commonEventSubscriber: commonEventManager.CommonEventSubscriber) => {
    subscriber = commonEventSubscriber;
    // 订阅公共事件
    commonEventManager.subscribe(subscriber,
    (error: BusinessError, data: commonEventManager.CommonEventData) => {
    if (error) {
    hilog.error(0x0000, 'testTag',
    `Failed to subscribe , code is ${error.code}, message is ${error.message}`);
    } else {
    if (data.event === commonEventManager.Support.COMMON_EVENT_DISTRIBUTED_ACCOUNT_LOGIN) {
    // 订阅到华为账号登录事件
    }
    if (data.event === commonEventManager.Support.COMMON_EVENT_DISTRIBUTED_ACCOUNT_LOGOUT) {
    // 订阅到华为账号登出事件
    }
    }
    });
    })
    .catch((err: BusinessError) => {
    hilog.error(0x0000, 'testTag', `Failed to createSubscriber. Code: ${err.code}, message: ${err.message}`);
    });