我是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消息(请参见屏幕快照,其中有日志)。但是,如果我关闭该应用程序,则通知不会到达通知栏,但我在Android App中收到该通知, 我不知道问题出在哪里,Apple Profiles或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");
});
}
}
答案 0 :(得分:1)
答案 1 :(得分:1)
您并不孤单,请尝试this解决方案。
还请检查它是否不能同时在应用程序的调试版本和发行版中使用-应用程序的调试版本可能无法解析通知。
答案 2 :(得分:1)
万一将来有人遇到这种情况,请在this answer上进行扩展。问题是,在image_gen.flow_from_dataframe
Info.plist
中设置为bool而不是字符串,因此:
FirebaseAppDelegateProxyEnabled
成为
<key>FirebaseAppDelegateProxyEnabled</key>
</false>
答案 3 :(得分:1)
info.plist
文件中进行此替换。用<false/>
替换<string>0</string>
之前:
现在:
<块引用>信息:如果您的 info.plist 中没有此代码并且您没有 也收到通知,请确保添加它。
别忘了,这是新代码:
<key>FirebaseAppDelegateProxyEnabled</key>
<string>0</string>
希望有用
答案 4 :(得分:0)
我设法解决了该问题:
在您的info.plist中:
FirebaseAppDelegateProxyEnabled: false
将此添加到您的AppDelegate:
override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken
super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
}