我將推送通知系統與Firebase集成到了我的項目中,並且運行良好。很少clarficiation使用WakefulBroadcastReceiver進行Firebase集成
要遵循的步驟火力地堡
整合- 創建從火力控制檯JSON文件,並在我的項目增加(谷歌services.json)
依賴編譯的lib在我的構建添加。 gradel(根以及內部的應用程序)
AndroidManifest.xml添加了以下服務器。
<service android:name="com.myfirebase.myfirebasemsgservice" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service>
在「myfirebasemsgservice」的內部添加了以下行,並繼續進行並運行良好。
public void onMessageReceived(RemoteMessage fcmMessage) { Log.d(TAG, "From: " + fcmMessage.getFrom()); if (fcmMessage.getData().size() > 0) { Log.d(TAG, "Message data payload: " + fcmMessage.getData()); Log.d(TAG, "Message data payload: " + fcmMessage.getData().toString());
我檢查,如果從火力控制檯以及ARC(高級REST客戶端)發送了一個通知。我試過通知有效負載和數據有效負載都運行良好。
我的說明以及我們需要如何整合到firebase中,就像下面的代碼一樣。我們以前的做法是什麼意思?任何想法和我們如何需要這樣整合?
AndroidManifest.xml - 先前已添加。
<receiver android:name="com.mygcm.gcmbroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> <category android:name="${applicationId}" /> </intent-filter> </receiver> <service android:name="com.mygcm.gcmIntentService" />
gcmbroadcastReceiver添加了下面的代碼。
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { ComponentName comp = new ComponentName(context.getPackageName(), GCMIntentService.class.getName()); startWakefulService(context, (intent.setComponent(comp))); } }
gcmIntentService添加了下面的代碼。
public class gcmIntentService extends IntentService { @Override protected void onHandleIntent(Intent intent) { Bundle extras = intent.getExtras(); GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this); String messageType = gcm.getMessageType(intent); try { if (!extras.isEmpty()) { if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) { Log.d("LogData",intent.getStringExtra(Constants.PAYLOAD)); } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) { Log.d("LogData",intent.getStringExtra(Constants.PAYLOAD)); } else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) { Log.d("LogData",intent.getStringExtra(Constants.PAYLOAD)); } } } catch(Exception ignored) { ExceptionTrack exe_track=ExceptionTrack.getInstance(); } finally { GcmBroadcastReceiver.completeWakefulIntent(intent); }
}
您是否設法找到解決方案? 據我所知 '的FirebaseInstanceIdReceiver是接收FirebaseInstanceId和FirebaseMessaging事件,並將其傳送到您從FirebaseInstanceIdService.' – Poorya