【问题标题】:Firebase Cloud Messaging : Parsing data from the message even when the app is terminatedFirebase Cloud Messaging:即使应用程序终止,也能从消息中解析数据
【发布时间】:2019-02-06 16:43:23
【问题描述】:

我了解 Firebase 云消息传递有助于发送推送通知和数据消息。我正在使用 Flutter 的 firebase_messaging pub 在我的设备中接收通知。 onMessage、onLaunch 和 onResume 回调仅在通知被关闭或点击时调用。

但是,无论通知是否被解除,我都想访问收到的消息。有没有办法做到这一点,无论应用程序是在前台、后台还是终止?

【问题讨论】:

    标签: android firebase dart flutter firebase-cloud-messaging


    【解决方案1】:

    您可以立即将您的消息发送到广播接收器并在此处解析它

    更新:

    你应该创建BroadcastReceiver:

    class YourBroadcastReceiver : BroadcastReceiver() {
    
        override fun onReceive(context: Context?, intent: Intent?) {
            //some code..
        }
    }
    

    然后在Manifest注册:

    <receiver
        android:name="com.yourApp.YourBroadcastReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="YourBroadcastReceiver " />
        </intent-filter>
    </receiver>
    

    下一步也是最后一步是在方法onMessageReceived 中的FirebaseMessagingService 中,您可以获取您的数据并将其发送到YourBroadcastReceiver

    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        super.onMessageReceived(remoteMessage)
        val messageText = remoteMessage.data[yourData]
        val intent = Intent(this, YourBroadcastReceiver ::class.java)
        intent.putExtra(messageText, messageText)
        sendBroadcast(intent)
    }
    

    【讨论】:

    • 你能举个例子吗?
    • @vzurd 是的,当然。更新答案
    • 谢谢伊万。 Flutter 的想法是不必为同一个应用程序分别为 Android 和 iOS 编写代码。但是,这仅适用于 Android ,对吗?我想知道在颤振/飞镖世界中是否有任何通用的解决方案。
    • @vzurd 我不认为这些代码适用于 iOS,顺便说一句,flutter 还很年轻,有些代码你必须分开
    • FirebaseMessaging 插件已经在这样做了。它是一个广播接收器,firebase 消息从其 onMessageRecieve 向其发送意图。但是,我发现当应用程序终止时它会发送到不同的广播接收器。因此,它无法调用从广播接收器调用的 dart 函数。 github.com/flutter/plugins/tree/master/packages/…
    猜你喜欢
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 2017-01-09
    • 2022-06-25
    • 2020-07-28
    • 2016-09-22
    相关资源
    最近更新 更多