You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS NotificationServiceExtension中'sharedApplication'不可用问题求助

解决App Extension中sharedApplication不可用及第三方插件报错问题

问题分析

你添加NotificationServiceExtension后,错误让Extension目标继承了主App的所有Pod依赖,且关闭"Require Only App-Extension Safe API"试图绕过检查——但Extension环境本身不允许调用UIApplication.sharedApplication这类API,第三方插件大多未做Extension适配,导致报错。

解决方案

  1. 修正Podfile配置,避免Extension继承主App依赖
    默认空的target 'NotificationServiceExtension' do end会继承主target的所有Pods,这是核心问题。修改Podfile,让Extension只继承搜索路径,不继承主App的依赖:
target '你的主App目标名' do
  # 主App的所有依赖,比如share_plus等
  pod 'share_plus'
  # 其他插件...
end

target 'NotificationServiceExtension' do
  inherit! :search_paths # 仅继承搜索路径,不继承主target的Pods
  # 这里只添加Extension真正需要的、支持App Extension的依赖(通常不需要第三方插件)
end
  1. 保持"Require Only App-Extension Safe API"为YES
    关闭这个开关只是暂时屏蔽编译检查,运行时依然会因为调用Extension不支持的API崩溃,必须保持该选项为YES,从根源上避免非安全API调用。

  2. 适配报错的第三方插件

  • 优先升级到支持App Extension的版本(比如你升级share_plus解决了问题)。
  • 如果插件无适配版本,需修改插件iOS代码,用条件编译屏蔽Extension环境下的非安全API调用:
    #if !TARGET_IS_EXTENSION
    // 包含UIApplication.sharedApplication的代码块
    #endif
    
    若是Flutter插件,可在插件的iOS实现中添加上述宏判断,确保Extension环境不执行相关代码。
  1. 清理缓存重新构建
    修改Podfile后执行:
pod install --repo-update

然后在Xcode中按Cmd+Shift+K清理缓存,重新构建项目。

内容的提问来源于stack exchange,提问作者Nijat Naghiyev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:31:01