Проверьте, подключены ли наушники или отсоединены от фона - PullRequest
0 голосов
/ 16 февраля 2019

Я пытаюсь вызвать уведомление, когда наушники подключены или отключены.У меня это работает так, что если я подключу или отключу наушники, а затем закрою приложение, появится уведомление.Однако мне нужно, чтобы приложение делало это в фоновом режиме.

Примечание. Код, который я пишу, относится только к наушникам для тестирования, но приложение будет использоваться для определения, когда пользователь входит или выходитих машины.Я считаю, что я могу проверить на CarAudio вместо наушников.В целях тестирования проще подключить и отключить наушники.

func activateHeadPhonesStatus(){       
        NotificationCenter.default.addObserver(self, selector: #selector(self.audioRouteChangeListener(_:)), name: AVAudioSession.routeChangeNotification, object: AVAudioSession.sharedInstance())
    }

@objc func audioRouteChangeListener(_ notification:Notification) {
    guard let userInfo = notification.userInfo,
        let reasonValue = userInfo[AVAudioSessionRouteChangeReasonKey] as? UInt,
        let reason = AVAudioSession.RouteChangeReason(rawValue:reasonValue) else {
            return
    }

    switch reason {
    case .newDeviceAvailable:
        print("headphone plugged in")
        DispatchQueue.main.async {
            self.createNotification()
        }
    case .oldDeviceUnavailable:
        print("headphone unplugged")
        DispatchQueue.main.async {
            self.createNotification()
        }

    default: ()
    }

}

У меня установлен фоновый режим в разделе Возможности для аудио.

Я тщательно проверил переполнение стека, но не могу найтиНедавние примеры использования Swift.Я также посмотрел на https://developer.apple.com/library/archive/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/HandlingAudioHardwareRouteChanges/HandlingAudioHardwareRouteChanges.html, но здесь не детально описано, как использовать его в фоновом режиме.

Мне нужно приложение, чтобы можно было поднять трубку, когда пользователь подключается к машине ииз того, что я прочитал, единственный способ сделать это через AV Audio.Я полагаю, что это возможно из того, что я прочитал до сих пор, и это похоже на реализацию Apple, не беспокоить во время вождения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...