文档管理中心
我的

您当前正在浏览HarmonyOS最新文档,覆盖已发布的所有API版本,可在API参考中筛选您使用的API版本。详细的版本配套关系请参考版本说明。

指南与API参考API参考应用服务Push Kit(推送服务)ArkTS APIPushExtensionAbility(推送扩展Ability)

PushExtensionAbility(推送扩展Ability)

Phone5.0.0(12)+PC/2in15.0.1(13)+Tablet5.0.0(12)+TV5.1.1(19)+Wearable5.1.0(18)+
说明

仅对系统应用开放,暂不对外开放申请。

应用退至后台后,系统通常会限制其CPU等资源的使用,导致应用无法与服务器完成数据同步。Push Kit提供了应用在后台时仍能更新数据的能力。当用户终端收到开发者发送的拉起应用子进程的后台消息时,Push Kit将拉起应用子进程并将消息内容传递到该进程,开发者可在该进程中完成后台数据处理、数据更新等操作。

PushExtensionAbility为推送扩展Ability,提供获取消息数据和生命周期销毁的回调。有如下约束:

  • PushExtensionAbility为独立子进程,轻量级,不允许唤醒主进程。

  • 不允许调用通知API、卡片API、窗口API、弹窗API、实况窗API。

  • 生命周期根据场景受控,默认小于10秒,超过10秒子进程生命周期结束。

执行ExtensionAbility失败可能会返回错误,请按具体报错信息排查,详见ArkTS API错误码。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.Push.PushService

起始版本: 4.0.0(10)

约束限制

为保障系统安全性和稳定性,防止PushExtensionAbility滥用系统资源,系统对其能力进行管控, 不支持部分模块的引用,详情请参考附录。

导入模块

收起
自动换行
深色代码主题
复制
  1. import { PushExtensionAbility } from '@kit.PushKit';

属性

模型约束: 属性仅可在Stage模型下使用。

系统能力: SystemCapability.Push.PushService

起始版本: 4.0.0(10)

展开
名称 类型 只读 可选 说明
context PushExtensionContext 否 否 PushExtensionAbility的上下文环境,继承自ExtensionContext。

onReceiveMessage

Phone5.0.0(12)+PC/2in15.0.1(13)+Tablet5.0.0(12)+TV5.1.1(19)+Wearable5.1.0(18)+

onReceiveMessage(payload: pushCommon.PushPayload): void

应用继承PushExtensionAbility后接收拉起应用子进程的后台消息数据的接口。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.Push.PushService

起始版本: 4.0.0(10)

参数:

展开
参数名 类型 必填 说明
payload pushCommon.PushPayload 是 拉起应用子进程的后台消息数据。

示例:

收起
自动换行
深色代码主题
复制
  1. import { PushExtensionAbility, pushCommon } from '@kit.PushKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. const LOG_DOMAIN = 0x0000;
  5. const LOG_TAG = 'PushExtAbility';
  6. // 此处以PushExtAbility继承PushExtensionAbility为例
  7. export default class PushExtAbility extends PushExtensionAbility {
  8. onReceiveMessage(payload: pushCommon.PushPayload): void {
  9. hilog.info(LOG_DOMAIN, LOG_TAG,'onReceiveMessage');
  10. try {
  11. this.updateData(payload.data);
  12. } catch (err) {
  13. const e: BusinessError = err as BusinessError;
  14. hilog.error(LOG_DOMAIN, LOG_TAG, 'updateData failed, code=%{public}d, message=%{public}s', e.code, e.message);
  15. }
  16. }
  17. /**
  18. * 数据更新
  19. * 开发者可根据透传数据自定义实现数据更新逻辑
  20. * @param data 透传数据
  21. */
  22. private updateData(data: string): void {
  23. // 开发者自行实现数据更新逻辑
  24. }
  25. }

onDestroy

Phone5.0.0(12)+PC/2in15.0.1(13)+Tablet5.0.0(12)+TV5.1.1(19)+Wearable5.1.0(18)+

onDestroy(): void

当PushExtensionAbility被销毁时,会执行该回调,建议在该方法中执行资源清理等操作。

模型约束: 此接口仅可在Stage模型下使用。

系统能力: SystemCapability.Push.PushService

起始版本: 4.0.0(10)

示例:

收起
自动换行
深色代码主题
复制
  1. import { PushExtensionAbility } from '@kit.PushKit';
  2. import { hilog } from '@kit.PerformanceAnalysisKit';
  3. import { BusinessError } from '@kit.BasicServicesKit';
  4. const LOG_DOMAIN = 0x0000;
  5. const LOG_TAG = 'PushExtAbility';
  6. // 此处以PushExtAbility继承PushExtensionAbility为例
  7. export default class PushExtAbility extends PushExtensionAbility {
  8. onDestroy(): void {
  9. hilog.info(LOG_DOMAIN, LOG_TAG,'PushExtAbility onDestroy');
  10. try {
  11. this.releaseResources();
  12. } catch (err) {
  13. const e: BusinessError = err as BusinessError;
  14. hilog.error(LOG_DOMAIN,LOG_TAG,'releaseResources failed, code=%{public}d, message=%{public}s', e.code, e.message);
  15. }
  16. }
  17. /**
  18. * 释放资源
  19. * 开发者根据实际业务自行实现
  20. */
  21. private releaseResources(): void {
  22. // 资源释放逻辑
  23. }
  24. }