FCM showing duplicate notification when app is in background(当应用程序处于后台时,FCM 显示重复通知)
问题描述
我在我的项目中实施了 FCM.推送通知按预期工作,收到通知时调用 onMessageReceived.当应用程序在前台时是这样.
I implemented FCM in my project. Push notification is working as expected, onMessageReceived is called when a notification is received. This is true when app is in the foreground.
但是,当应用程序在后台时,系统托盘总是在一个到达时显示重复的通知(例如,当收到通知 A 时,系统托盘显示 2 个通知 A)
However, when the app is in the background, the system tray always display a duplicate notification when one arrives (e.g. when Notification A is received, system tray display 2 Notification A)
如何解决这个问题?
添加代码
我扩展了 FirebaseMessagingService
类,并在 onMessageReceived
方法中有这个
I extended FirebaseMessagingService
class and have this in the onMessageReceived
method
这是项目中我使用 NotificationManager 的唯一部分.
This is the only part in the project where I used NotificationManager.
另外,我尝试在此方法上添加日志.当应用程序在前台时调用 onMessageReceived.应用在后台时不会被调用
Also, I tried to add a log on this method. onMessageReceived is called when app is in foreground. It doesn't get called when app is in background
@Override
public void onMessageReceived(RemoteMessage remoteMessage)
{
RemoteMessage.Notification notification = remoteMessage.getNotification();
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
String title = notification.getTitle();
String message = notification.getBody();
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
推荐答案
同样的问题.我修改了 AndroidManifest.xml,因为我正在像这样请求对旧 GCM 的权限...
Same problem. I modified AndroidManifest.xml because i was requesting permissions to old GCM like this...
<uses-permission android:name="mypackage.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<permission
android:name="mypackage.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
所以,从清单中删除它并卸载并重新安装应用程序,我的问题就解决了.
So, removing it from manifest and uninstalling and reinstalling the app my problem was solved.
这篇关于当应用程序处于后台时,FCM 显示重复通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:当应用程序处于后台时,FCM 显示重复通知
基础教程推荐
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01