Audioausgabe für Anrufe (iOS)
Um eine nahtlose Umschaltung der Audioausgabe innerhalb Ihrer Application zu ermöglichen, sollten Sie das leistungsstarke CallKit-Framework von Apple integrieren. CallKit ermöglicht es Ihrer Application, Anrufdienste effizient zu verwalten und sorgt so für ein reibungsloses Benutzererlebnis. Weitere Informationen finden Sie in der offiziellen Dokumentation von Apple zu CallKit. hier.
CallKit integrieren
Umfassende Anleitungen zur Integration von CallKit in Ihr Projekt und zur optimalen Nutzung seines Potenzials finden Sie unter Push-Benachrichtigungen.
Aktuelle Audioausgangswege
Um die derzeit verfügbaren Audioausgangsquellen abzurufen, können Sie Folgendes verwenden: AVAudioSession's currentRoute.outputs Eigenschaft. Dadurch erhalten Sie eine Liste aller derzeit verfügbaren Ausgabequellen.
let outputs = AVAudioSession.sharedInstance().currentRoute.outputs
outputs.forEach { audioSource in
switch audioSource.portType {
case .headphones:
print("headphones are used")
case .bluetoothA2DP:
print("Bluetooth audio is connected")
case .builtInSpeaker:
print("speaker is used")
case .builtInReceiver:
print("earpiece is used")
default:
print("other output: \(audioSource.portType.rawValue)")
}
}
Sie können die Audioausgabequelle auch mithilfe des folgenden Codeausschnitts überschreiben:
// highlight-next-line
AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker)
Wir empfehlen, das Festlegen oder Überschreiben von Audioeinstellungen über CallKit für ein besseres Erlebnis.
Beobachtung von Änderungen bei der Audioausgabe
Sie können sich bei der AVAudioSession.routeChangeNotification Benachrichtigung, um Änderungen an der Audioausgabe zu beobachten. So geht’s:
var cancelable: AnyCancellable?
func observeAudioRouteChanges() {
self.cancelable = NotificationCenter.default.publisher(for: AVAudioSession.routeChangeNotification).sink { notification in
/// process notification's user Info, to get audio change information
}
}
func removeAudioRouteChangesObserver() {
cancelable?.cancel()
}