当应用程序先前从通知启动时,Android上的FCM不会触发`onNewIntent`

时间:2017-07-17 12:03:57

标签: android firebase android-intent firebase-cloud-messaging

当我的应用从通知启动时,我想打开一个合适的屏幕。我找到了一个不按预期工作的方案。

所以这是第一个可行的方案:

  1. 应用程序从启动器图标
  2. 启动
  3. 应用程序已置于后台
  4. FCM通知显示
  5. 点击后,系统会调用onNewIntent默认活动。
  6. 但是,当首次从FCM通知启动应用程序时,步骤4.永远不会发生:

    1. FCM通知显示
    2. 应用程序从FCM通知
    3. 启动
    4. 应用程序已置于后台
    5. 显示另一个FCM通知
    6. 点击onNewIntent默认活动未收到
    7. 我发现使用和编写代码确实存在问题。这是一个错误还是我错过了什么?

      编辑:清单文件中的默认活动launchMode设置为singleTask

2 个答案:

答案 0 :(得分:0)

参考上一个答案,onNewIntent被调用用于将launchMode设置为" singleTop"的活动。

首先,您应该设置清单文件。将活动的launchMode设置为 singleTop 。另一件事是添加一个带有动作标签的intent过滤器。

样品:

<activity android:name="youPackage.YourActivity"
          android:launchMode="singleTop">
    <intent-filter>
        <action android:name="youPackage.ACTION">
    </intent-filter>
</activity>

并且,在您的服务中,您可以根据在intent-filter中定义的操作调用新意图。

样品:

Intent i = new Intent("youPackage.ACTION");

参考:

答案 1 :(得分:0)

确保在启动器活动中覆盖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);
            }
        }
    }