Flutter IOS FCM推送通知未进入通知栏

时间:2020-03-03 08:54:26

标签: ios flutter firebase-cloud-messaging apple-push-notifications

我是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构建设置以及签名和功能

IOS build Settings

这是我的代码,

    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");
    });
   }
  }

5 个答案:

答案 0 :(得分:1)

在Xcode功能标签中显示“推送通知(配置文件)”很奇怪。

也许再次将其删除并再次添加。您是否在“背景模式”中选中了“背景获取”和“远程通知”框?

enter image description here

答案 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>

之前:

enter image description here

现在:

enter image description here

<块引用>

信息:如果您的 info.plist 中没有此代码并且您没有 也收到通知,请确保添加它。

别忘了,这是新代码:

<key>FirebaseAppDelegateProxyEnabled</key>
<string>0</string>

希望有用

答案 4 :(得分:0)

我设法解决了该问题:

  1. 在您的info.plist中:

     FirebaseAppDelegateProxyEnabled: false
    
  2. 将此添加到您的AppDelegate:

    override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    
       Messaging.messaging().apnsToken = deviceToken
       super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
     }