华为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
- 导入pushService模块。
-
import { pushService } from '@kit.PushKit';
-
- 建议在您的UIAbility(例如EntryAbility)的onCreate()方法中调用getToken()接口获取Push Token并上报到您的服务端,方便您的服务端向终端推送消息。代码示例:
-
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()接口。
- 导入pushService模块
import { pushService } from '@kit.PushKit';
- 调用PushService.deleteToken()接口删除Push Token。代码示例:
-
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); } } }
-