我正在使用FCM接收消息,而 onMessageReceived 我有代码
NotificationManager notificationManager = (NotificationManager) getApplicationContext().getSystemService(Service.NOTIFICATION_SERVICE);
Intent notifyIntent = new Intent(this,HelloBubblesActivity.class);
notifyIntent.putExtra("id",sender);
notifyIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, notifyIntent, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setContentTitle("New Message from " + name)
.setSmallIcon(R.drawable.smalllogo)
.setAutoCancel(false)
.setContentText(text)
.setContentIntent(pendingIntent);
notificationManager.notify(sender, mBuilder.build());
当应用程序从通知中打开时,我遇到的问题是获取额外的是-1这里的代码
int chatId = getIntent().getIntExtra("id",-1);
我有没有想念?
答案 0 :(得分:2)
作为FCM doc
要接收消息,请使用扩展的服务 FirebaseMessagingService。您的服务应该覆盖 onMessageReceived回调,为大多数消息类型提供, 除以下情况外:
您的应用在后台时发送的通知。在这 如果是,通知将传送到设备的系统托盘。一个 用户点按通知会默认打开应用启动器。消息 同时包含通知和数据有效负载。在这种情况下, 通知将传递到设备的系统托盘和数据 有效载荷是在发射器意图的额外内容中提供的 活性。
所以 onMessageReceived 将永远不会触发,如果应用程序在后台,当您点击MainActivity将启动的通知时,您只需要获取意图并获取从服务器发送的Extra < / p>
if (null != getIntent().getExtras() )
{
chatId = getIntent().getStringExtra("sender");
}
答案 1 :(得分:0)
确保您的活动不是singleInstance启用。有一段时间是关于singleInstance活动的问题