[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fODAxYm012m_cNuXhnKowfLSokN49PvfWnDLr0uoYIFg":3},{"code":4,"message":5,"data":6},200,"成功",{"id":7,"createdAt":8,"title":9,"content":10,"summary":11,"image":12,"uid":13,"user":14,"categoryId":21,"category":22,"subCategoryId":24,"subCategory":25,"comments":27,"status":17,"reason":28,"notice":28,"visitCount":29,"commentCount":30,"keywords":31},148,"2025-02-13T04:40:30.945Z","flutter Notification Service Extension errors(Error output from CocoaPods,unknown ISA PBXFileSystemSynchronized)...","## 一、背景\n在flutter工程中为iOS添加Notification Service Extension时，遇到了一系列的编译和运行问题，在此做一个记录。\n\n本地环境`environment`:\n- Xcode: 16.2\n- Simulator: iOS 17.5\n- Flutter 3.27.0-0.1.pre • channel beta • https://github.com/flutter/flutter.git\nFramework • revision 2e2c358c9b (4 months ago) • 2024-10-22 11:02:13 -0400\nEngine • revision af0f0d559c\nTools • Dart 3.6.0 (build 3.6.0-334.3.beta) • DevTools 2.40.1\n- ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23]\n- CocoaPods : 1.15.2\n\n## 二、问题\n### 问题1: \n> Error output from CocoaPods:\n↳\n    Searching for inspections failed: undefined method `map' for nil\nError running pod install\nError launching application on iPhone SE (3rd generation).\n\n![issue-1 pod error](https://image.xinwei.ltd/image1739418777754.png)\n\n### 问题2:\n> Launching lib/main.dart on iPhone SE (3rd generation) in debug mode...\nRunning pod install...\nRunning Xcode build...\nXcode build done.                                           304.5s\nFailed to build iOS app\nError (Xcode): Cycle inside Runner; building could produce unreliable results.\nCycle details:\n→ That command depends on command in Target 'Runner': script phase “[CP] Copy Pods Resources”\n○ That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”\n○ That command depends on command in Target 'Runner': script phase “Thin Binary”\n○ Target 'Runner' has process command with output '/Users/edy/Desktop/xxxproject/build/ios/Debug-iphonesimulator/Runner.app/Info.plist'\n○ Target 'Runner' has copy command from '/Users/edy/Desktop/xxxproject/build/ios/Debug-iphonesimulator/xxxPushExtension.appex' to '/Users/edy/Desktop/xxxproject/build/ios/Debug-iphonesimulator/Runner.app/PlugIns/xxxPushExtension.appex'\n\n![issue-2 cycle inside runner](https://image.xinwei.ltd/image1739419782879.png)\n\n\n### 问题3（可能会遇到这样的问题，我也是在这个过程中碰到过）:\n> RuntimeError - `PBXGroup` attempted to initialize an object with unknown ISA `PBXFileSystemSynchronizedRootGroup`\n\n这个问题需要删除掉Notification Service Extension，然后重新新建.\n\n\n\n## 三、步骤：\n### 3.1 给iOS工程添加Notification Service Extension\n添加Notification Service Extension\n![add Notification Service Extension](https://image.xinwei.ltd/image1739418168922.png)\n\n![choose Notification Service Extension](https://image.xinwei.ltd/image1739418252399.png)\n\n添加完之后的状态folder结构\n![](https://image.xinwei.ltd/image1739418361790.png)\n\n### 3.2 编译flutter运行，出现报错：\n```run flutter error\nLaunching lib/main.dart on iPhone SE (3rd generation) in debug mode...\nUpdating project for Xcode compatibility.\nUpgrading project.pbxproj\nUpgrading Runner.xcscheme\nRunning pod install...\nCocoaPods' output:\n↳\n      Preparing\n\n    Analyzing dependencies\n\n    Inspecting targets to integrate\n      CDN: trunk Relative path: CocoaPods-version.yml exists! Returning local because checking is only performed in repo update\n\n    ――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\n\n    ### Command\n\n    ```\n    /Users/edy/.rvm/rubies/ruby-3.3.5/bin/pod install --verbose\n    ```\n\n    ### Report\n\n    * What did you do?\n\n    * What did you expect to happen?\n\n    * What happened instead?\n\n\n    ### Stack\n\n    ```\n       CocoaPods : 1.15.2\n            Ruby : ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23]\n        RubyGems : 3.5.16\n            Host : macOS 14.6.1 (23G93)\n           Xcode : 16.2 (16C5032a)\n             Git : git version 2.39.5 (Apple Git-154)\n    Ruby lib dir : /Users/edy/.rvm/rubies/ruby-3.3.5/lib\n    Repositories : cocoapods - git - https://github.com/CocoaPods/Specs.git @ 3574d4d220177427a4fa77c221b01e55996aa84d\n\n                   trunk - CDN - https://cdn.cocoapods.org/\n    ```\n\n    ### Plugins\n\n    ```\n    cocoapods-deintegrate : 1.0.5\n    cocoapods-plugins     : 1.0.0\n    cocoapods-search      : 1.0.1\n    cocoapods-trunk       : 1.6.0\n    cocoapods-try         : 1.2.0\n    ```\n\n    ### Podfile\n\n    ```ruby\n    # Uncomment this line to define a global platform for your project\n    platform :ios, '13.0'\n\n    # CocoaPods analytics sends network stats synchronously affecting flutter build latency.\n    ENV['COCOAPODS_DISABLE_STATS'] = 'true'\n\n    project 'Runner', {\n      'Debug' => :debug,\n      'Profile' => :release,\n      'Release' => :release,\n    }\n\n    def flutter_root\n      generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__)\n      unless File.exist?(generated_xcode_build_settings_path)\n        raise \"#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first\"\n      end\n\n      File.foreach(generated_xcode_build_settings_path) do |line|\n        matches = line.match(/FLUTTER_ROOT\\=(.*)/)\n        return matches[1].strip if matches\n      end\n      raise \"FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get\"\n    end\n\n    require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root)\n\n    flutter_ios_podfile_setup\n\n    target 'Runner' do\n      use_frameworks!\n      use_modular_headers!\n\n      pod 'KeychainAccess'\n      pod 'FBAudienceNetwork','= 6.15.0'\n\n      flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))\n      target 'RunnerTests' do\n        inherit! :search_paths\n      end\n    end\n\n    post_install do |installer|\n      installer.pods_project.targets.each do |target|\n        flutter_additional_ios_build_settings(target)\n        target.build_configurations.each do |config|\n          config.build_settings['SWIFT_VERSION'] = '5.0'  # required by simple_permission\n          config.build_settings['ENABLE_BITCODE'] = 'NO'\n        end\n      end\n    end\n    ```\n\n    ### Error\n\n    ```\n    RuntimeError - `PBXGroup` attempted to initialize an object with unknown ISA `PBXFileSystemSynchronizedRootGroup` from attributes: `{\"isa\"=>\"PBXFileSystemSynchronizedRootGroup\", \"exceptions\"=>[\"0453440D2D5DA235003E9BF2\"], \"explicitFileTypes\"=>{}, \"explicitFolders\"=>[], \"path\"=>\"xxxPushExtension\", \"sourceTree\"=>\"\u003Cgroup>\"}`\n    If this ISA was generated by Xcode please file an issue: https://github.com/CocoaPods/Xcodeproj/issues/new\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:359:in `rescue in object_with_uuid'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:349:in `object_with_uuid'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:300:in `block (2 levels) in configure_with_plist'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:299:in `each'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:299:in `block in configure_with_plist'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:296:in `each'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:296:in `configure_with_plist'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project.rb:272:in `new_from_plist'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:350:in `object_with_uuid'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:290:in `block in configure_with_plist'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:287:in `each'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project/object.rb:287:in `configure_with_plist'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project.rb:272:in `new_from_plist'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project.rb:213:in `initialize_from_file'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/xcodeproj-1.25.1/lib/xcodeproj/project.rb:113:in `open'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/installer/analyzer.rb:1194:in `block (2 levels) in inspect_targets_to_integrate'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/installer/analyzer.rb:1193:in `each'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/installer/analyzer.rb:1193:in `block in inspect_targets_to_integrate'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/user_interface.rb:64:in `section'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/installer/analyzer.rb:1188:in `inspect_targets_to_integrate'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/installer/analyzer.rb:107:in `analyze'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/installer.rb:422:in `analyze'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/installer.rb:244:in `block in resolve_dependencies'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/user_interface.rb:64:in `section'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/installer.rb:243:in `resolve_dependencies'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/installer.rb:162:in `install!'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/command/install.rb:52:in `run'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/claide-1.1.0/lib/claide/command.rb:334:in `run'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/lib/cocoapods/command.rb:52:in `run'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/lib/ruby/gems/3.3.0/gems/cocoapods-1.15.2/bin/pod:55:in `\u003Ctop (required)>'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/bin/pod:25:in `load'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/bin/pod:25:in `\u003Cmain>'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/bin/ruby_executable_hooks:22:in `eval'\n    /Users/edy/.rvm/rubies/ruby-3.3.5/bin/ruby_executable_hooks:22:in `\u003Cmain>'\n    ```\n\n    ――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――\n\n    [!] Oh no, an error occurred.\n\n    Search for existing GitHub issues similar to yours:\n    https://github.com/CocoaPods/CocoaPods/search?q=%60PBXGroup%60+attempted+to+initialize+an+object+with+unknown+ISA+%60PBXFileSystemSynchronizedRootGroup%60+from+attributes%3A+%60%7B%22isa%22%3D%3E%22PBXFileSystemSynchronizedRootGroup%22%2C+%22exceptions%22%3D%3E%5B%220453440D2D5DA235003E9BF2%22%5D%2C+%22explicitFileTypes%22%3D%3E%7B%7D%2C+%22explicitFolders%22%3D%3E%5B%5D%2C+%22path%22%3D%3E%22xxxPushExtension%22%2C+%22sourceTree%22%3D%3E%22%3Cgroup%3E%22%7D%60%0AIf+this+ISA+was+generated+by+Xcode+please+file+an+issue%3A+https%3A%2F%2Fgithub.com%2FCocoaPods%2FXcodeproj%2Fissues%2Fnew&type=Issues\n\n    If none exists, create a ticket, with the template displayed above, on:\n    https://github.com/CocoaPods/CocoaPods/issues/new\n\n    Be sure to first read the contributing guide for details on how to properly submit a ticket:\n    https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md\n\n    Don't forget to anonymize any private data!\n\n    Looking for related issues on cocoapods/cocoapods...\n\nError output from CocoaPods:\n↳\n    Searching for inspections failed: undefined method `map' for nil\n\nError running pod install\nError launching application on iPhone SE (3rd generation).\n```\n\n### 3.3 解决pod install失败的问题\n从问题3.1的folder结构中可以看出，文件夹的icon标识不是灰色gray的，而是淡蓝色blue的icon，这个应该是Xcode的bug，需要将新建的Extension文件夹改成group。\n\n右键Extension文件夹，选择`Convert to Group`\n![convert to Group](https://image.xinwei.ltd/image1739419003315.png)\n\n这个解决方法，感谢链接：[https://github.com/CocoaPods/CocoaPods/issues/12456](https://github.com/CocoaPods/CocoaPods/issues/12456)\n![github fix](https://image.xinwei.ltd/image1739419140817.png)\n\n### 3.4 接着运行代码，遇到build的报错\n![issue-2 cycle inside runner](https://image.xinwei.ltd/image1739419782879.png)\n这个问题有点奇怪，我也查了好久，才从网上找到一个解决办法：\n- 选择主target，进入到Build Phrases的设置下\n![build phrases setting](https://image.xinwei.ltd/image1739420069053.png)\n- 将Embed Foundation Extensions这项，移动到CopyBundle Resources这项正下面.\n![move position result](https://image.xinwei.ltd/image1739420184527.png)\n- 然后运行，没有报错。\n![run success](https://image.xinwei.ltd/image1739420382663.png)\n\n参考链接：[https://stackoverflow.com/questions/77138968/handling-cycle-inside-runner-building-could-produce-unreliable-results-after-up](https://stackoverflow.com/questions/77138968/handling-cycle-inside-runner-building-could-produce-unreliable-results-after-up)\n\n## 四、添加即时通知 - time sensitive notifications\n### 4.1 设置push notification capability\n按照下面截图中的步骤，添加push notifications\n![push notifications](https://image.xinwei.ltd/image1739420598289.png)\n\n会生成entitlements文件和capability\n![push notifications result](https://image.xinwei.ltd/image1739420695587.png)\n\n### 4.2 配置ios deployment target\n因为Xcode默认会配置ios deployment target，所以我们要检查适配版本，修改为我们想要的版本.\n截图是默认的18.2，但现阶段不可能配置到这个版本。\n![default ios deployment target](https://image.xinwei.ltd/image1739420828256.png)\n修改为15.0\n![set to ios15.0](https://image.xinwei.ltd/image1739420981066.png)\n\n### 4.3 配置NotificationService方法\n配置如下：\n```NotificationService.swift\n//\n//  NotificationService.swift\n//  xxxPushExtension\n//\n//  Created by Hamry on 2/13/25.\n//\nimport UserNotifications\nimport UIKit\nimport Intents\n\nclass NotificationService: UNNotificationServiceExtension {\n\n    var contentHandler: ((UNNotificationContent) -> Void)?\n    var bestAttemptContent: UNMutableNotificationContent?\n    \n    override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {\n            self.contentHandler = contentHandler\n            bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContent)\n            \n            if let bestAttemptContent = bestAttemptContent {\n                // Modify the notification content here...\n                // 获取通信消息\n                if let options = bestAttemptContent.userInfo[\"fcm_options\"] as? [String: Any], let senderImageURLString = options[\"image\"] as? String\n                {\n                    // Here you need to download the image data from the URL.\n                    self.getMediaAttachment(for: senderImageURLString) { image in\n                        guard let groupIcon = image else {\n                            contentHandler(bestAttemptContent)\n                            return\n                        }\n                        let avatar = INImage(imageData: groupIcon.pngData()!)\n                        // 消息发送方\n                        let messageSender = INPerson(\n                            personHandle: INPersonHandle(value: nil, type: .unknown),\n                            nameComponents: try? PersonNameComponents(bestAttemptContent.title),\n                            displayName: bestAttemptContent.title,\n                            image: avatar,\n                            contactIdentifier: nil,\n                            customIdentifier: nil,\n                            isMe: false,\n                            suggestionType: .none\n                        )\n                        \n                        // 消息接收方\n                        let mePerson = INPerson(\n                            personHandle: INPersonHandle(value: \"\", type: .unknown),\n                            nameComponents: nil,\n                            displayName: nil,\n                            image: nil,\n                            contactIdentifier: nil,\n                            customIdentifier: nil,\n                            isMe: true,\n                            suggestionType: .none\n                        )\n                        \n                        let intent = INSendMessageIntent(recipients: [mePerson],\n                                                         outgoingMessageType: .outgoingMessageText,\n                                                         content: bestAttemptContent.body,\n                                                         speakableGroupName: INSpeakableString(spokenPhrase: bestAttemptContent.title),\n                                                         conversationIdentifier: nil,\n                                                         serviceName: nil,\n                                                         sender: messageSender,\n                                                         attachments: nil)\n//                        sender\n                        intent.setImage(avatar, forParameterNamed: \\.speakableGroupName)\n\n                        let interaction = INInteraction(intent: intent, response: nil)\n                        interaction.direction = .incoming\n                        interaction.donate(completion: nil)\n                        do {\n                            let messageContent = try request.content.updating(from: intent)\n                            contentHandler(messageContent)\n                        } catch {\n                            print(error.localizedDescription)\n                            contentHandler(bestAttemptContent)\n                        }\n                    }\n                }else {\n                    contentHandler(bestAttemptContent)\n                }\n            }\n        }\n    \n    override func serviceExtensionTimeWillExpire() {\n        // Called just before the extension will be terminated by the system.\n        // Use this as an opportunity to deliver your \"best attempt\" at modified content, otherwise the original push payload will be used.\n        if let contentHandler = contentHandler, let bestAttemptContent =  bestAttemptContent {\n            contentHandler(bestAttemptContent)\n        }\n    }\n\n}\n\nextension NotificationService {\n\n    //  通过本地 url 地址 获取图片资源\n    private func getMediaAttachment(for urlString: String, completion: @escaping (UIImage?) -> Void) {\n        // 1\n        guard let url = URL(string: urlString) else {\n            completion(nil)\n            return\n        }\n        \n        // 2 通过远程图片URL下载图片\n        downloadImage(forURL: url) { result in\n            // 3\n            guard let image = try? result.get() else {\n                completion(nil)\n                return\n            }\n            \n            // 4\n            completion(image)\n        }\n    }\n    \n    // 通过远程图片url地址 下载图片文件\n    public enum DownloadError: Error {\n        case emptyData\n        case invalidImage\n    }\n\n    private func downloadImage(forURL url: URL, completion: @escaping (Result\u003CUIImage, Error>) -> Void) {\n        let task = URLSession.shared.dataTask(with: url) { data, response, error in\n            if let error = error {\n                completion(.failure(error))\n                return\n            }\n            \n            guard let data = data else {\n                completion(.failure(DownloadError.emptyData))\n                return\n            }\n            \n            guard let image = UIImage(data: data) else {\n                completion(.failure(DownloadError.invalidImage))\n                return\n            }\n            \n            completion(.success(image))\n        }\n        \n        task.resume()\n    }\n}\n\n```\n\n### 4.4 运行，没有问题\n注意`NotificationService.swift`中的`INPerson`等是iOS 15.0才开始使用的特性，所以需要4.2种的ios deployment target配置。\n\n## 五、总结\n其实也反反复复遇到过其他问题，但是解决了，这里篇幅有限，暂时记录这些，希望对有的同学有帮助.\n\n","记录一下在flutter工程中添加iOS的Notification Service Extension遇到的编译以及运行问题，希望对大家有所帮助。","https://image.xinwei.ltd/image1739418777754.png",499668042977349,{"phone":15,"userId":13,"nickName":16,"vipType":17,"avatar":18,"sign":19,"createdAt":20},"13121171998","全栈老韩",1,"https://image.xinwei.ltd/images/IMG_5430.JPG","全栈工程师，擅长iOS App开发、前端（vue、react、nuxt、小程序&Taro）开发、Flutter、React Native、后端（midwayjs、golang、express、koa）开发、docker容器、seo优化等。","2024-01-01T16:14:30.305Z",2,{"id":21,"name":23},"IT技术",11,{"id":24,"name":26,"parentId":21},"Flutter",[],"",3265,0,"Notification Service Extension,flutter Notification Service Extension,unknown ISA PBXFileSystemSynchronizedRootGroup,Error output from CocoaPods"]