You need to enable JavaScript to run this app. Swift iOS应用中如何检测Chromecast媒体的播放/暂停状态?
优惠活动
大模型
产品
解决方案
定价
更多

Swift iOS应用中如何检测Chromecast媒体的播放/暂停状态?

Swift 场景下 Chromecast 远程媒体客户端播放状态判断方法

核心实现逻辑

Chromecast SDK 本身就提供了可直接读取的播放状态属性,完全不需要自己在调用play()/pause()方法时手动维护本地状态标记。等效于 AVPlayer 中timeControlStatus的判断入口,藏在remoteMediaClient实例的mediaStatus嵌套属性里:

  • 当mediaStatus.playerState为GCKMediaPlayerState.playing时,代表媒体正处于正在播放状态
  • 当mediaStatus.playerState为GCKMediaPlayerState.paused时,代表媒体正处于暂停状态
    其余枚举值(如idle、buffering、loading等)代表媒体处于非播放/暂停的其他过渡、闲置状态。

代码示例

guard let remoteMediaClient = GCKCastContext.sharedInstance().sessionManager.currentSession?.remoteMediaClient,
      let currentMediaStatus = remoteMediaClient.mediaStatus else {
    // 无有效投射会话、未加载媒体时的兜底逻辑
    return
}

switch currentMediaStatus.playerState {
case .playing:
    // 正在播放的处理逻辑
case .paused:
    // 暂停状态的处理逻辑
default:
    // 缓冲、加载、闲置等其他状态的处理逻辑
}

关键注意事项

  • 该属性的层级比 AVPlayer 直接暴露的timeControlStatus要深一层,需要穿过mediaStatus中间对象才能访问,很多人查SDK文档时很容易忽略这个路径
  • 不要在本地调用完play()/pause()方法后立刻读取playerState做判断,因为远端接收器的状态反馈存在网络延迟,此时读取到的可能是未更新的旧状态
  • 需要实时同步播放状态时,可通过实现GCKRemoteMediaClientListener协议的remoteMediaClientDidUpdateMediaStatus(_:)回调,在SDK收到远端最新状态推送时再读取playerState值,即可保证本地获取的状态和远端播放器实际状态完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.31 14:54:06