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

如何检测iOS Sender应用中用户对活动音轨的设置变更?

解决方案

不需要自定义音轨选择视图控制器,你可以通过对比前后的活动音轨状态来检测变化,具体步骤如下:

  • 在你的代理类中添加一个属性,用于保存上一次的活动音轨ID集合:

    private var lastActiveTrackIDs: Set<String>?
    
  • 在mediaController(_:didUpdate)方法中,获取当前的活动音轨ID集合,与上次保存的集合对比,判断是否发生变更:

    func mediaController(_ mediaController: GCKMediaController, didUpdate mediaStatus: GCKMediaStatus?) {
        guard let currentActiveTrackIDs = mediaStatus?.activeTrackIDs else { return }
        
        // 首次初始化或音轨状态变更时执行逻辑
        if lastActiveTrackIDs != currentActiveTrackIDs {
            // 这里处理活动音轨变更后的业务逻辑
            print("活动音轨已更新: \(currentActiveTrackIDs)")
            
            // 更新保存的历史音轨ID集合
            lastActiveTrackIDs = currentActiveTrackIDs
        }
    }
    

说明

GCKMediaStatus的activeTrackIDs是Set类型,直接对比集合是否相等可以准确检测出音轨的添加、移除或切换操作。这个方案完全基于你已有的GCKMediaController代理实现,不需要额外引入GCKMediaTracksViewController或自定义视图控制器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:01:36