Я столкнулся с этой проблемой в iOS 13, где не вызывались уведомления MPVolumeViewWirelessRoutesAvailableDidChangeNotification и AVRouteDetectorMultipleRoutesDetectedDidChangeNotification. В предыдущем iOS отлично работает.
Я хочу переключиться между двумя представлениями, чтобы выбрать выходной маршрут на основе доступных выходных маршрутов:
- Один вид (кнопка) изменит выход между iPhone или громкоговорителем, если его нет ' t любые внешние подключенные устройства.
- Вторым видом является AVRoutePickerView, если к нему подключено какое-либо внешнее устройство (также протестировано с MPVolumeView).
Поэтому мне нужно уведомление о доступных маршрутах, чтобы скрыть одно или другой, но, как я уже сказал, запуск в iOS13 не работает.
Пример кода:
//AVRoutePickerView & AVRouteDetector init (in viewDidAppear)
self.avRoutePickerView = [AVRoutePickerView.alloc initWithFrame:self.enableDisableSpeaker.bounds];
[self.volumeContainerView addSubview:self.avRoutePickerView];
self.avRouteDetector = AVRouteDetector.alloc.init;
self.avRouteDetector.routeDetectionEnabled = YES;
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(didWirelessRoutesAvailableChange:) name:AVRouteDetectorMultipleRoutesDetectedDidChangeNotification object:nil];
self.volumeContainerView.hidden = !self.avRouteDetector.multipleRoutesDetected;
self.enableDisableSpeaker.hidden = self.avRouteDetector.multipleRoutesDetected;
- (void) didWirelessRoutesAvailableChange:(NSNotification *)notification {
dispatch_async(dispatch_get_main_queue(), ^{
AVRouteDetector* avRouteDetector = (AVRouteDetector*)notification.object;
NSLog(@"didWirelessRoutesAvailableChange wirelessRoutesAvailableChange: %d", avRouteDetector.multipleRoutesDetected);
if (avRouteDetector.multipleRoutesDetected) {
self.volumeContainerView.hidden = NO;
self.enableDisableSpeaker.hidden = YES;
} else {
self.enableDisableSpeaker.hidden = NO;
self.volumeContainerView.hidden = YES;
}
});
}
Дайте мне знать, если кому-то нужна дополнительная информация и заранее спасибо!