Замена для 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 я бы порекомендовал вам оставить возобновившиеся сеансы менеджеру сеансов и посмотреть, сможет ли он выполнять вашу работу или нет.

Другие вопросы по тегам