当应用关闭时推送通知无法工作 - Flutter
当应用关闭时推送通知无法工作 - Flutter
当我关闭应用程序时,我的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;
}
);
}
当应用程序处于打开状态时,我可以正常接收通知。我看到一些人改变了MainActivity,但在嵌入式v2之后,Google的文档没有提到任何相关内容。
我在Android清单中添加了通知点击的操作:
这个问题发生在Android 10上,我在一个Android 8的设备上进行了测试,它是正常工作的。
在Flutter的Firebase Messaging文档中,您需要添加以下内容到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 {
public void onCreate() {
super.onCreate();
FlutterFirebaseMessagingService.setPluginRegistrant(this);
}
public void registerWith(PluginRegistry registry) {
GeneratedPluginRegistrant.registerWith(registry);
}
}
在AndroidManifest.xml的
完整的文档可以在https://pub.dev/packages/firebase_messaging找到。
我遇到了以下错误:types using Application java: PluginRegistry cannot be converted to FlutterEngine GeneratedPluginRegistrant.registerWith(registry);
解决方法:参考这个链接https://stackoverflow.com/questions/59446933
现在出现了这个错误(将FirebaseMessagingPlugin.registerWith改为GeneratedPluginRegistrant):Unable to instantiate activity ComponentInfo{com.imperio.app/com.imperio.app.Application}: java.lang.ClassCastException: com.imperio.app.Application cannot be cast to android.app.Activity
解决方法:您应该在Applications.java中进行更改,而不是MainActivity.java,并且按照https://pub.dev/packages/firebase_messaging的步骤进行操作。
当然,我的应用程序在被终止的情况下无法接收到正常的通知。这些配置是用于处理应用程序打开时的后台通知。我尝试按照文档中关于后台通知的说明进行操作,但仍然无法正常工作。
我认为这可能是一个通道问题,请参考这个答案https://stackoverflow.com/questions/61943309
我发现了另一件事,在Android 8上运行得很好。但是在Android 10上存在报告的问题。