应用程序推送通知 - 收到并导航到屏幕 - 应用程序何时关闭?

Posted

技术标签:

【中文标题】应用程序推送通知 - 收到并导航到屏幕 - 应用程序何时关闭?【英文标题】:Application PushNotification - Receive and Navigate to screen - When app is closed? 【发布时间】:2018-03-16 09:28:43 【问题描述】:

我想知道即使 WhatsApp 关闭/终止,WhatsApp 等应用程序如何仍能够将用户导航到正确的消息屏幕。

这是否意味着 WhatsApp 根本没有终止,而是一直在后台运行?

我需要在 react-native 应用程序中实现相同的功能。推送通知正在工作,但是当我的应用程序终止时,它只会在收到推送通知后将应用程序打开到主屏幕。

我想知道: 1) 如果存在一种策略,即使它被终止,它也能像 WhatsApp 一样接收 pushnotifs? 2) 其他技术 - 例如OneSignal 或 Pusher - 提供此功能。

请注意,我来自 ios 背景。

谢谢, 阿维纳什

【问题讨论】:

您可以使用深层链接。参考这里developer.android.com/training/app-links/deep-linking.html @Gautam Deeplinking(例如 Branch.io 或 native)用于从 URL 而非 Notifcation 打开应用程序。 @VishalChhodwani 您可以传递带有通知数据的路径或 URL,并将用户重定向到包含该信息的相关页面。像 react-navigation 这样的通用导航库已经内置了这个路径功能。 More info @VishalChhodwani 您也可以使用通知中的深层链接,如果打开不同的活动,最好使用相同的链接,这样可以保持代码干净。在创建待处理意图时,在意图上使用 setData 并传递您的 URI,它将充当深层链接 How to navigate screen on notification open in React Native with One Signal?的可能重复 【参考方案1】:

,如果从通知导航到特定的Activity,这并不意味着应用程序正在后台运行。

我来自 Native Android 平台,我不能给你 react-native 的确切代码,但可以给你提示。

有一个名为PendingIntent的android组件负责从通知导航到特定的Activity

原生 Android 代码

Intent notificationIntent = new Intent(this, YourRedirectedActivity.class);

PendingIntent contentIntent = PendingIntent.getActivity(this, 100, notificationIntent, PendingIntent.FLAG_ONE_SHOT);

此代码传递给NotificationManager 并显示通知。

所以当用户点击通知时,它会重定向到上面的 PendingIntent 屏幕。

    即使应用程序终止,通知仍然有效。 原生 Android (JAVA/Kotlin) 提供此功能。

希望它能给你带来解决方案。

【讨论】:

谢谢维沙尔。我忘了提到我来自 iOS 背景。我会尝试看看如何让它发挥作用。 我的荣幸... :)【参考方案2】:

在最新版本的 FCM 中,当应用处于后台时,它会自动显示通知。只能在应用运行时在 FCM 的消息服务类中得到通知。

当应用程序在后台时,您可以在“第一个运行的类”中获取带有捆绑数据的通知数据,检查意图然后推送到您想要的其他一些类。

<intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

【讨论】:

【参考方案3】:

我将使用 react-navigation 深层链接功能和 Firebase FCM 发送深层链接 (url),我将检查然后导航到该深层链接。

【讨论】:

以上是关于应用程序推送通知 - 收到并导航到屏幕 - 应用程序何时关闭?的主要内容,如果未能解决你的问题,请参考以下文章

当应用程序被杀死时,无法在推送通知单击时导航到特定屏幕(Flutter android)

如何通过推送通知显示带有 TabBarController 导航的视图控制器

推送通知:从 AppDelegate 导航到 ViewController

打开应用程序并锁定屏幕时未收到 Ionic FCM 推送通知,除非被点击

当应用程序在后台或终止时,iOS 设备不会推送通知。导航到下一个屏幕在 Flutter 的 IOS 设备中也不起作用?

iOS - 收到推送通知后显示视图