当应用关闭时推送通知无法工作 - Flutter

31 浏览
0 Comments

当应用关闭时推送通知无法工作 - 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的设备上进行了测试,它是正常工作的。

0
0 Comments

在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的标签中设置name属性。通常在/android/app/src/main/目录下找到。

完整的文档可以在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上存在报告的问题。

0