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

iOS 18.0中Shared Extension无法通过URL打开主应用

iOS 18 中 Share Extension 无法通过 URL Scheme 打开主应用的解决方案

问题根源

iOS 18 强化了沙盒隔离机制,封堵了通过响应链(responder chain)获取UIApplication的非常规方式——Share Extension 作为独立沙盒组件,原本就不允许直接访问主应用的UIApplication实例,iOS 17 中该 hack 方式侥幸生效,但 iOS 18 彻底禁止了这类操作。

正确实现方案

使用NSExtensionContext提供的官方方法open(_:options:completionHandler:),这是 Extension 与主应用交互的合规途径,修改后的代码如下:

private func openMainApp() {
    guard let url = URL(string: "AppName://") else {
        print("无效的 URL Scheme")
        close()
        return
    }
    
    // 通过 Extension 上下文打开主应用
    extensionContext?.open(url, options: [:]) { [weak self] success in
        success ? print("RUN : APP") : print("NOT RUN : APP")
        self?.close()
    }
}

必要检查项

  • 确认主应用Info.plist中CFBundleURLSchemes已正确配置你的自定义 Scheme(替换代码中的AppName)。
  • 检查 Share Extension 的Info.plist中NSExtensionActivationRule配置正确,保证 Extension 能被正常触发。
  • 确保主应用未在Info.plist中添加限制 URL Scheme 调用的新配置项(iOS 18 新增的沙盒相关限制)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:20:01