如何在我的Android活动中实现FCM onmessagerreceived()监听器



我有一个PyFCM服务器通过Firebase (FCM)向我的简单android应用程序发送通知。我已经测试并获得常规通知消息,当应用程序在后台运行时出现在托盘中,没有问题。我现在想在我的应用程序中接收数据消息,并触发应用程序功能时,发生这种情况。我的理解是,当收到数据消息时触发onMessageReceived(),但我不确定如何在我的代码中正确实现此侦听器。

文档说明:

通过重写方法FirebaseMessagingService.onMessageReceived,您可以根据接收到的RemoteMessage对象执行操作并获得消息数据:

那是什么意思?我看到这个onMessageReceived()在一个名为MyFirebaseMessagingService.java的文件中。这个文件放在哪里?

说我有一个函数getLocation()在我的MainActivity.java,什么是确切的步骤来获得传入的FCM数据消息触发我的getLocation()函数?我很难找到具体的例子。

我一直在做更多的研究,我能够解决我的问题。我了解到FCM作为服务运行(与我的活动并行),但它并不真正与我的活动通信,至少不是直接通信。这使得从MainActivity.java中调用getLocation()成为一个问题。我可以通过LocalBroadcastManager来解决这个问题。

示例FCM服务(MyFirebaseMessagingService.java)确实与MainActivity.java放在同一个文件夹中,或多或少是这样的(当然改变了包的名称)。然而,为了启动服务,我必须将它添加到我的应用程序清单文件中。

这就是我的问题所在;我没有在清单文件的正确位置添加服务。它应该看起来像:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.project">
    <application
        .../>
        <activity ...
        </activity>
        <service
            android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
    </application>
</manifest>

onMessageReceived可能会在你的应用程序在用户的设备上不活跃时被调用。因此,它运行在一个服务中。

在访问设备注册令牌的文档部分首先提到了它。但是关于如何设置它的大部分解释都在文档中关于处理消息的部分。

相关内容

  • 没有找到相关文章