Я пытаюсь вызвать уведомление, когда наушники подключены или отключены.У меня это работает так, что если я подключу или отключу наушники, а затем закрою приложение, появится уведомление.Однако мне нужно, чтобы приложение делало это в фоновом режиме.
Примечание. Код, который я пишу, относится только к наушникам для тестирования, но приложение будет использоваться для определения, когда пользователь входит или выходитих машины.Я считаю, что я могу проверить на 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, не беспокоить во время вождения.