MissingPluginException (Реализация для показа метода на канале dexterous.com/flutter/local_notifications не найдена)
Я пробовал реализовать Firebase Cloud Messaging 9X_flutter-layout с Flutter, и мне это удавалось, пока я не 9X_dart использовал плагин Local Notification для 9X_firebase отображения уведомлений
Мое уведомление работает 9X_flutter-packages нормально на переднем плане, но на заднем 9X_localnotification плане отображается следующая ошибка:
[ОШИБКА: flutter 9X_localnotification / lib / ui / ui_dart_state.cc (157)] Необработанное 9X_dart исключение: MissingPluginException (Реализация 9X_dart для метода, отображаемого на канал dexterous.com/flutter/local_notifications)
Я 9X_flutter использую Firebase Cloud Messaging 6.0.9, Local 9X_firebase-android Notification 1.2.0 + 4 и последнюю версию 9X_firebase Flutter
Вот мой код: NotificationHandler
import 'package:flutter_local_notifications/flutter_local_notifications.dart'; class NotificationHandler{ static final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); // make it a static field of the class static void initNotification() { // initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project var initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/ic_launcher'); var initializationSettingsIOS = IOSInitializationSettings( onDidReceiveLocalNotification: onDidReceiveLocalNotification); var initializationSettings = InitializationSettings( initializationSettingsAndroid, initializationSettingsIOS); flutterLocalNotificationsPlugin.initialize(initializationSettings, onSelectNotification: onSelectNotification); } static Future onSelectNotification(String payload) async { if (payload != null) { print('notification payload: ' + payload); } } static Future onDidReceiveLocalNotification(int id, String title, String body, String payload) { print(title+" "+body); } }
Метод ShowNotification
static void showNotification(data, data2) async { var androidPlatformChannelSpecifics = new AndroidNotificationDetails( 'dexterous.com.flutter.local_notifications', 'your channel name', 'your channel description', importance: Importance.Max, priority: Priority.High); var iOSPlatformChannelSpecifics = new IOSNotificationDetails(); var platformChannelSpecifics = new NotificationDetails( androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics); await NotificationHandler.flutterLocalNotificationsPlugin .show( 0, data, data2, platformChannelSpecifics, payload: 'Custom_Sound', ); }
Ответ #1
Ответ на вопрос: MissingPluginException (Реализация для показа метода на канале dexterous.com/flutter/local_notifications не найдена)
Я нашел решение, поэтому на стороне платформы 9X_flutter-sdk мы не регистрируемся для внешнего плагина
Добавьте 9X_firebase в свой FCMPluginRegistrant.java как
public final class FirebaseCloudMessagingPluginRegistrant { public static void registerWith(PluginRegistry registry) { if (alreadyRegisteredWith(registry)) { return; } FirebaseMessagingPlugin.registerWith(registry.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin")); FlutterLocalNotificationsPlugin.registerWith(registry.registrarFor("com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin")); } private static boolean alreadyRegisteredWith(PluginRegistry registry) { final String key = FirebaseCloudMessagingPluginRegistrant.class.getCanonicalName(); if (registry.hasPlugin(key)) { return true; } registry.registrarFor(key); return false; } }
И назовите 9X_flutter-sdk его в Application.java
@Override public void registerWith(PluginRegistry registry) { FirebaseCloudMessagingPluginRegistrant.registerWith(registry); }
Ответ #2
Ответ на вопрос: MissingPluginException (Реализация для показа метода на канале dexterous.com/flutter/local_notifications не найдена)
Для Котлина: Application.kt
package your.package.name import io.flutter.app.FlutterApplication import io.flutter.plugin.common.PluginRegistry import io.flutter.plugin.common.PluginRegistry.PluginRegistrantCallback import io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin import io.flutter.view.FlutterMain import io.flutter.plugins.firebasemessaging.FlutterFirebaseMessagingService import com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin class Application : FlutterApplication(), PluginRegistrantCallback { override fun onCreate() { super.onCreate() FlutterFirebaseMessagingService.setPluginRegistrant(this); FlutterMain.startInitialization(this) } override fun registerWith(registry: PluginRegistry?) { if (!registry!!.hasPlugin("io.flutter.plugins.firebasemessaging")) { FirebaseMessagingPlugin.registerWith(registry!!.registrarFor("io.flutter.plugins.firebasemessaging.FirebaseMessagingPlugin")); } if (!registry!!.hasPlugin("com.dexterous.flutterlocalnotifications")) { FlutterLocalNotificationsPlugin.registerWith(registry!!.registrarFor("com.dexterous.flutterlocalnotifications.FlutterLocalNotificationsPlugin")); } } }
9X_firebase
-
1
-
2
-
4
-
2
-
3
-
10
-
6
-
3
-
4
-
8
-
6
-
9
-
5
-
1
-
10
-
9
-
5
-
1
-
1
-
10
-
6
-
3
-
4
-
10
-
8
-
3
-
4
-
30
-
2
-
1
-
4
-
6
-
1
-
4
-
2
-
3
-
1
-
1
-
5
-
7
-
3
-
17
-
2
-
2
-
2
-
4
-
14
-
1
-
6
-
11