鸿蒙app 通知接入

此文章内容兼容API12,使用harmony next应用开发

1,查看/添加 我的项目
AppGallery Connect

添加项目

2,左侧项目设置 -> 常规 , 设置 “ 添加公钥指纹 ”,为默认的最上面一个。app重新签名如果更改,此处记得同步更新!


常规配置

此处配置是自动签名,如果是证书签名,同样方法配置公钥指纹

3,左侧 增长 -> 推送服务 ,开通后,选择配置tab,选择应用,获得 Client ID

获得ClientID

添加到entry下的 module.json5 文件中

{
  "module": {
    "metadata": [
      {
        "name": "client_id",
        "value": "xxxxxxxx"  // 替换为实际的Client ID
      }
    ]
  }
}

4,申请通知权限

requestPermission(context: common.UIAbilityContext) {
  notificationManager.isNotificationEnabled().then((data: boolean) => {
    if (!data) {
      notificationManager.requestEnableNotification(context).catch((err: BusinessError) => {
        console.error(`Failed to request notification permission: ${err.code} ${err.message}`);
      });
    }
  });
}

5,获取 token

async getPushToken(success: (token: string) => void) {
  pushService.getToken().then((data: string) => {
    success(data);
    console.info('Succeeded in getting push token:', data);
  }).catch((err: BusinessError) => {
    console.error(`Failed to get push token: ${err.code} ${err.message}`);
  });
}

出现报错1000900010 请下滑

6,编译打包(不要更改配置和签名),
在平台上配置消息,如果顺利的话,可以收到推送消息


推送消息配置

7,响应推送消息点击的后续操作
(1)在"skills" 里配置 "actions"

"abilities": [
      {
        "name": "EntryAbility",
        "srcEntry": "./ets/entryability/EntryAbility.ets",
        "description": "$string:EntryAbility_desc",
        "icon": "$media:layered_image",
        "label": "$string:EntryAbility_label",
        "startWindowIcon": "$media:startIcon",
        "startWindowBackground": "$color:start_window_background",
        "exported": true,
        "skills": [
          {
            "entities": [
              "entity.system.home"
            ],
            "actions": [
              "action.system.home",
              "action.test11.msg"
            ],
          }
        ]
      }
    ],

(2) 在 在UIAbility的onNewWant方法中处理推送消息的点击事件响应

onNewWant(want: Want): void {
    // 获取消息中传递的data数据
    hilog.info(0x0000, 'testTag', 'onNewWant: Get message data successfully: %{public}s',
      JSON.stringify(want.parameters));
  }

得到的want数据格式如下图


want

注意:
1,测试环境下,app对每个token,每天仅能推送两条消息
2,如果出现报错 “1000900010 Illegal application identity”,一定要记得检查 Client Id 和 更新“添加公钥指纹” 【见上面第二条】
3,收不到推送消息,检查一下是否在"skills" 里额外配置了 "uris",删除此项再试
uris 和 action可以同时存在。不过 actions和uris不能在同一个对象中,需要在不同的对象中才可以如果在同一个skill里,同时设置了actions和uris,则收不到通知。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容