我刚接触Flutter和IOS。我正在为Android和IOS配置FCM推送通知,对于Android它很好用。我参考了这篇文章: https://medium.com/@jun.chenying/flutter-tutorial-part3-push-notification-with-firebase-cloud-messaging-fcm-2fbdd84d3a5e
。对于IOS,如果应用程序已打开并且我同时从Firebase控制台发送FCM,则Flutter on message会被调用(见屏幕截图,日志在那里)。但是,如果我关闭应用程序,则通知不会出现在通知栏中,但我在Android应用程序中收到了通知。我不知道问题出在哪里,是苹果配置文件还是Flutter的问题。
以下是我的Flutter代码:
IOS构建设置和签名与功能
class FirebaseNotifications {
FirebaseMessaging _firebaseMessaging;
SharedPreferences _sharedPreferences;
void setUpFirebase() {
_firebaseMessaging = FirebaseMessaging();
initializeSharedPreferences();
firebaseCloudMessaging_Listeners();
}
void initializeSharedPreferences() async {
_sharedPreferences = await SharedPreferences.getInstance();
}
void firebaseCloudMessaging_Listeners() {
if (Platform.isIOS) iOS_Permission();
_firebaseMessaging.getToken().then((token) {
_sharedPreferences.setString(Preferences.device_token, token);
print('Token'+token);
});
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print('on message $message');
},
onResume: (Map<String, dynamic> message) async {
print('on resume $message');
},
onLaunch: (Map<String, dynamic> message) async {
print('on launch $message');
},
);
}
void iOS_Permission() {
_firebaseMessaging.requestNotificationPermissions(
IosNotificationSettings(sound: true, badge: true, alert: true));
_firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings settings) {
print("Settings registered: $settings");
});
}
}
FirebaseAppDelegateProxyEnabled
。你还必须实现didRegisterForRemoteNotificationsWithDeviceToken
和didReceiveRemoteNotification
来使其正常工作,并且不要忘记在你的apns
负载中加入content-available
! - Hurobaki