我有一个Android应用程序,可以通过Firebase接收通知。这些通知由网站上的用户操作触发。然后,我们的API向Firebase发送通知请求。
然而,最近我遇到了一个问题,我的应用程序一直不停地接收通知。对于直接通知和主题消息,这似乎都在发生。起初我以为是API卡在某种循环中,但事实并非如此,因为我直接从Firebase控制台发送的通知也会发生这种情况。我自己的理论是Firebase认为通知没有到达目标设备,因此正在重新发送。
另一方面,iOS版的我的应用程序似乎没有这个问题。
我的代码:
@Override
public void onMessageReceived(RemoteMessage message) {
Log.d(getClass().getName(), "Received notification");
Map data = message.getData();
try {
String scope = (String) data.get("scope");
if(scope == null){
Log.w(getClass().getName(), "Received notification with no scope");
return;
}
String senderName = (String) data.get("senderName");
String notificationMessage = (String) data.get("message");
SharedPreferences notificationPreferences = getSharedPreferences(Constants.PREF_NOTIFICATION_SETTINGS, 0);
switch(scope){
case Constants.NOTIFICATION_SCOPE_PROTOCOL:
handleProtocolUpdateMessage(data);
return; // PROTOCOL notifications are not stored in DB
case Constants.NOTIFICATION_SCOPE_USERSETTINGS:
handleUserSettingsUpdateMessage(data);
return; // USERSETTINGS notifications are not stored in DB
case Constants.NOTIFICATION_SCOPE_DEVICE:
if(notificationPreferences.getBoolean(Constants.PREF_DEVICE_NOTIFICATION_FILTER, true)){
updateUnreadNotificationCounter();
createNotification(scope, senderName, notificationMessage);
}
break;
case Constants.NOTIFICATION_SCOPE_INVENTORY:
if(notificationPreferences.getBoolean(Constants.PREF_INVENTORY_NOTIFICATION_FILTER, true)){
updateUnreadNotificationCounter();
createNotification(scope, senderName, notificationMessage);
}
break;
case Constants.NOTIFICATION_SCOPE_JOURNAL:
if(Application.test(this)){
return;
}else{
if(notificationPreferences.getBoolean(Constants.PREF_JOURNAL_NOTIFICATION_FILTER, true)){
updateUnreadNotificationCounter();
createNotification(scope, senderName, notificationMessage);
}
}
break;
case Constants.NOTIFICATION_SCOPE_SUPPLY:
if(notificationPreferences.getBoolean(Constants.PREF_SUPPLIES_NOTIFICATION_FILTER, true)){
updateUnreadNotificationCounter();
createNotification(scope, senderName, notificationMessage);
}
break;
case Constants.NOTIFICATION_SCOPE_SYSTEM:
if(notificationPreferences.getBoolean(Constants.PREF_SYSTEM_NOTIFICATION_FILTER, true)){
updateUnreadNotificationCounter();
if (Application.test(this)) {
createNotification(scope, "A", notificationMessage);
} else {
createNotification(scope, "B", notificationMessage);
}
break;
}
break;
default:
//If scope doesn't match any known scopes then return
return;
}
saveNotification(data);
}catch(ClassCastException e){
Log.e(getClass().getName(), "Error while parsing notification contents", e);
}
}
我将Firebase从11.0.1更新为最新版本11.6.1,该问题似乎不再出现。
我知道这个问题已经问过很多次了,但是我仍然无法从parse.com获得推送通知 推送通知正在从parse.com成功发送,但我的应用程序没有接收到它们。 大多数人用这个解决了他们的问题:我不能在应用程序中接收来自对我不起作用的Parse bt的推送通知。 我也试过Android--不能接收来自parse.com的推送。 有些人建议改变包的名称,我做了,甚至做了一个新的应用程序,但没有帮助。 这是我
我使用Firebase控制台发送通知到我的Android设备,它的工作正常时,应用程序是在后台或前台状态。但它没有收到的通知在被杀死的状态,因为我没有附加任何数据,它不应该是一个数据通知。
我开发了一个新的Android应用程序使用appcelerator。我使用ti.cloudpush来使用来自Firebase的推送通知,如本例所示;如果应用程序处于后台,则成功发送通知并显示在设备的通知栏中,但当应用程序处于前台或关闭时,则不会收到通知发送过程的结果是"成功"。 我需要使它像facebook messenger一样,在应用程序关闭时显示在设备屏幕上。我尝试了其他几个模块,如“ti.
手机是OnePlus3T。oxygen OS版本为4.1.6。当应用程序在前台、后台但在内存中时,应用程序会收到通知。但当应用程序不在内存中(即从内存中刷出)时不会收到通知。其他安装了android操作系统版本4.2、5.1.1、6.0.1、7.1.1的设备也会收到通知,即使应用程序不在内存中。 好心建议点什么。提前道谢。
我目前正在开发Android(Cordova)应用程序,我正在使用Oneignal推送通知。首先,如果我关闭应用程序,推送通知不会被传递,所以我不得不添加一个Cordova插件来保持我的应用程序在后台运行: 我在deviceready之后的代码: 谢了。
我的应用程序的通知工作良好,在后台和前台接收通知,使用Firebase原生插件。现在,我的客户端需要在收到通知时打开应用程序,而不需要任何用户迭代。 我找到了这个,但没有正确的答案。 在调试中,我意识到通知是通过FireBaseInstanceIDReceiver广播接收的。所以,我试过: 修改 plugins/cordova-plugin-firebase-lib/plugin.xml 我的问题