Flutter 无法捕获已终止 ios 应用程序的通知

Posted

技术标签:

【中文标题】Flutter 无法捕获已终止 ios 应用程序的通知【英文标题】:Flutter can't catch notification with terminated ios application 【发布时间】:2021-03-02 15:45:36 【问题描述】:

所以我的应用程序要求我存储通知,以便用户稍后可以在屏幕上看到它们。

无论应用程序正在运行、在后台还是已终止,在 android 上一切正常。 对于 ios,我可以在应用程序运行时捕获通知。

但问题是每当应用程序终止时,我仍然可以发送 ios 通知并且设备显示通知但数据有效负载未注册 (如果应用程序被终止但用户点击通知并启动应用程序,它也可以工作)

这是 fcm 配置代码 show notification 只是显示通知的本地通知插件,它将通知保存在共享首选项中。

_fcm.configure(
      onBackgroundMessage: Platform.isIOS ? null : backgroundMessageHandler,
      onMessage: (Map<String, dynamic> message) async 
        logger.d("onMessage: $message");
        try 
          showNotifications(message);
         catch (e) 
          print('PushNotificationService.initialise error: $e');
        
      ,
      onLaunch: (Map<String, dynamic> message) async 
        logger.d("onLaunch: $message");
        showNotifications(message);
      ,
      onResume: (Map<String, dynamic> message) async 
        try 
          logger.d("onResume: $message");
          showNotifications(message);
         catch (e) 
          print('PushNotificationService.initialise e: $e');
        
      ,
    );

那么有没有办法在 ios 应用程序终止的情况下捕获和处理数据负载。

【问题讨论】:

在 iOS 上,通知不会唤醒后台应用。当您在后台收到通知时,您的应用程序中不会运行任何代码。如果您在收到通知时需要做某事,那么您必须实现一个通知服务应用扩展:developer.apple.com/documentation/usernotifications/… 不过,不确定如何使用颤振来做到这一点。 【参考方案1】:

您需要在 Xcode 的签名和功能部分添加功能以进行推送通知。

【讨论】:

以上是关于Flutter 无法捕获已终止 ios 应用程序的通知的主要内容,如果未能解决你的问题,请参考以下文章

由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFType next]:无法识别的选择器已发送到实例”

Flutter:当应用程序处于后台但未在 iOS 中终止时,无法在通知单击时重定向到特定屏幕

Flutter - Firebase 动态链接没有被 onLink 捕获,而是在 iOS 上打开应用

由于使用 AWS iOS 开发工具包的未捕获异常“NSInvalidArgumentException”而终止应用程序

Flutter WebView 插件在 iOS 14+ 上安装时会导致应用崩溃

当应用程序终止时,Flutter Background Fetch 是不是可以在 iOS 上工作?