android - 如何从 Android&FCM 中的推送通知中打开特定活动?
问题描述
在应用程序关闭时,我收到一条关于使用 FCM 聊天的新消息的通知。当我点击它时,我想打开聊天活动,但主要活动打开了。
单击推送通知将打开主要活动。在其中,我可以从意图中获取一种通知并打开另一个活动:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
processNotification()
}
private fun processNotification() {
val notificationCategory = intent?.extras?.getString("category") ?: return
if (notificationCategory == "new_message") {
startMessagingActivity()
finish()
}
}
这种方法在我看来很脏而且不方便。是否可以指定单击推送通知时将打开的活动?
编辑: 解决步骤:
向要打开的活动添加一个意图过滤器:
<activity android:name=".messages.chatroom.ChatRoomActivity"> <intent-filter> <action android:name="*your-action-name*"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
将 'click_action=" your-action-name "' 字段添加到您的 FCM 消息中。
Android 会自动打开 Activity,动作和 click_action 一样
解决方案
您将需要使用 Android 深度链接。
您的通知 (FCM) 应该具有一些数据的有效负载(消息 ID 完全取决于您的设计),用于您想要在这种情况下使用您的聊天活动的给定屏幕。
聊天活动需要在清单中声明主机和架构,以下是深度链接的说明和代码:
https://developer.android.com/training/app-links/deep-linking
快乐编码。
推荐阅读
- unity3d - 如何解决导致构建失败的不兼容 Gradle 守护程序错误
- laravel - 如何使用 ftp 在 aws 上部署 laravel 应用程序
- node.js - 预期响应 404 但开玩笑地收到 500
- javascript - 在 webdriver-io 中最大化浏览器窗口大小
- php - 在 Laravel 中验证浮点值时出错
- flutter - 颤振酒吧以退出代码 64 结束
- javascript - 如何在我的 React 应用程序中使用 Firebase 身份验证强制注册?
- yocto - yocto recipe 如何将文件安装到 rootfs
- python - 捕获特定字符串之后的所有字符并将它们转换为单个字符串
- android - registerForActivityResult:如果原始启动器被销毁并重新创建,则结果未交付