MPVolumeViewWirelessRoutesAvailableDidChangeNotification и AVRouteDetectorMultipleRoutesDetectedDidChangeNotification не запускаются в iOS13 - PullRequest
0 голосов
/ 09 января 2020

Я столкнулся с этой проблемой в 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;
    }
});
}

Дайте мне знать, если кому-то нужна дополнительная информация и заранее спасибо!

...