在 Expo 通知库中处理通知点击:启动时与运行时

发布日期:2026-08-04 10:01:29  浏览量 :0
发布日期:2026-08-04 10:01:29  
0

本文是原始日文文章的中文译本。

当用户点击推送通知时,入口点会根据应用程序是否正在运行而有所不同。如果你仅使用一个监听器配合 Expo 路由来导航至通知目标屏幕,可能会错过从终止状态启动的情况。

在我的应用中,我通过两种独立的机制来处理这两种情况:

  • getLastNotificationResponseAsync():当应用因点击通知而启动时
  • addNotificationResponseReceivedListener():当应用在运行时点击通知时

构建通知数据结构

从服务器发送的通知在 data.url 中包含目标路径。

{
  title: "出勤截止提醒",
  body: "请确认明天训练的出勤情况",
  data: {
    url: "/organizations/org_123/schedules/schedule_456"
  }
}

与其解析显示的 titlebody 来确定目标,我将应用可处理的路径作为独立数据传递。

处理从通知启动的情况

当应用处于终止状态时,我在启动后检查最后一条通知响应。

void Notifications.getLastNotificationResponseAsync().then((response) => {
  if (response) {
    handleNotificationTap(response.notification);
  }
});

此过程是异步的。如果在验证身份认证之前或在导航器准备就绪之前调用 router.push,可能会导致导航冲突。在我的应用中,我在登录检查完成后执行此操作。

useRegisterPushToken(authChecked);

处理运行时点击通知的情况

当从后台或前台点击通知时,监听器会接收到该事件。

const subscription =
  Notifications.addNotificationResponseReceivedListener((response) => 

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

分享到:

长按或扫码识别 分享给好友

长按或扫码识别 分享给好友
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据