Замена для GCKSession.resume() в Google Cast iOS SDK 4.x?
С Google Cast iOS SDK 3.5.6 у меня была некоторая логика для обнаружения и возобновления существующего сеанса приведения в случае необходимости. Что-то вроде этого:
func connectToDevice(_ device: GCKDevice, sessionId: String?) {
var resumed = false
if let session = sessionManager.currentSession {
if session.device == device {
session.resume()
resumed = true
} else {
sessionManager.endSession()
}
}
if !resumed {
sessionManager.startSession(with: device)
}
}
GCKSession.resume()
однако не рекомендуется использовать SDK v4.0.2. Я не вижу очевидной замены, и просто игнорирование существующих сессий не вариант (см. Код ниже, как пример того, что не работает)
func connectToDevice(_ device: GCKDevice, sessionId: String?) {
if let session = sessionManager.currentSession {
sessionManager.endSession() // This doesn't help
}
DispatchQueue.main.asyncAfter(.now()+5.0) { // endSession() is asynchronous, so need to give some time
sessionManager.startSession(with: device) // This will fail in situations where 'session' isn't nil
}
}
Как мы должны справиться с этой ситуацией с SDK v4.x?
1 ответ
Да, вы правы. GCKSession.resume() устарела с SDK v4.0.2, и теперь сеанс имеет только запуск и остановку; По умолчанию SDK работает с резюме внутри страны.
В v4.0.2 я бы порекомендовал вам оставить возобновившиеся сеансы менеджеру сеансов и посмотреть, сможет ли он выполнять вашу работу или нет.