Не удалось создать сервис ввода-вывода.flutter.plugins.firebasemessaging.Flutterfirebasemessagingсервис

#java #android #firebase #flutter

#java #Android #огневая база #флаттер

Вопрос:

Я интегрировал свое приложение flutter с firebase messaging и успешно получал уведомления, и все работало нормально, но теперь, когда я попытался запустить проект снова, он показывает ошибку, и когда я отправляю уведомление на устройство, оно останавливается.

ошибка

 D/AndroidRuntime( 8359): Shutting down VM
E/AndroidRuntime( 8359): FATAL EXCEPTION: main
E/AndroidRuntime( 8359): Process: com.tapfy.me, PID: 8359
E/AndroidRuntime( 8359): java.lang.RuntimeException: Unable to create service io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService: java.lang.RuntimeException: PluginRegistrantCallback is not set.
E/AndroidRuntime( 8359):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:4204)
E/AndroidRuntime( 8359):    at android.app.ActivityThread.access$1500(ActivityThread.java:237)
E/AndroidRuntime( 8359):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)
E/AndroidRuntime( 8359):    at android.os.Handler.dispatchMessage(Handler.java:106)
E/AndroidRuntime( 8359):    at android.os.Looper.loop(Looper.java:223)
E/AndroidRuntime( 8359):    at android.app.ActivityThread.main(ActivityThread.java:7656)
E/AndroidRuntime( 8359):    at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime( 8359):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
E/AndroidRuntime( 8359):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
E/AndroidRuntime( 8359): Caused by: java.lang.RuntimeException: PluginRegistrantCallback is not set.
E/AndroidRuntime( 8359):    at io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService.startBackgroundIsolate(FlutterFirebaseMessagingService.java:157)
E/AndroidRuntime( 8359):    at io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService.onCreate(FlutterFirebaseMessagingService.java:77)
E/AndroidRuntime( 8359):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:4192)
E/AndroidRuntime( 8359):    ... 8 more
I/Process ( 8359): Sending signal. PID: 8359 SIG: 9
 

Ответ №1:

создать новый класс приложения

 class Application : FlutterApplication(), PluginRegistrantCallback {
override fun onCreate() {
    super.onCreate()
    FlutterFirebaseMessagingService.setPluginRegistrant(this)
}

override fun registerWith(registry: PluginRegistry?) {
    io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin.registerWith(registry?.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin"));
}
 

}

измените свой Манифест

 <application
    android:name=".Application"
 

Ответ №2:

Если вы используете Flutter Android Embedding V2 (версия Flutter> = 1.12), никаких дополнительных шагов интеграции не требуется. Но для V1 вам нужно отредактировать.

Класс приложения:

 // ...
import io.flutter.plugins.firebase.messaging.FlutterFirebaseMessagingBackgroundService;

public class Application extends FlutterApplication implements 
PluginRegistrantCallback {
  // ...
  @Override
  public void onCreate() {
    super.onCreate();
  
    FlutterFirebaseMessagingBackgroundService
              .setPluginRegistrant(this);
  }

  @Override
  public void registerWith(PluginRegistry registry) {
    GeneratedPluginRegistrant.registerWith(registry);
  }
  // ...
}
 

Android Manifest.xml:

     <application
    android:name=".Application"
    ...
 

Ссылка на официальную документацию.