Dela via


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

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 handlePushNotificationprenumererar 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.

    val participants: List<CommunicationIdentifier> // participants to dial
    callComposite.launch(context, participants, localOptions)

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:

  1. 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.
  2. Lägg till ytterligare en funktion genom att välja + Kapacitet och välj sedan Bakgrundslägen.
  3. 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 handlePushNotificationprenumererar 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 CommunicationIdentifierför att starta samtal med andra deltagarecallComposite.

    // [CommunicationIdentifier]
    // use createCommunicationIdentifier(fromRawId: "raw id")
    callComposite.launch(participants: <list of CommunicationIdentifier>,
                         localOptions: localOptions)

Nästa steg