此文章内容兼容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,则收不到通知。