如何从 Ionic 5 中的推送通知打开应用程序 + 特定 url?

How to open app + specific url from a push notification in Ionic 5?

我正在开发一个带有 ionic 5 (react) 和 capacitor.js 的应用程序。当我收到推送通知并采取行动时,我有一个执行任务的处理程序(目前我只是注销数据)。我需要在此处理程序中发生的是将用户路由到应用程序中的特定路由,例如myapp/my-movies/:movie-id。最初我认为我需要使用插件来支持通用 links,但现在我质疑这主要是因为我们没有启动相应的 web/pwa 应用程序,我的理解是通用 link 是将网站 URL 绑定到应用程序特定的 URI 方案和路由 (from this helpful SO post)。我还读到通用 links 是自定义 uri 方案的强制替换,我读得越多,就越不清楚。

所以我的问题是,如何从推送通知中的事件处理程序路由到我的应用程序中经过身份验证的特定 uri? (假设已安装)这可以使用 capacitor.js deeplinks or ionic/native ? It looks like I'll need to create "a two-way association between your website and app 之类的插件来完成吗?但是正如我提到的,我们没有此应用程序的随附网站。

参考官方 plugin docs,您应该在您的应用中实现此处理程序。

每当用户点击推送通知时,应用程序关闭时,都会触发此侦听器。在此您可以路由到特定页面。

此外,您必须在从您的服务器发送的推送通知中添加负载。可以在侦听器中读取该有效负载。基于此,您的应用可以决定它应该导航到哪里。

示例

PushNotifications.addListener('pushNotificationActionPerformed',
  (res: PushNotificationActionPerformed) => {
    this.zone.run(() => {
      console.log(res);
      if (res.notification.data && res.notification.data.value) {
        //assuming your payload has a key 'value'
        this.navigateToMyMovies(res.notification.data.value);
      }
    })
  });

更新:-

为了处理深层链接,推送通知插件不会处理它。您将不得不为此目的使用 Capacitor App Plugin。特别是这段代码..

App.addListener('appUrlOpen', (data: any) => {
   console.log('App opened with URL: ' +  data.url);
});

就个人而言,在电容器中的深层链接努力工作之后,我继续实施 Firebase 动态链接,即使设备上未安装该应用程序也能正常工作。

但是仍然需要应用程序关联文件..