Einrichten von 1:1-Anrufen und Pushbenachrichtigungen in der UI-Bibliothek
Die UI-Bibliothek bietet sofortige Unterstützung für Einzelanrufe über die Teilnehmeridentifikatoren von Azure Communication Services. Zur Unterstützung von 1:1-Anrufen stellt die UI-Bibliothek Benachrichtigungen zu eingehenden Anrufen bereit. Sie können Azure Communication Services auch als Azure Event Grid-Ereignisquelle für Anrufe verwenden.
In diesem Artikel erfahren Sie, wie Sie 1:1-Anrufe mithilfe der UI-Bibliothek in Ihrer Anwendung ordnungsgemäß einrichten.
Voraussetzungen
- Ein Azure-Konto mit einem aktiven Abonnement. Sie können kostenlos ein Konto erstellen.
- Eine bereitgestellte Communication Services-Ressource. Erstellen Sie eine Communication Services-Ressource.
- Ein Benutzerzugriffstoken zum Aktivieren des Anrufclients. Rufen Sie ein Benutzerzugriffstoken ab.
- Optional: Führen Sie den Schnellstart Erste Schritte mit der UI-Bibliothek durch.
Einrichten der Features
Weitere Informationen finden Sie in der Open Source Android UI Library und im Beispielanwendungscode.
Einrichten von Berechtigungen für Pushbenachrichtigungen
Zum Einrichten von Pushbenachrichtigungen benötigen Sie ein Firebase-Konto mit aktiviertem Firebase Cloud Messaging (FCM). Ihr FCM-Dienst muss mit einer Azure Notification Hubs-Instanz verbunden sein. Weitere Informationen finden Sie unter Communication Services-Benachrichtigungen. Sie müssen auch Android Studio, Version 3.6 oder höher, verwenden, um Ihre Anwendung zu erstellen.
Damit die Android-Anwendung Benachrichtigungen von FCM empfangen kann, benötigt sie eine Reihe von Berechtigungen. Fügen Sie in Ihrer AndroidManifest.xml
-Datei direkt nach dem Tag <manifest ...>
oder </application>
den folgenden Berechtigungssatz hinzu.
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
Hinzufügen von eingehenden Benachrichtigungen an Ihre mobile App
Azure Communication Services ist mit Azure Event Grid und Azure Notification Hubs integriert, sodass Sie Ihren Apps in Azure Pushbenachrichtigungen hinzufügen können.
Registrieren/Aufheben der Registrierung für Notification Hub-Pushbenachrichtigungen
Um sich für Pushbenachrichtigungen zu registrieren, muss die Anwendung registerPushNotification()
für eine CallComposite
-Instanz mit einem Geräteregistrierungstoken aufrufen.
Um das Geräteregistrierungstoken abzurufen, fügen Sie das Firebase-SDK zur build.gradle
-Instanz Ihres Anwendungsmoduls hinzu. Um Benachrichtigungen von Firebase zu erhalten, integrieren Sie Azure Notification Hub gemäß den Anweisungen in Communication Services-Benachrichtigungen.
val deviceRegistrationToken = "" // From Firebase
callComposite.registerPushNotification(deviceRegistrationToken).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Behandeln von Pushbenachrichtigungen, die von Event Grid oder Notification Hub empfangen werden
Rufen Sie handlePushNotification
für eine CallComposite
-Instanz mit einer Payload auf, um Pushbenachrichtigungen für eingehende Anrufe zu erhalten.
Um die Payload von FCM abzurufen, erstellen Sie zunächst einen neuen Dienst (Datei>Neu>Dienst>Dienst), der die Firebase-SDK-Klasse FirebaseMessagingService
erweitert und die onMessageReceived
-Methode überschreibt. Diese Methode ist der Ereignishandler, der aufgerufen wird, wenn FCM die Pushbenachrichtigung an die Anwendung übermittelt.
// On Firebase onMessageReceived
val pushNotification = CallCompositePushNotification(remoteMessage.data)
callComposite.handlePushNotification(pushNotification).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Registrieren für Benachrichtigungen zu eingehenden Anrufen
Um Benachrichtigungen zu eingehenden Anrufen nach handlePushNotification
zu empfangen, abonnieren Sie CallCompositeIncomingCallEvent
und CallCompositeIncomingCallCancelledEvent
. CallCompositeIncomingCallEvent
enthält die ID des eingehenden Anrufs und Anruferinformationen. CallCompositeIncomingCallCancelledEvent
enthält die Anruf-ID und den Anrufabbruchcode (Problembehandlung in Azure Communication Services).
private var incomingCallEvent: IncomingCallEvent? = null
private var incomingCallCancelledEvent: IncomingCallCancelledEvent? = null
class IncomingCallEvent : CallCompositeEventHandler<CallCompositeIncomingCallEvent> {
override fun handle(eventArgs: CallCompositeIncomingCallEvent?) {
// Display incoming call UI to accept/decline a call
// CallCompositeIncomingCallEvent contains call id and caller information
}
}
class IncomingCallCancelledEvent : CallCompositeEventHandler<CallCompositeIncomingCallCancelledEvent> {
override fun handle(eventArgs: CallCompositeIncomingCallCancelledEvent?) {
// Call-ended event when a call is declined or not accepted
}
}
// Event subscription
incomingCallEvent = IncomingCallEvent()
callComposite.addOnIncomingCallEventHandler(incomingCallEvent)
incomingCallCancelledEvent = IncomingCallCancelledEvent()
callComposite.addOnIncomingCallCancelledEventHandler(incomingCallEndEvent)
// Event unsubscribe
callComposite.removeOnIncomingCallEventHandler(incomingCallEvent)
callComposite.removeOnIncomingCallCancelledEventHandler(incomingCallEndEvent)
Behandeln von Anrufen
Um Anrufe anzunehmen, rufen Sie accept
auf. Um Anrufe abzulehnen, rufen Sie reject
auf.
// Accept call
callComposite.accept(applicationContext, incomingCallId, localOptions)
// Decline call
callComposite.reject(incomingCallId)
Andere Teilnehmer anrufen
Um einen Anruf mit anderen Teilnehmern zu beginnen, erstellen Sie CallCompositeStartCallOptions
mit den unformatierten IDs der Teilnehmer aus CommunicationIdentity
und launch
.
Weitere Informationen finden Sie in der Open-Source-iOS-UI-Bibliothek und im Beispielanwendungscode.
Pushbenachrichtigungen einrichten
Eine mobile Pushbenachrichtigung ist die Popupbenachrichtigung, die Sie auf dem mobilen Gerät erhalten. Der Schwerpunkt dieses Artikels liegt auf VoIP-Pushbenachrichtigungen (Voice over Internet Protocol).
In den folgenden Abschnitten erfahren Sie, wie Sie sich für Pushbenachrichtigungen registrieren, sie behandeln und die Registrierung für sie aufheben. Bevor Sie mit diesen Aufgaben beginnen, sind jedoch folgende Schritte erforderlich:
- Navigieren Sie in Xcode zur Registerkarte Signing & Capabilities (Signieren und Funktionen). Fügen Sie eine Funktion hinzu, indem Sie + Capability (+ Funktion) und anschließend Push Notifications (Pushbenachrichtigungen) auswählen.
- Fügen Sie eine weitere Funktion hinzu, indem Sie + Capability (+ Funktion) und anschließend Background Modes (Hintergrundmodi) auswählen.
- Aktivieren Sie unter Background Modes (Hintergrundmodi) die Kontrollkästchen Voice over IP und Remote notifications (Remotebenachrichtigungen) aus.
Hinzufügen von eingehenden Benachrichtigungen an Ihre mobile App
Azure Communication Services ist mit Azure Event Grid und Azure Notification Hubs integriert, sodass Sie Ihren Apps in Azure Pushbenachrichtigungen hinzufügen können.
Registrieren/Aufheben der Registrierung für Notification Hub-Pushbenachrichtigungen
Um sich für Pushbenachrichtigungen zu registrieren, muss die Anwendung registerPushNotifications()
für eine CallComposite
-Instanz mit einem Geräteregistrierungstoken aufrufen.
// to register
let deviceToken: Data = pushRegistry?.pushToken(for: PKPushType.voIP)
callComposite.registerPushNotifications(
deviceRegistrationToken: deviceToken) { result in
switch result {
case .success:
// success
case .failure(let error):
// failure
}
}
// to unregister
callComposite.unregisterPushNotification()
Behandeln von Pushbenachrichtigungen, die von Event Grid oder Notification Hub empfangen werden
Rufen Sie handlePushNotification()
für eine CallComposite
-Instanz mit Wörterbuchnutzdaten auf, um Pushbenachrichtigungen für eingehende Anrufe zu erhalten.
Wenn Sie handlePushNotification()
verwenden und CallKit-Optionen festgelegt wurden, erhalten Sie eine CallKit-Benachrichtigung, um Anrufe anzunehmen oder abzulehnen.
// App is in the background
// push notification contains from/to communication identifiers and event type
let pushNotification = PushNotification(data: payload.dictionaryPayload)
let callKitOptions = CallKitOptions(...//CallKit options)
CallComposite.reportIncomingCall(pushNotification: pushNotification,
callKitOptions: callKitOptions) { result in
if case .success() = result {
DispatchQueue.global().async {
// You don't need to wait for a Communication Services token to handle the push because
// Communication Services common receives a callback function to get the token with refresh options
// create call composite and handle push notification
callComposite.handlePushNotification(pushNotification: pushNotification)
}
}
}
// App is in the foreground
let pushNotification = PushNotification(data: dictionaryPayload)
callComposite.handlePushNotification(pushNotification: pushNotification) { result in
switch result {
case .success:
// success
case .failure(let error):
// failure
}
}
Registrieren für Benachrichtigungen zu eingehenden Anrufen bei Handle-Push
Um Benachrichtigungen zu eingehenden Anrufen nach handlePushNotification
zu empfangen, abonnieren Sie onIncomingCall
und onIncomingCallCancelled
. IncomingCall
enthält die ID des eingehenden Anrufs und Anruferinformationen. IncomingCallCancelled
enthält die Anruf-ID und den Anrufabbruchcode (Problembehandlung in Azure Communication Services).
let onIncomingCall: (IncomingCall) -> Void = { [] incomingCall in
// Incoming call id and caller info
}
let onIncomingCallEnded: (IncomingCallCancelled) -> Void = { [] incomingCallCancelled in
// Incoming call cancelled code with callId
}
callComposite.events.onIncomingCall = onIncomingCall
callComposite.events.onIncomingCallEnded = onIncomingCallEnded
Deaktivieren des internen Pushs für eingehende Anrufe
Damit nur Pushbenachrichtigungen von EventGrid
und APNS
empfangen werden, legen Sie disableInternalPushForIncomingCall
in CallCompositeOptions
auf „true“ fest. Wenn disableInternalPushForIncomingCall
„true“ ist, wird das Pushbenachrichtigungsereignis aus der UI-Bibliothek nur empfangen, wenn handlePushNotification
aufgerufen wird. Die Option disableInternalPushForIncomingCall
hilft, den Empfang von Benachrichtigungen von CallComposite
im Vordergrundmodus zu beenden. Diese Einstellung steuert nicht die Einstellungen für EventGrid
und NotificationHub
.
let options = CallCompositeOptions(disableInternalPushForIncomingCall: true)
Verbund für eingehende Anrufe starten, die vom Calling-SDK-CallKit akzeptiert werden
Das Azure Communication Services Calling iOS-SDK unterstützt die CallKit-Integration. Sie können diese Integration in der UI-Bibliothek aktivieren, indem Sie eine Instanz von CallCompositeCallKitOption
konfigurieren. Weitere Informationen finden Sie in den Artikeln zur Integration mit CallKit.
Abonnieren Sie onIncomingCallAcceptedFromCallKit
, wenn CallKit über das Calling-SDK aktiviert ist. Starten Sie bei Annahme des Anrufs callComposite
mit Anruf-ID.
let onIncomingCallAcceptedFromCallKit: (callId) -> Void = { [] callId in
// Incoming call accepted call id
}
callComposite.events.onIncomingCallAcceptedFromCallKit = onIncomingCallAcceptedFromCallKit
// launch composite with/without local options
// Note: as call is already accepted, setup screen will not be displayed
callComposite.launch(callIdAcceptedFromCallKit: callId)
Behandeln von Anrufen mit CallComposite
Um Anrufe anzunehmen, rufen Sie accept
auf. Um Anrufe abzulehnen, rufen Sie reject
auf.
// Accept call
callComposite.accept(incomingCallId,
... // CallKit and local options
)
// Decline call
callComposite.reject(incomingCallId)
Andere Teilnehmer anrufen
Um einen Anruf mit anderen Teilnehmern zu beginnen, starten Sie callComposite
mit einer Teilnehmerliste von CommunicationIdentifier
.
// [CommunicationIdentifier]
// use createCommunicationIdentifier(fromRawId: "raw id")
callComposite.launch(participants: <list of CommunicationIdentifier>,
localOptions: localOptions)