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

从前台状态转到后台状态不会收到firebase通知

苏昊英
2023-03-14

我引用了前台和后台接收firebase通知的答案-->https://stackoverflow.com/A/38451582/12553303

其实下面是我的疑问:--------

如果我没有为前台条件编码(谈论推送通知),当我的应用程序在后台时,我仍然会得到通知,对吗????-->是的

但是,当im处于前台状态时,我从firebase推送了一个通知-->我不会在状态栏上看到通知,这也是可以的(因为假设我没有覆盖onmessagereceive()方法)....然后,我转到后台状态,我没有看到我发送给后台的任何通知

我应该做什么来获取我为后台发送的通知,比如从前台状态(没有onmessagereceived()的方法)到后台状态??*

谢谢你的建议和澄清...

这甚至可能使通知从前台状态移动到后台状态吗?

override fun onMessageReceived(p0: RemoteMessage) {
    super.onMessageReceived(p0)
    Log.d("msg", "onMessageReceived: " + p0.getData().get("message"))
    val intent = Intent(this, OrderListActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT)
    val channelId = "Default"
    val builder: NotificationCompat.Builder =NotificationCompat.Builder(this, channelId)
        .setSmallIcon(R.mipmap.ic_launcher)
        .setContentTitle(p0.getNotification()?.getTitle())
        .setContentText(p0.getNotification()?.getBody()).setAutoCancel(true)
        .setContentIntent(pendingIntent)
    val manager = getSystemService(NOTIFICATION_SERVICE) as NotificationManager
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        val channel = NotificationChannel(channelId,
            "Default channel",
            NotificationManager.IMPORTANCE_DEFAULT)
        manager.createNotificationChannel(channel)
    }
    manager.notify(0, builder.build())

}

共有1个答案

冯哲彦
2023-03-14

为了在Android应用程序中接收消息,Firebase通知在应用程序处于前台或后台时包含不同的机制。

当应用程序关闭时,您的通知将由谷歌服务进程处理,它会根据需要显示您的通知,包括点击操作即打开应用程序和通知图标。

当应用程序处于前台时,接收到的消息由应用程序处理。

1.创建一个扩展FirebaseMessagingService的新类2.实现onMessageReceived()方法3.然后从remoteMessage获取Notification对象并创建您自己的Android通知,

public class MyNotificationService extends FirebaseMessagingService { 
  @Override
  public void onMessageReceived(RemoteMessage remoteMessage) {
    super.onMessageReceived(remoteMessage);
    Notification notification = new NotificationCompat.Builder(this)
      .setContentTitle(remoteMessage.getNotification().getTitle())
      .setContentText(remoteMessage.getNotification().getBody())
      .setSmallIcon(R.mipmap.ic_launcher)
      .build();
     NotificationManagerCompat manager = NotificationManagerCompat.from(getApplicationContext());
     manager.notify(1, notification);
   }
}

4.然后在您的AndroidManifest.xml中添加服务

<service android:name=”.MyNotificationService”>
   <intent-filter>
      <action android:name=”com.google.firebase.MESSAGING_EVENT”/>
   </intent-filter>
</service>
 类似资料:
  • 使用最新iOS设备中的M7芯片,当用户使用CMMotionActivityManager从静止状态转到跑步、行走等状态时,可以通过编程方式获得通知。Stava和Runkeeper都使用此功能在检测到用户未通过M7移动时自动暂停GPS轮询(关闭GPS天线),然后在再次移动时重新启用GPS更新。它可以在应用程序处于后台状态时执行此操作,这是此处的关键。 复制此功能时遇到的问题是,如果我在应用程序处于后

  • 问题内容: 我做了一个小实验:http : //codepen.io/hawkphil/pen/NqMomm?editors=101 这是我的状态流(单击按钮): 在每个状态变化,我在出了 但是,你可以在看线,奇怪的事情发生了。我从“后退”按钮获得的“思维”,它显示为先前的状态()。这是不对的,对吧?它应该显示为以前的状态,因为我必须通过单击按钮来 手动*状态。我还显示了(line )中的值,以防

  • 当我的应用程序处于打开状态时,我正在通过onMessageReceived(Remotemessage mesg)获得推送通知。如果我的应用程序处于Kilded状态,我将收到推送通知,但不是从onMessageReceived()获得的。 意思是,在收到推送通知后,根据通知中的数据,我需要重定向页面,当通知点击时。如果应用程序在前景工作良好。当我杀人的时候,我在托盘上收到通知,但当我点击通知时,它

  • 我遇到了一个需求,但我无法获得正确的实施方式,因此需要您的帮助。 我想做什么我想根据收到的通知执行以下操作: 当应用程序处于打开状态且处于前台(即用户可见)且我收到通知时,我只需显示一个弹出窗口即可开始我的活动B 我做了什么?我已经达到了第1点和第2点。我想达到第三点。我试过下面的方法 然而,在这两种情况下,点#2和#3都返回true,所以我不能仅区分#3。 我也尝试了下面的每一个活动, 但是,它

  • 问题内容: 通过使用reactjs后挂机,不返回此状态下的电流值,我该如何处理呢? 这是这种情况的代码,尝试找出控制台日志的显示内容。 问题答案: 默认情况下,只做一件事,只做一件事,设置新状态并导致函数重新呈现。它本质上是异步的,因此默认情况下,通常在它运行之后运行的方法。 从您的示例中,在页面的全新加载中,键入’s’导致useState更改状态,但是由于它是异步的,因此将使用旧的状态值来调用,

  • null 我已经尝试调用NotificationManager.Cancel()和NotificationManager.CancelAll()。并尝试引发相同的原始PRIORITY_LOW通知。但它们都将通知图标留在状态栏中。