Konfigurera ett-till-en-samtal och push-meddelanden i användargränssnittsbiblioteket
Användargränssnittsbiblioteket tillhandahåller out-of-the-box-stöd för att göra en-till-en-anrop med hjälp av Azure Communication Services-deltagaridentifierare. För att stödja ett-till-en-samtal tillhandahåller användargränssnittsbiblioteket inkommande samtalsaviseringar. Du kan också använda Azure Communication Services som en Azure Event Grid-händelsekälla för anrop.
I den här artikeln får du lära dig hur du gör en-till-en-anrop på rätt sätt med hjälp av användargränssnittsbiblioteket i ditt program.
Förutsättningar
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En distribuerad Communication Services-resurs. Skapa en Communication Services-resurs.
- En användaråtkomsttoken för att aktivera anropsklienten. Hämta en användaråtkomsttoken.
- Valfritt: Slutförande av snabbstarten för att komma igång med kompositerna för användargränssnittsbiblioteket.
Konfigurera funktionerna
Mer information finns i Android UI-biblioteket med öppen källkod och exempelprogramkoden.
Konfigurera behörigheter för push-meddelanden
För att konfigurera push-meddelanden behöver du ett Firebase-konto med Firebase Cloud Messaging (FCM) aktiverat. Din FCM-tjänst måste vara ansluten till en Azure Notification Hubs-instans. Mer information finns i Meddelanden om Kommunikationstjänster. Du måste också använda Android Studio version 3.6 eller senare för att skapa ditt program.
För att Android-programmet ska kunna ta emot meddelanden från FCM behöver det en uppsättning behörigheter. AndroidManifest.xml
Lägg till följande uppsättning behörigheter efter taggen <manifest ...>
eller </application>
i filen.
<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" />
Lägga till inkommande meddelanden i din mobilapp
Azure Communication Services integreras med Azure Event Grid och Azure Notification Hubs så att du kan lägga till push-meddelanden i dina appar i Azure.
Registrera/avregistrera för push-meddelanden för meddelandehubben
För att registrera sig för push-meddelanden måste programmet anropa registerPushNotification()
en CallComposite
instans med en enhetsregistreringstoken.
Om du vill hämta enhetsregistreringstoken lägger du till Firebase SDK i programmodulens build.gradle
instans. Om du vill ta emot meddelanden från Firebase integrerar du Azure Notification Hubs genom att följa anvisningarna i Communication Services-meddelanden.
val deviceRegistrationToken = "" // From Firebase
callComposite.registerPushNotification(deviceRegistrationToken).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Hantera push-meddelanden som tas emot från Event Grid eller meddelandehubben
Om du vill ta emot push-meddelanden för inkommande samtal anropar du handlePushNotification
en CallComposite
instans med en nyttolast.
Om du vill hämta nyttolasten från FCM börjar du med att skapa en ny tjänst (File>New>Service>Service) som utökar FirebaseMessagingService
Firebase SDK-klassen och åsidosätter onMessageReceived
metoden. Den här metoden är den händelsehanterare som anropade när FCM levererar push-meddelandet till programmet.
// On Firebase onMessageReceived
val pushNotification = CallCompositePushNotification(remoteMessage.data)
callComposite.handlePushNotification(pushNotification).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Registrera dig för inkommande samtalsaviseringar
Om du vill ta emot inkommande samtalsaviseringar efter handlePushNotification
prenumererar du på CallCompositeIncomingCallEvent
och CallCompositeIncomingCallCancelledEvent
. CallCompositeIncomingCallEvent
innehåller information om inkommande callId och uppringare. CallCompositeIncomingCallCancelledEvent
innehåller callId- och samtalsavbokningskoden Felsökning i 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)
Hantera anrop
Om du vill acceptera anrop ringer du ett anrop till accept
. Om du vill avvisa anrop ringer du ett anrop till reject
.
// Accept call
callComposite.accept(applicationContext, incomingCallId, localOptions)
// Decline call
callComposite.reject(incomingCallId)
Ring upp andra deltagare
Om du vill starta samtal med andra deltagare skapar CallCompositeStartCallOptions
du med deltagarnas rå-ID från CommunicationIdentity
och launch
.
Mer information finns i iOS-användargränssnittsbiblioteket med öppen källkod och exempelprogramkoden.
Konfigurera push-meddelanden
Ett mobilt push-meddelande är popup-meddelandet som du får i den mobila enheten. Den här artikeln fokuserar på voIP-push-meddelanden (Voice over Internet Protocol).
I följande avsnitt beskrivs hur du registrerar dig för, hanterar och avregistrerar push-meddelanden. Innan du påbörjar dessa uppgifter måste du slutföra följande krav:
- I Xcode går du till Signering och funktioner. Lägg till en funktion genom att välja + Kapacitet och välj sedan Push-meddelanden.
- Lägg till ytterligare en funktion genom att välja + Kapacitet och välj sedan Bakgrundslägen.
- Under Bakgrundslägen markerar du kryssrutorna Röst över IP och Fjärrmeddelanden .
Lägga till inkommande meddelanden i din mobilapp
Azure Communication Services integreras med Azure Event Grid och Azure Notification Hubs så att du kan lägga till push-meddelanden i dina appar i Azure.
Registrera/avregistrera för push-meddelanden för meddelandehubben
För att registrera sig för push-meddelanden måste programmet anropa registerPushNotifications()
en CallComposite
instans med en enhetsregistreringstoken.
// 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()
Hantera push-meddelanden som tas emot från Event Grid eller meddelandehubben
Om du vill ta emot push-meddelanden för inkommande samtal anropar handlePushNotification()
du en CallComposite
instans med en ordlistenyttolast.
När du använder handlePushNotification()
och CallKit-alternativen har angetts får du ett CallKit-meddelande för att acceptera eller avvisa samtal.
// 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
}
}
Registrera dig för inkommande samtalsaviseringar vid hanterad push-överföring
Om du vill ta emot inkommande samtalsaviseringar efter handlePushNotification
prenumererar du på onIncomingCall
och onIncomingCallCancelled
. IncomingCall
innehåller information om inkommande callId och uppringare. IncomingCallCancelled
innehåller callId- och samtalsavbokningskoden Felsökning i 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
Inaktivera intern push för inkommande samtal
Om du bara vill ta emot push-meddelanden från EventGrid
och APNS
ange disableInternalPushForIncomingCall
till true i CallCompositeOptions
. Om disableInternalPushForIncomingCall
är sant tas push-meddelandehändelsen från användargränssnittsbiblioteket endast emot när handlePushNotification
kommer att anropas. Alternativet disableInternalPushForIncomingCall
hjälper till att sluta ta emot meddelanden i CallComposite
förgrundsläge. Den här inställningen styr EventGrid
inte och NotificationHub
inställningarna.
let options = CallCompositeOptions(disableInternalPushForIncomingCall: true)
Starta sammansatt vid inkommande samtal som godkänts från att anropa SDK CallKit
Azure Communication Services Calling iOS SDK stöder CallKit-integrering. Du kan aktivera den här integreringen i användargränssnittsbiblioteket genom att konfigurera en instans av CallCompositeCallKitOption
. Mer information finns i Integrera med CallKit.
onIncomingCallAcceptedFromCallKit
Prenumerera på om CallKit från att anropa SDK är aktiverat. Vid godkänt samtal startar du callComposite
med samtals-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)
Hantera anrop med CallComposite
Om du vill acceptera anrop ringer du ett anrop till accept
. Om du vill avvisa anrop ringer du ett anrop till reject
.
// Accept call
callComposite.accept(incomingCallId,
... // CallKit and local options
)
// Decline call
callComposite.reject(incomingCallId)
Ring upp andra deltagare
Starta med deltagarnas lista över CommunicationIdentifier
för att starta samtal med andra deltagarecallComposite
.
// [CommunicationIdentifier]
// use createCommunicationIdentifier(fromRawId: "raw id")
callComposite.launch(participants: <list of CommunicationIdentifier>,
localOptions: localOptions)