我正在编程一个从FCM消息接收一些数据的应用程序,然后根据消息中包含的数据有效载荷更新UI。
该服务运行良好并接收数据,但我无法弄清楚如何将其恢复到我的主要活动。
我的清单中宣布了firebase服务为
<service android:name=".MyFirebaseService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
在我的myfirebaseservice类中,我已经覆盖了OnMessageReceived方法,但是我应该如何通知我的主要活动,接收到消息?
我可以在firebase服务上使用一个处理程序吗?
dev.android.com > Develop > Training > Background Jobs > Reporting Work Status
https://developer.android.com/training/run-background-service/report-status.html
将意图服务的工作请求状态发送给其他 组件,首先创建一个意图,其中包含其状态 扩展数据。
接下来,致电发送意图 LocalBroadcastManager.SendBroadcast()。这将意图发送到任何 您的应用程序中已注册以接收它的组件。
Intent localIntent = new Intent(BROADCAST_ACTION).putExtra(DATA_STATUS, status);
LocalBroadcastManager.getInstance(this).sendBroadcast(localIntent);
要接收广播意图对象,请使用 广播员。在子类中,实施
BroadcastReceiver.onReceive()
回调方法,哪个 LocalBroadcastManager收到意图时会调用它。 LocalBroadcastManager将传入的意图传递给BroadcastReceiver.onReceive()
。在 系统,获取LocalBroadcastManager的实例,并调用其
registerReceiver()
方法。
LocalBroadcastManager.getInstance(this)
.registerReceiver(mDownloadStateReceiver, statusIntentFilter);
这是我的消息传递
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("title", fcmTitle);
intent.putExtra("summary", fcmSummary);
intent.putExtra("message", fcmMessage);
intent.putExtra("imageUrl", fcmImageUrl);
intent.putExtra("goto", fcmGoto);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(App.getAppContext(), 0, intent, PendingIntent.FLAG_ONE_SHOT);
您可以有这样的东西可以在主要活动中聆听
Boolean bolGoto = false;
if (getIntent().getExtras() != null) {
for (String key : getIntent().getExtras().keySet()) {
//String value = getIntent().getExtras().getString(key);
if (key.equals("goto")){
bolGoto = true;
}
}
}
if (bolGoto){
handleFCMNotification(getIntent());
}