簡體   English   中英

如何在我的Android活動中實現FCM onMessageReceived()偵聽器

[英]How to implement FCM onMessageReceived() listener in my Android activity

我有一個PyFCM服務器通過Firebase(FCM)將通知發送到我的簡單android應用。 我已經測試過,並在應用程序在后台運行時正常接收通知消息,該消息會出現在任務欄中。 我現在想在我的應用程序中接收數據消息,並在發生這種情況時觸發應用程序功能。 我的理解是,當接收到數據消息時會觸發onMessageReceived() ,但是我不確定如何在我的代碼中正確實現此偵聽器。

文檔指出:

通過重寫FirebaseMessagingService.onMessageReceived方法,可以基於接收到的RemoteMessage對象執行操作並獲取消息數據:

這意味着什么? 我看到此onMessageReceived()位於名為MyFirebaseMessagingService.java的文件中。 這個文件去哪兒了?

假設我在MainActivity.java中有一個函數getLocation() ,獲取進入的FCM數據消息以觸發我的getLocation()函數的確切步驟是什么? 我很難找到具體的例子。

當您的應用在用戶設備上未激活時,可能會調用onMessageReceived 因此,它在服務中運行。

在訪問設備注冊令牌文檔部分中首先提到了它。 但是,有關如何設置此設置的大多數說明在文檔中有關處理消息部分下。

我一直在做更多的研究,並且能夠解決我的問題。 我了解到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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM