当应用程序处于活动状态时,一切正常运行,但是当没有活动正在运行时,我仍然会通过firebase通知收到 app_name 和正文的通知,并打开MainActivity。这是我的MyFirebaseMessagingService类: - 我看到了一个similar question,但在我的情况下它并没有帮助我。
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if(remoteMessage.getNotification()!=null){
if(DictionarySscWords.send_notifications) { //tried removing this condition but same result.
sendnoti(remoteMessage.getNotification().getBody());
}
}
}
private void sendnoti(String body) {
Intent i1=new Intent(this,MainActivity.class);
i1.putExtra("word", body);
i1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pi=PendingIntent.getActivity(this,0,i1,PendingIntent.FLAG_CANCEL_CURRENT);
Uri ns=RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder nb=new NotificationCompat.Builder(this).setSmallIcon(R.drawable.heart)
.setContentTitle("Word Of the Day")
.setContentText(body).setSmallIcon(R.drawable.heart)
.setAutoCancel(true)
.setSound(ns)
.setContentIntent(pi);
NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0,nb.build());
}
}
当应用程序处于活动状态时
当没有活动正在运行时
还试图通过AVD但没有错误。
我很困惑如何在不通过这个类的情况下创建通知,好像这被称为不同的值将在这里填充。
感谢
答案 0 :(得分:1)
通知邮件在发送到通知托盘时 应用程序在后台。对于前台应用程序,将处理邮件 通过这些回调:
DidReceiveRemoteNotification:在Android上的iOS OnMessageReceived()上。 数据包中的通知密钥包含通知。
如果您使用基于message
的通知,那么只有当您的应用程序位于前台时才会处理,否则,Firebase将处理它们。
基于message
的通知示例:
{
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"notification" : {
"body" : "great match!",
"title" : "Portugal vs. Denmark",
"icon" : "myicon"
}
}
如果您想要处理所有通知,如果应用程序位于前台或后台,则需要独立处理,您需要开始根据data
发送推送通知。例如:
{
"to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
"data" : {
"Nick" : "Mario",
"body" : "great match!",
"Room" : "PortugalVSDenmark"
},
}