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

Firebase云消息传递因升级到Oreo而停止

尉迟清野
2023-03-14

我刚刚开始Android开发,并在运行向导后设法让Firebase消息正常工作。我能够在运行Nougat的Nexus 5X上收到后台通知。但后来我的5X升级到Oreo和Firebase通知再也没有工作过。我听说过后台执行限制,但由于我刚刚开始,我不知道我实际上必须做些什么才能让它再次工作。有关于这方面的任何文章吗?我从头开始尝试了一个新项目,希望向导已经更新,但没有变化。我使用的是应用程序广播消息和主题订阅消息,没有使用设备令牌。

共有2个答案

长孙鸿
2023-03-14

请使用FCM sdk的最新版本。

FCM sdk在4月引入了对Android O的支持,如果您使用的是旧版本,您的应用程序将无法在Android O中接收消息,并且可能会崩溃。

请参阅此处的最新版本:https://firebase.google.com/support/release-notes/android

PS:Firebase SDK已移至Google Maven存储库。
请务必在此处查看最新说明:https://firebase.google.com/docs/android/setup#manually_add_firebase

狄玉书
2023-03-14

当你瞄准Android 8.0(API级别26)时,你必须实现一个或多个通知通道来向你的用户显示通知。如果你不是针对Android8.0(API级别26),但你的应用程序在运行Android8.0(API级别26)的设备上使用,那么你的应用程序的行为与在运行Android7.1(API级别25)或更低版本的设备上的行为相同。

如果您将目标版本更改为Android 8.0(API级别26),则必须执行以下更改

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
     NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
     String id = "id_product";//This will be enter when creating Builder
     // The user-visible name of the channel.
     CharSequence name = "Product";
     // The user-visible description of the channel.
     String description = "Notifications regarding our products";
     int importance = NotificationManager.IMPORTANCE_MAX;
     NotificationChannel mChannel = new NotificationChannel(id, name, importance);
     // Configure the notification channel.
     mChannel.setDescription(description);
     mChannel.enableLights(true);
     // Sets the notification light color for notifications posted to this
     // channel, if the device supports this feature.
     mChannel.setLightColor(Color.RED);
     notificationManager.createNotificationChannel(mChannel);
  }

更改生成器构造函数

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(applicationContext, **ID you have put in the Notification Channel**)

最后,您可以从生成器创建通知

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

裁判:https://developer.android.com/guide/topics/ui/notifiers/notifications.html#ManageChannels

 类似资料:
  • 我必须在SpringJava中为多层架构制作一个RESTAPI,其中需要为Firebase云消息传递(FCM)构建DAO、控制器和服务管理器,以向android应用程序发送推送通知消息,但我无法在Java中配置服务器以向设备发送通知。我怎么能?

  • FCM服务未向我的iOS应用程序发送消息。 > App CAN成功接收APNs令牌和实例ID令牌 App CAN使用推送通知实用程序利用. p8令牌在后台成功接收来自APN的推送 #2中使用的相同APNs密钥上传到Firebase控制台 应用程序无法接收Firebase控制台中Notification Composer发送的消息,也无法使用CURL请求接收消息。 应用程序在通过FCM发送时不显示任

  • 我正试图将FCM与SNS整合。我在这个答案中读到设置应该与GCM相同。我设法创建了一个FCM应用程序,可以向android设备发送消息。当应用程序在后台时,设备在托盘中接收通知,或当应用程序在前台时打印接收的消息。我正试图整合它现在到SNS,但我似乎不能使它工作,没有任何错误信息。

  • 我试图从C#中的服务器发送推送通知,我使用了正确的注册令牌和API密钥,但仍然得到以下响应。 我按照这个网址来实现这个解决方案通过C#使用FCM(Firebase云消息传递)发送推送到Android 目前,我正在尝试向单个设备发送通知,但也希望同时向多个设备发送通知,我使用了url中给出的,但它不起作用。如果我必须同时向多个设备发送通知,我该怎么办? 这是我的密码

  • 我正在尝试使用FireBase云消息传递。我正在接收令牌,但它没有从控制台收到任何通知。这是我的舱单: 我的代码与示例中的代码几乎相同: 我在这里检查了一个问题,Firebase云消息通知未被设备接收,但仍然无法工作。

  • 我的应用程序结构有点乱,但我必须先添加这个补丁,然后我会重新构建整个逻辑。问题是我首先检查是否有Firebase用户,然后如果有,我使用StreamBuilder从FiRecovery获取当前用户配置文件,然后我有_firebaseMessaging.configure方法,因为onLaunch和onResume我使用这个回调: 因为我需要将用户发送到这个屏幕,在那里他从Firebase获取消息。