0

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

文档指出:

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

这意味着什么?我看到这onMessageReceived()是在一个名为MyFirebaseMessagingService.java的文件中。这个文件去哪里了?

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

4

2 回答 2

0

我一直在做更多的研究,我能够解决我的问题。我了解到 FCM 作为服务运行(与我的活动并行),但它并没有真正与我的活动通信,至少不是直接通信。getLocation()这使得从 MainActivity.java中调用成为一个问题。我能够通过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>
于 2016-11-04T05:49:59.790 回答
0

onMessageReceived当您的应用在用户设备上未处于活动状态时,可能会调用。因此,它在服务中运行。

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

于 2016-11-04T00:11:54.330 回答