我試圖讓Android BroadcastReceiver在Android系統收到Firebase雲消息通知時運行。用於BroadcastReceiver的Firebase-cloud-messaging意圖過濾器是什麼?
public class MyBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = "MyBroadcastReceiver";
@Override
public void onReceive(final Context context, Intent intent) {
Toast.makeText(context, "EVENT OCCURED", Toast.LENGTH_LONG).show();
}
}
,要求在AndroidManifest這樣指定接收標籤:
<receiver
android:name=".MyBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</receiver>
正如你可以在清單見上面,我說:
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
確保當我將電纜插入Android設備時,BroadcastReceiver會閃光。它工作正常。
因此,問題出在:
<action android:name="com.google.firebase.MESSAGING_EVENT" />
不是由廣播接收器的認可這個意向篩選器操作? BroadcastReceiver使用的Firebase消息是否存在另一種意圖過濾器操作?
所以說我創建了一個android服務而不是BroadcastReceiver,我從不銷燬哪個監聽'com.google.firebase.MESSAGING_EVENT'。這可以工作嗎? – Jupiter
是的。這是接收消息的常用方式,詳見[安裝文檔](https://firebase.google.com/docs/cloud-messaging/android/client#manifest)。您只需定義一個擴展[FirebaseMessagingService](https://firebase.google.com/docs/reference/android/com/google/firebase/messaging/FirebaseMessagingService)的服務並在清單中聲明它。 –
確實。我從一開始就這樣做了,但是這個實現並沒有解決我的問題。 FirebaseMessagingService類只在應用程序啓動時觸發。我試圖在應用未由Firebase消息發起時啓動服務。你還能建議先生嗎? – Jupiter