«MissingPluginException» не является подтипом ошибки типа «String» в локальном уведомлении флаттера - PullRequest
0 голосов
/ 16 апреля 2019

Я попробовал следующий код. Это дает «MissingPluginException» не является подтипом типа «String» Ниже приведен код, который я использовал (вставил только часть уведомлений здесь). Нет проблем и у флаттера.

import 'package:flutter_local_notifications/flutter_local_notifications.dart';

class _Home extends State<HomePage> with TickerProviderStateMixin {
     static FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
     FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();

@override
  void initState() {
    super.initState();
    firebaseCloudMessaging_Listeners();

  }
void firebaseCloudMessaging_Listeners() {
    var android = new AndroidInitializationSettings('mipmap/ic_launcher',);
    var ios = new IOSInitializationSettings();
    var platform = new InitializationSettings(android, ios);

    flutterLocalNotificationsPlugin.initialize(platform,onSelectNotification: onSelectNotification);

    if (Platform.isIOS) iOS_Permission();
    _firebaseMessaging.getToken().then((token){
      //FCM=token;
    }).catchError((onError){
      print("blb07 "+onError.toString());
    });

    _firebaseMessaging.configure(
      onMessage: (Map<String, dynamic> message) async {
        print('blb07 on message $message');
        handleNotification(message['data']['message']);
      },
      onResume: (Map<String, dynamic> message) async {
        print('blb07 on resume $message');
        handleNotification(message['data']['message']);
      },
      onLaunch: (Map<String, dynamic> message) async {
        print('blb07 on launch $message');
        handleNotification(message['data']['message']);
      },
    );
  }

  void iOS_Permission() {
    _firebaseMessaging.requestNotificationPermissions(
        IosNotificationSettings(sound: true, badge: true, alert: true)
    );
    _firebaseMessaging.onIosSettingsRegistered
        .listen((IosNotificationSettings settings)
    {
      print("Settings registered: $settings");
    });
  }
  Future onSelectNotification(String payload) async {
    await Navigator.push(
      context,
      new MaterialPageRoute(builder: (context) => new DisplayNotifications()),
    );
  }

  void handleNotification(String message) async{
      var androidPlatformChannelSpecifics = new AndroidNotificationDetails(
          'default1', 'Sureworks ', 'Sureworks app notifications',
          importance: Importance.Max, priority: Priority.High);
      var iOSPlatformChannelSpecifics = new IOSNotificationDetails();
      var platformChannelSpecifics = new NotificationDetails(
          androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
      print("blb07 start");
      try{
        await flutterLocalNotificationsPlugin.show(0, 'Sureworks', message, platformChannelSpecifics,payload: 'item')
            .then((onValue){
          print("blb07 finished");
        }).catchError((onError)=>print("blb07 "+onError));
        print("blb07 hello end line");
      }catch(e){
        print("blb07 error "+e.toString());
      }
  }
} 

мои зависимости pubspec.yaml

dev_dependencies:
  flutter_test:
    sdk: flutter

  http: ^0.11.3+16
  shared_preferences: ^0.4.2
  firebase_messaging: ^4.0.0+1
  firebase_core: ^0.2.5
  flutter_launcher_icons: ^0.7.0
  paging: ^0.1.0
  flutter_local_notifications: ^0.6.1

В чем может быть проблема? Сообщения, передаваемые в функцию handleNotification, имеют только строковый формат. Нет проблем при получении данных уведомлений с сервера.

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Я нашел решение.Перенес мой Android в AndroidX.Теперь работает нормально.Потратил на это более 4 часов.Перейдите на AndroidX и «Недействительные кэши и перезапуск» сделали свое дело.

0 голосов
/ 16 апреля 2019

Вы пробежали pod install?Если маловероятно, что на исходной стороне чего-то не хватает.

Просто откройте терминал и перейдите в корневой каталог своего проекта флаттера.
Затем cd в папку iOS и запустите pod install.

Это должно исправить вашу ошибку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...