我使用了Firebase通知,并创建了一个扩展FirebaseMessagingService
的类。我在这个类中创建了一个方法,该方法获取消息体,然后根据有效负载显示通知。
我的问题是,这个通知只有在我的应用程序运行时才有效,但当它关闭时,我会收到Firebase的默认通知,而不是我创建的自定义通知。
我的服务类是:
public class FirebaseNotifications extends FirebaseMessagingService {
String lastChange = "";
String currentChange = "";
@Override
public void onCreate() {
super.onCreate();
Log.i("firebase", "it started");
SharedPreferences settings = getSharedPreferences(PREFS, 0);
lastChange = settings.getString("lastFbInput", "");
Log.i("lastChange", lastChange);
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
currentChange = remoteMessage.getNotification().getBody();
Log.i("from: ", remoteMessage.getFrom() + "");
if(remoteMessage.getData().size()>0)
Log.i("payload: ", remoteMessage.getData().toString());
if(remoteMessage.getNotification() != null)
Log.i("message body: ", remoteMessage.getNotification().getBody());
if(!lastChange.equals("")) {
Log.i("equals", "1");
if (!lastChange.equals(currentChange)) {
showNotification(remoteMessage.getNotification().getBody());
Log.i("equals", "2");
}
}
else
{
showNotification(remoteMessage.getNotification().getBody());
Log.i("equals", "3");
}
}
我的问题是该服务甚至不运行showNotification
方法。有没有人能给出一个解决方案?
发布于 2017-03-01 03:08:24
这是预期的行为。当您的应用程序处于后台时,Android会自动处理通知。从docs
大多数消息类型都提供了
onMessageReceived
,但以下消息类型除外:
当你的应用程序在后台时交付的
您的有效负载中可能同时包含notification
和data
。要只让你的应用程序处理通知(在onMessageReceived()
中),你应该使用data
-only消息有效负载。有关更多详细信息,请参阅Message Types文档。
https://stackoverflow.com/questions/42520836
复制相似问题