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

BroadcastUploadExtension:broadcastStarted正常但broadcastFinished未调用求助

解决BroadcastUploadExtension中broadcastFinished()未触发的问题

以下是针对该问题的排查和解决步骤:

1. 修正UserDefaults跨进程访问逻辑

主App与BroadcastUploadExtension属于不同进程,默认UserDefaults相互隔离,若用它验证方法是否被调用,必须通过App Groups实现数据共享:

  • 在开发者后台为App ID开启App Groups权限,创建统一的组ID(如group.com.yourcompany.yourapp)
  • 在主App和Extension的Info.plist中添加AppGroups键,值为创建的组ID
  • 在SampleHandler中使用组ID初始化共享UserDefaults:
    override func broadcastFinished() {
        let sharedDefaults = UserDefaults(suiteName: "group.com.yourcompany.yourapp")
        sharedDefaults?.set(true, forKey: "broadcastFinished")
        sharedDefaults?.synchronize()
        finishBroadcastWithError(nil)
    }
    
  • 主App读取时同样使用该组ID的UserDefaults,避免因进程隔离导致误判。

2. 确保SampleHandler方法实现规范

检查SampleHandler的代码实现,确认:

  • 正确重写broadcastFinished()方法,无拼写错误(如大小写、方法名偏差)
  • 方法末尾必须调用finishBroadcastWithError(nil),告知系统广播流程已完成,这是触发完整回调链路的必要操作:
    class SampleHandler: RPBroadcastSampleHandler {
        // ...其他业务方法...
        
        override func broadcastFinished() {
            // 执行清理逻辑(如释放录制资源、停止数据上传)
            finishBroadcastWithError(nil)
        }
    }
    

3. 调整模拟点击Picker的方式

直接调用按钮sendActions(for: .touchUpInside)可能跳过Picker内部初始化流程,导致后续回调链路异常:

  • 延迟触发点击操作,确保Picker完成布局与初始化:
    self.window.rootViewController?.view.addSubview(picker)
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
        if let button = picker.subviews.first(where: { $0 is UIButton }) as? UIButton {
            button.sendActions(for: .touchUpInside)
        }
    }
    
  • 苹果不推荐依赖Picker的私有视图结构,若业务允许,优先引导用户手动点击Picker启动录屏。

4. 检查Extension配置与签名

  • 确认BroadcastUploadExtension的Info.plist配置正确:
    • NSExtension -> NSExtensionPointIdentifier 值为 com.apple.broadcast-services
    • NSExtension -> NSExtensionPrincipalClass 值为SampleHandler的完整类名(如$(PRODUCT_MODULE_NAME).SampleHandler)
  • 确认主App与Extension使用相同团队ID签名,且App Groups权限已正确配置到签名中。

内容的提问来源于stack exchange,提问作者Ertürk Alan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 04:31:28