当前位置: 首页 > 知识库问答 >
问题:

应用程序被删除/刷出时的FCM推送通知

暨成双
2023-03-14

我使用的是FCM云消息,当应用程序在后台但未被杀死或应用程序正在运行时,它工作得很好。一旦应用程序被停止或从最近的应用程序杀死,它不会收到任何通知。

即使是在应用程序启动后,它也不会收到旧的消息。

 @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {

        Map<String, String> data = remoteMessage.getData();
        String myCustomKey = data.get("Nick");
        String myCustomKey1 = data.get("Room");
        testNotification(myCustomKey,myCustomKey1);
}

private void testNotification(String message,String title) {
        Intent intent = new Intent(this, ChatActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                PendingIntent.FLAG_ONE_SHOT);


        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                .setSmallIcon(R.drawable.sham_icon)
                .setContentTitle(title)
                .setContentText(message)
                .setAutoCancel(true)
                .setSound(defaultSoundUri)
                .setContentIntent(pendingIntent);

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify(0, notificationBuilder.build());

    }

用于发送通知的服务器端代码

{
    "to" : "token-key",
    "data" : {
        "title":"title",
        "body":"body",
      "Nick" : "Mario",
      "Room" : "PortugalVSDenmark"
    }
  } 

firebase服务和通知的清单代码

     <meta-data
 android:name="com.google.firebase.messaging.default_notification_icon"
                android:resource="@drawable/narendramodi_icon" />
                android:resource="@drawable/sham_icon" />

             <meta-data
                 android:name="com.google.firebase.messaging.default_notification_color"
                 android:resource="@color/accent" />

                  <service android:name=".firebase.MyFirebaseMessagingService"
                 android:exported="false">
                <intent-filter android:priority="10000">
                     <action android:name="com.google.firebase.MESSAGING_EVENT" />
                 </intent-filter>
             </service>
             <service android:name=".firebase.MyFirebaseInstanceIDService">
                 <intent-filter>
                     <action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
                 </intent-filter>
             </service>

感谢任何帮助。

共有1个答案

彭鸿畅
2023-03-14

发生这种情况的原因是在某些设备上,系统不允许其他应用程序启动应用程序或应用程序服务,对于FCM通知,Google Play services会启动您的应用程序服务,如果您的应用程序已经被杀死,当它们被杀死时(例如小米手机带有MIUI)。

 类似资料:
  • 我正在将通知从GCM迁移到FCM。在GCM中,当应用程序处于前台、后台或被杀死时,我能够收到通知,但在FCM中,当应用程序未被打开或被刷出时,我无法收到通知。我错过什么了吗???? } json请求正文:

  • 我已经编写了一个Windows7.5 phone应用程序,用于注册mpns的tile和toast推送通知。我有所有的基础设施工作和电话注册的MPNS。我将ChannelUri保存在手机上,然后将ChannelUri发布到我网站上记录设备/ChannelUri的rest服务endpoint。我可以从web服务发送toast和tile消息,并在电话上接收它们,没有任何问题。如果应用程序正在运行,我可以

  • 我正在开发一个电子邮件应用程序,我希望用户在收到新电子邮件后立即收到推送通知。为此,我使用FCM。我刚刚通过以下链接尝试使用FCM推送通知:https://www.youtube.com/watch?v=XijS62iP1Xo 感谢每一种帮助。提前感谢。

  • 我想为一个聊天应用程序实现FCM推送通知服务,我遵循Firebase文档中的步骤,当通知从Firebase控制台发送到我的设备时,我会得到通知。当我尝试使用http post to https://FCM.googleapis.com/FCM/send通过FCM将通知通过服务器端发送到设备时: 当应用程序处于活动状态并且我正在将此通知发送到我的设备时,Im在我的控制台日志中收到以下消息,所以我认为

  • 我正在使用FCM进行云消息传递。当我在后台和前台应用状态下收到来自服务器的消息推送时,我想添加应用徽章。我错过了什么?主要问题是根据消息推送添加/更新/删除应用徽章,我可以接收和处理推送消息。我在这个问题上花了3天时间。请帮帮我!?*徽章号码根据内部内容的变化,如如果收到新的电子邮件邮件到gmail应用程序,徽章号码在后台和前台应用程序状态更改为未读邮件计数。 使用XCode 9.2、Swift

  • 我们正在开发一款android应用程序,以接收fcm的推送通知。我们在不同的手机上对该应用程序进行了全面测试,除oneplus 3t手机外,其他所有手机都运行良好。当应用程序被终止或从最近的应用程序中刷出时,它不会收到通知。当应用程序位于前台或打开时,它会收到通知。 我们从互联网上搜索了很多东西,很多网站说,将通知有效负载更改为数据,我们也在更改,它在oneplus 3t mobile中不起作用。