gpt4 book ai didi

android - FCM 在应用程序处于后台时显示重复通知

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:49:18 24 4
gpt4 key购买 nike

我在我的项目中实现了 FCM。推送通知按预期工作,收到通知时调用 onMessageReceived。当应用程序在前台时,这是真的。

但是,当应用程序在后台时,系统托盘总是在一个通知到达时显示重复的通知(例如当收到通知 A 时,系统托盘显示 2 个通知 A)

如何解决这个问题?

编辑:添加代码

我扩展了 FirebaseMessagingService 类并将它放在 onMessageReceived 方法中

这是项目中我使用 NotificationManager 的唯一部分。

此外,我尝试在此方法上添加日志。 onMessageReceived 在应用程序处于前台时被调用。当应用程序在后台时它不会被调用

@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 的权限...

<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" />

因此,从 list 中删除它并卸载并重新安装应用程序,我的问题就解决了。

关于android - FCM 在应用程序处于后台时显示重复通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42110581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com