应用程序推送通知 - 收到并导航到屏幕 - 应用程序何时关闭?
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 推送通知,除非被点击