当应用程序在后台时,如何继续收听来自谷歌广播的事件?



我已经设置了一个通道来接收来自接收方应用程序的消息:

import Foundation
import GoogleCast
class GcastChannel: GCKCastChannel {
    var gcastDelegate: GcastDelegate?
    override func didReceiveTextMessage(_ message: String) {
        if let jsonData = message.data(using: .utf8) {
            do {
                let gcastEvent = try JSONDecoder().decode( GcastEvent.self, from: jsonData)
                gcastDelegate?.didReceiveGcastEvent(event: gcastEvent)
            } catch {
                print("message decode error: (error)")
            }
        }
    }
}

并在主视图控制器中设置会话管理器和侦听器:

func sessionManager(_ sessionManager: GCKSessionManager, didStart session: GCKCastSession) {
    castSession = session
    castSession?.add(gcastChannel)
    gcastChannel.gcastDelegate = self
}

当应用程序位于前台时,它可以完美运行,但是当应用程序在后台时,它不再响应事件。此外,当应用再次置于前台时,应用仍然对发送的事件没有响应。

如何让应用在后台时响应事件?

基于此链接,当应用程序处于后台时,无法将新媒体从应用程序推送到 chromecast。

对于 iOS 发送器 API 的 2.0 版,GCKCastSocket在收到UIApplicationDidEnterBackgroundNotification时关闭,这不是可以配置的内容。

你也可以参考这篇文章: 如何保持Chrome Cast在后台iOS中运行?.

最新更新