【问题标题】:FCM Notification with payload in device's system tray not getting passed to App设备系统托盘中带有有效负载的 FCM 通知未传递给应用程序
【发布时间】:2017-06-05 00:20:17
【问题描述】:

Android 应用程序正在后台运行。在高级选项中使用有效负载在 Firebase 控制台中创建了一条通知消息。收到通知并显示在设备的系统托盘上后,单击通知只是返回到应用程序,并且数据有效负载未在启动器活动意图的附加内容中传递。默认情况下,通知不会按照文档中的说明打开应用程序启动器。为什么设备系统托盘中的通知正在启动Activity,但有时它只是进入应用程序,因为它是正常单击应用程序图标?

【问题讨论】:

    标签: android firebase firebase-notifications


    【解决方案1】:

    您在 MainActivity 中使用什么,如果您正在发送通知并且应用程序在前台,那么它将带您到那个非常特定的页面。但是如果你的应用是后台的,那么点击通知托盘只会启动你的应用。在这里,如果您希望在单击通知时将其引导至特定页面,那么您必须在 MainActivity 中使用这段代码。

     if (getIntent().getExtras() != null) { 
            Intent intent = new Intent(MainActivity.this, NotificationActivity.class); 
            startActivity(intent); 
        } 
    

    【讨论】:

    • 这就是我所拥有的,问题是意图从未从通知托盘传递到 MainActivity。它只是正常打开应用程序,就像单击应用程序图标一样。
    【解决方案2】:

    检查您的启动器活动是否在清单中有 android:launchMode="singleTop" 并且您正在尝试读取 onCreate() 方法中的附加内容。

    如果是这种情况,则只会创建该类的 1 个实例,因此如果当用户触摸托盘中的通知时 Activity 在后台,则调用的方法是 onNewIntent()。在这种方法中,您可以获得额外内容并以这种方式将它们放在一般意图中:

    @Override
    public void onNewIntent(Intent intent){
        super.onNewIntent(intent);
        setIntent(intent);
    }
    

    然后 onResume() 您可以使用 getIntent().getExtras() 访问附加内容。

    编码愉快!

    【讨论】:

      【解决方案3】:

      当您的应用处于后台时,您将在启动器活动中以捆绑包的形式获取所有数据。要获得这些值,请确保在 启动器活动 中覆盖 onNewIntent。就我而言,它是启动画面。

      @Override
          protected void onNewIntent(Intent intent) {
              super.onNewIntent(intent);
              if (intent.getExtras() != null) {
                  for (String key : intent.getExtras().keySet()) {
                      Object value = intent.getExtras().get(key);
                      Log.d("data ", "Key: " + key + " Value: " + value);
                  }
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2021-05-07
        • 2018-05-31
        • 2016-09-21
        • 1970-01-01
        • 1970-01-01
        • 2010-11-05
        • 2017-08-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多