华为HarmonyOS灵活高效的消息推送服务(Push Kit) - 4 获取Push Token

场景介绍

注意

Push Kit在您获取Push Token时进行了推送服务权益校验,请您在进行开发前先阅读开通推送服务章节,完成相关配置。

Push Token标识了每台设备上每个应用,开发者调用getToken()接口向Push Kit服务端请求Token,获取到Token后,使用Push Token来推送消息。

Token一般情况不会变化,仅下列场景Token会发生变化:

  • 清除应用数据(例如卸载应用并重新安装、设备恢复出厂设置等)后重新打开应用。
  • 应用显式调用deleteToken()接口后重新调用getToken()接口。
  • 设备上应用的AAID变化后,下次申请Push Token时。

因此,建议您在应用启动时调用getToken()接口,若设备的Token发生变化,及时上报到您的应用服务器更新Token。

接口说明

接口返回值有两种返回形式:Callback和Promise回调。下表中仅展示Promise回调形式的接口,Promise和Callback只是返回值方式不一样,功能相同。

接口名 描述
getToken(): Promise<string> 以Promise形式获取推送服务的Token。
deleteToken(): Promise<void> 以Promise形式删除推送服务的Token。

获取Push Token

  1. 导入pushService模块。
    1.

    TypeScript 复制代码
    import { pushService } from '@kit.PushKit';
  2. 建议在您的UIAbility(例如EntryAbility)的onCreate()方法中调用getToken()接口获取Push Token并上报到您的服务端,方便您的服务端向终端推送消息。代码示例:
    1.

    TypeScript 复制代码
    import { pushService } from '@kit.PushKit';
    import { hilog } from '@kit.PerformanceAnalysisKit';
    import { BusinessError } from '@kit.BasicServicesKit';
    import { UIAbility, AbilityConstant, Want } from '@kit.AbilityKit';
    export default class EntryAbility extends UIAbility {
    // 入参 want 与 launchParam 并未使用,为初始化项目时自带参数
    async onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): Promise<void> {
    // 获取Push Token
    try {
    const pushToken: string = await pushService.getToken();
    hilog.info(0x0000, 'testTag', 'Succeeded in getting push token');
    } catch (err) {
    let e: BusinessError = err as BusinessError;
    hilog.error(0x0000, 'testTag', 'Failed to get push token: %{public}d %{public}s', e.code, e.message);
    }
    // 上报Push Token并上报到您的服务端
    }
    }

注意

若您获取Push Token时发生APP身份验证失败错误(1000900010),请参考ArkTS API错误码

删除Push Token

注意

删除Push Token后,本应用下的所有Push Kit历史数据会一并删除。非必要情况,请您不要主动调用deleteToken()接口。

  1. 导入pushService模块

    TypeScript 复制代码
    import { pushService } from '@kit.PushKit';
  2. 调用PushService.deleteToken()接口删除Push Token。代码示例:
    1.

    TypeScript 复制代码
    import { pushService } from '@kit.PushKit';
    import { hilog } from '@kit.PerformanceAnalysisKit';
    import { BusinessError } from '@kit.BasicServicesKit';
    import { UIAbility } from '@kit.AbilityKit';
    export default class EntryAbility extends UIAbility {
    async myDeletePushToken() {
    try {
    await pushService.deleteToken();
    hilog.info(0x0000, 'testTag', 'Succeeded in deleting push token');
    } catch (err) {
    let e: BusinessError = err as BusinessError;
    hilog.error(0x0000, 'testTag', 'Failed to delete push token: %{public}d %{public}s', e.code, e.message);
    }
    }
    }
相关推荐
Swift社区1 天前
鸿蒙 PC 架构的终点:工作流
华为·harmonyos
左手厨刀右手茼蒿1 天前
Flutter for OpenHarmony:dart_console 打造炫酷命令行界面,绘制表格、控制光标与进度条(CLI 交互库) 深度解析与鸿蒙适配指南
flutter·交互·harmonyos·绘制
加农炮手Jinx1 天前
Flutter for OpenHarmony 实战:疯狂头像 App(三)— 复合动画与交互反馈 — 让 UI 跃动起来
flutter·ui·交互·harmonyos·鸿蒙
王码码20351 天前
lutter for OpenHarmony 实战之基础组件:第六十二篇 SystemChannels — 探秘 Flutter 与系统交互的捷径
flutter·microsoft·交互·harmonyos
pvIaUtLZ2 天前
Comsol超表面折射率传感器。 电磁诱导透明EIT和典型连续体中的束缚态BIC
华为
Bowen_J2 天前
HarmonyOS 主流跨平台开发框架对比: ArkUI、Flutter、React Native、KMP、UniApp
flutter·react native·harmonyos
lili-felicity2 天前
基础入门 React Native 鸿蒙跨平台开发:react-native-easy-toast三方库适配
react native·react.js·harmonyos
星空22232 天前
【HarmonyOS】day38:React Native实战项目+输入格式化掩码Hook
react native·华为·harmonyos
星空22232 天前
【HarmonyOS】day37:React Native实战项目+关键词高亮搜索Hook
react native·华为·harmonyos
松叶似针2 天前
Flutter三方库适配OpenHarmony【secure_application】— pubspec.yaml 多平台配置与依赖管理
flutter·harmonyos