Как AVPlayer / AVPlayerItem информирует мое приложение о недоступном сбое сети?

Я используюAVPlayer реализовать пользовательский видеоплеер в приложении для iOS. Для воспроизведения видео из сети я выделяю плеер:

[[AVPlayer alloc] initWithURL:_URL];

Создать актив:

AVURLAsset *asset = [AVURLAsset URLAssetWithURL:self.URL
options:@{AVURLAssetPreferPreciseDurationAndTimingKey : @(YES)}];

загрузитьplayable ключ асинхронно:

NSArray *keys = @[@"playable"];
[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^{
    dispatch_async(dispatch_get_main_queue(), ^{
        for (NSString *key in keys) {
            NSError *error;
            AVKeyValueStatus status = [asset statusOfValueForKey:key error:&error];

            if (status == AVKeyValueStatusFailed) {
                NSLog(@"Failed to load asset key %@ error %@", key, [error localizedDescription]);
                [self fail];
                return;
            }
        }

        if (asset.isPlayable) {
            [self.player replaceCurrentItemWithPlayerItem:self.playerItem];
        }
        else {
            [self fail];
        }
    });
}];

Проблема заключается в том, что, когда устройство не подключено к Интернету или не имеет большой потери пакетов,completionHandler никогда не вызывается (даже после ожидания в течение нескольких минут), и поэтому я понятия не имею, когда показать пользователю сообщение о том, что загрузка видео не удалась.

Мои вопросы:

Я что-то упустил / есть ли лучший способ справиться с этим?Должен ли я бросить свою собственную логику тайм-аута или я просто никогдаloadValuesAsynchronouslyForKeys: когдаReachability считает, что сеть недоступна.Каковы лучшие практики в отношенииAVPlayer а сбои сети?

Ответы на вопрос(3)

Ваш ответ на вопрос