目录

应用通知点击跳转异常

问题现象

当用户点击应用推送的通知时,目标页面未能成功跳转,具体表现为:

背景知识

问题定位

  1. 查看对应通知的实现原理,可结合消息内容和通知触发方式初步判断是本地通知(Notification)还是云侧推送通知(Push)。
  2. 由Notification实现的通知,可根据有无notificationManager.publish(发布通知)来确定。再检查构造的NotificationRequest对象是否有Ability Kit(程序框架服务)申请的WantAgent封装至通知消息中,为通知添加行为意图。同时检查WantAgent创建的WantAgentInfo信息是否正确。
  3. 由云侧Push实现的通知,可根据有无获取Push Token的行为(pushService.getToken)来确定。再检查项目模块级别下的src/main/module.json5中的skills标签配置是否正确,也可以查看是否有应用服务端调用Push Kit服务端的REST API推送的Request Body日志打印(关键词"payload"),并检查其中clickAction信息。

分析结论

[h2]场景一

应用通知是通过Notification Kit(用户通知服务)实现的,由于未配置WantAgent或创建WantAgentInfo信息不正确导致跳转异常。

[h2]场景二

应用通知是通过Push Kit(推送服务)实现的,由于云侧推送的消息中clickAction中携带data字段和actionType字段设置不正确或在module.json5中的skills标签配置不正确导致跳转异常。

修改建议

[h2]场景一

Notification本地消息实现点击跳转,详情请参考开发步骤。

  1. 创建WantAgentInfo信息。
    • 创建拉起UIAbility的WantAgent的WantAgentInfo信息。
    • 创建发布公共事件的WantAgent的WantAgentInfo信息。
  2. 调用getWantAgent()方法进行创建WantAgent。
  3. 构造NotificationRequest对象,并发布WantAgent通知。

[h2]场景二

Push推送消息实现点击跳转,以进入应用内页并传递数据为例,详情请参考点击消息进入应用内页。

  1. 在项目模块级别下的src/main/module.json5中设置待跳转Ability的skills标签中的actions或uris值,两种方式如下:
    • 在skills标签中新增一个独立的skill对象,配置actions参数用于点击消息进入应用内页。
    • 在skills标签中新增一个独立的skill对象,配置uris参数用于点击消息进入应用内页(必须同时配置actions参数和uris参数,actions参数为空)。
  2. 应用服务端调用Push Kit服务端的REST API推送通知消息时,clickAction中携带data字段并设置actionType字段为1,详情请参考请求体参数说明。
  3. 在待跳转页面(以TestAbility为例)中接收消息中传递的data数据: