【发布时间】:2019-04-16 07:25:19
【问题描述】:
我尝试了以下代码。它给出的“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 函数的消息仅是字符串格式。从服务器接收通知数据没有问题。
【问题讨论】: