应用程序关闭时推送通知不起作用 - Flutter
Posted
技术标签:
【中文标题】应用程序关闭时推送通知不起作用 - Flutter【英文标题】:Push notification not working when the app is closed - Flutter 【发布时间】:2021-03-08 22:13:47 【问题描述】:当应用程序关闭时,我的 android 不会收到来自 Firebase 的推送通知,但如果我打开应用程序,一切正常。这是我的 MainActivity:
package com.imperio.app
import io.flutter.embedding.android.FlutterActivity
class MainActivity: FlutterActivity()
还有我的 Flutter 配置:
void configure()
_firebaseMessaging.requestNotificationPermissions();
_firebaseMessaging.configure(
onLaunch: (params)
_bloc.onEventChanged(DispatchLaunch(params));
return null;
,
onMessage: (params)
_bloc.onEventChanged(DispatchMessage(params));
return null;
,
onResume: (params)
_bloc.onEventChanged(DispatchLaunch(params));
return null;
);
当应用程序打开时,我可以正常接收通知。我看到有些人更改了 de MainActivity,但在嵌入 v2 之后,Google 文档对此没有任何说明。
我在 Android Manifest 中添加了点击通知:
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
问题出现在 Android 10 中,我在 Android 8 设备上进行了测试,它可以正常工作。
【问题讨论】:
您能否提供有关您的代码的更多信息。 从技术上讲,不需要配置任何其他东西来通知工作。 曾经遇到同样的问题,但将 minSdkVersion 从 16 更改为 21 已解决该错误,我不知道这是否对您有用,但值得一试 我改为 21,但我仍然遇到同样的问题。如果我的应用程序是开放的,但没有关闭。 【参考方案1】:在颤振的 firebase 消息传递文档中您必须添加
<intent-filter>
<action android:name="FLUTTER_NOTIFICATION_CLICK" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
mainfest.xml 的内部标签
并添加 Application.java 并粘贴此代码
import io.flutter.app.FlutterApplication;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback;
import io.flutter.plugins.GeneratedPluginRegistrant;
import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService;
public class Application extends FlutterApplication implements
PluginRegistrantCallback
@Override
public void onCreate()
super.onCreate();
FlutterFirebaseMessagingService.setPluginRegistrant(this);
@Override
public void registerWith(PluginRegistry registry)
GeneratedPluginRegistrant.registerWith(registry);
在 AndroidManifest.xml 中设置应用程序的名称属性。这通常在 /android/app/src/main/ 中找到。
<application android:name=".Application" ...>
你可以在https://pub.dev/packages/firebase_messaging获得完整的文档
【讨论】:
我有这个错误:使用 Application java 的类型:PluginRegistry 无法转换为 FlutterEngine GeneratedPluginRegistrant.registerWith(registry); ^ ***.com/questions/59446933/…查看此链接 现在这个错误(我改为 FirebaseMessagingPlugin.registerWith 而不是 GeneratedPluginRegistrant):无法实例化活动 ComponentInfocom.imperio.app/com.imperio.app.Application:java.lang.ClassCastException: com.imperio.app.Application 无法转换为 android.app.Activity 你应该在 Applications.java 中而不是在 MainActivity.java 中执行此操作,并按照pub.dev/packages/firebase_messaging 包一步一步进行 当然,但我的应用程序没有收到正常的通知,应用程序终止。此配置用于在应用程序打开的情况下处理后台通知。我试图像文档中所说的关于后台通知的那样做,但也没有奏效。以上是关于应用程序关闭时推送通知不起作用 - Flutter的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序在后台或终止时,iOS 设备不会推送通知。导航到下一个屏幕在 Flutter 的 IOS 设备中也不起作用?
Flutter - onLaunch 中的 Firebase 云消息导航不起作用