通过推送通知打开时,Flutter 应用程序会在最近的应用程序列表中重复

问题描述 投票:0回答:1

有人可以帮助我吗?

当我通过推送通知打开我的应用程序时,它会在最近的应用程序列表中重复。发生的事情是这样的:

  • 我打开应用程序,然后按后退按钮将其关闭。
  • 当我收到推送通知并通过通知打开应用程序时,它在最近的应用程序列表中出现两次。
  • 但是,如果我在第一次启动后按主页按钮关闭应用程序,它就可以正常工作。

我尝试过使用标准、singleTop、singleTask 和 singleInstance 启动模式,但都没有解决问题。

关于如何防止 Flutter 中出现这种重复,有什么建议吗?

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <application
        android:label="Жеке Кабинет Дордой"
        android:name="${applicationName}"
        android:icon="@mipmap/ic_launcher"
        android:usesCleartextTraffic="true">
        <activity
            android:name=".MainActivity"
            android:exported="true"
            android:launchMode="singleInstance"
            android:taskAffinity=""
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- Specifies an Android theme to apply to this Activity as soon as
                 the Android process has started. This theme is visible to the user
                 while the Flutter UI initializes. After that, this theme continues
                 to determine the Window background behind the Flutter UI. -->
            <meta-data
              android:name="io.flutter.embedding.android.NormalTheme"
              android:resource="@style/NormalTheme"
              />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        <!-- Don't delete the meta-data below.
             This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>
    <!-- Required to query activities that can process text, see:
         https://developer.android.com/training/package-visibility and
         https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.

         In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
    <queries>
        <intent>
            <action android:name="android.intent.action.PROCESS_TEXT"/>
            <data android:mimeType="text/plain"/>
        </intent>
    </queries>
</manifest>

我尝试在AndroidManifest.xml中使用不同的启动模式,包括standard、singleTop、singleTask和singleInstance。但是,这些模式都无法阻止应用程序在通过推送通知重新打开后在最近的应用程序列表中出现两次。

我预计该应用程序只会在最近的应用程序列表中出现一次,无论它如何重新打开,无论是通过推送通知还是直接从主屏幕打开。具体来说,我希望设置适当的启动模式将确保应用程序恢复现有实例而不是创建重复实例。

android flutter dart firebase-cloud-messaging
1个回答
0
投票

您可能需要检查或更改点击通知时启动 Activity 的代码(Android 代码,而不是 Flutter 代码),因为用于启动的 Intent 标志会覆盖清单设置。

© www.soinside.com 2019 - 2024. All rights reserved.