Delen via


Een-op-een-oproepen en pushmeldingen instellen in de UI-bibliotheek

De UI-bibliotheek biedt kant-en-klare ondersteuning voor het maken van een-op-een-oproepen met behulp van de deelnemers-id's van Azure Communication Services. Ter ondersteuning van een-op-een-oproepen biedt de UI-bibliotheek binnenkomende oproepmeldingen. U kunt Azure Communication Services ook gebruiken als een Azure Event Grid-gebeurtenisbron voor aanroepen.

In dit artikel leert u hoe u een-op-een-aanroepen correct uitvoert met behulp van de UI-bibliotheek in uw toepassing.

Vereisten

De functies instellen

Zie de opensource-uibibliotheek voor Android en de voorbeeldtoepassingscode voor meer informatie.

Machtigingen instellen voor pushmeldingen

Als u pushmeldingen wilt instellen, hebt u een Firebase-account nodig waarvoor Firebase Cloud Messaging (FCM) is ingeschakeld. Uw FCM-service moet zijn verbonden met een Azure Notification Hubs-exemplaar. Zie Communication Services-meldingen voor meer informatie. U moet ook Android Studio versie 3.6 of hoger gebruiken om uw toepassing te bouwen.

Voordat de Android-toepassing meldingsberichten van FCM ontvangt, heeft deze een set machtigingen nodig. Voeg in het AndroidManifest.xml bestand de volgende set machtigingen toe na de <manifest ...> of </application> tag.

<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" />

Binnenkomende meldingen toevoegen aan uw mobiele app

Azure Communication Services kan worden geïntegreerd met Azure Event Grid en Azure Notification Hubs, zodat u pushmeldingen kunt toevoegen aan uw apps in Azure.

Registreren/registratie opheffen voor pushmeldingen van Notification Hub

Als u zich wilt registreren voor pushmeldingen, moet de toepassing een CallComposite exemplaar aanroepen registerPushNotification() met een apparaatregistratietoken.

Als u het apparaatregistratietoken wilt ophalen, voegt u de Firebase SDK toe aan het exemplaar van build.gradle uw toepassingsmodule. Als u meldingen van Firebase wilt ontvangen, integreert u Azure Notification Hubs door de instructies in Communication Services-meldingen te volgen.

    val deviceRegistrationToken = "" // From Firebase
    callComposite.registerPushNotification(deviceRegistrationToken).whenComplete { _, throwable ->
        if (throwable != null) {
            // Handle error
        }
    }

Pushmeldingen verwerken die zijn ontvangen van Event Grid of Notification Hub

Als u pushmeldingen wilt ontvangen voor binnenkomende oproepen, roept handlePushNotification u een CallComposite exemplaar aan met een nettolading.

Als u de nettolading van FCM wilt ophalen, begint u met het maken van een nieuwe service (File>New>Service Service>) die de FirebaseMessagingService Firebase SDK-klasse uitbreidt en de onMessageReceived methode overschrijft. Deze methode is de gebeurtenis-handler die wordt aangeroepen wanneer FCM de pushmelding aan de toepassing levert.

    // On Firebase onMessageReceived
    val pushNotification = CallCompositePushNotification(remoteMessage.data)
    callComposite.handlePushNotification(pushNotification).whenComplete { _, throwable ->
        if (throwable != null) {
            // Handle error
        }
    }

Registreren voor binnenkomende oproepmeldingen

Als u binnenkomende oproepmeldingen wilt ontvangen, handlePushNotificationmeldt u zich aan CallCompositeIncomingCallEvent en CallCompositeIncomingCallCancelledEvent. CallCompositeIncomingCallEvent bevat de inkomende callId en bellergegevens. CallCompositeIncomingCallCancelledEvent bevat callId en annuleringscode voor aanroepen 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)

Oproepen verwerken

Als u gesprekken wilt accepteren, belt u naar accept. Als u oproepen wilt weigeren, belt u naar reject.

// Accept call
callComposite.accept(applicationContext, incomingCallId, localOptions)

// Decline call
callComposite.reject(incomingCallId)

Andere deelnemers bellen

Als u gesprekken met andere deelnemers wilt starten, maakt u CallCompositeStartCallOptions de onbewerkte id's van deelnemers van CommunicationIdentity en launch.

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

Zie de opensource iOS UI-bibliotheek en de voorbeeldtoepassingscode voor meer informatie.

Pushmeldingen instellen

Een mobiele pushmelding is de pop-upmelding die u op het mobiele apparaat ontvangt. Dit artikel is gericht op voIP-pushmeldingen (Voice over Internet Protocol).

In de volgende secties wordt beschreven hoe u pushmeldingen registreert, verwerkt en de registratie ervan ongedaan kunt maken. Voordat u deze taken start, moet u deze vereisten voltooien:

  1. Ga in Xcode naar de mogelijkheden voor ondertekening en mogelijkheden. Voeg een mogelijkheid toe door + Mogelijkheid te selecteren en vervolgens Pushmeldingen te selecteren.
  2. Voeg nog een mogelijkheid toe door + Mogelijkheid te selecteren en vervolgens Achtergrondmodi te selecteren.
  3. Schakel onder Achtergrondmodi de selectievakjes Voice over IP en Externe meldingen in.

Binnenkomende meldingen toevoegen aan uw mobiele app

Azure Communication Services kan worden geïntegreerd met Azure Event Grid en Azure Notification Hubs, zodat u pushmeldingen kunt toevoegen aan uw apps in Azure.

Pushmeldingen voor Notification Hub registreren/de registratie ervan opheffen

Als u zich wilt registreren voor pushmeldingen, moet de toepassing een CallComposite exemplaar aanroepen registerPushNotifications() met een apparaatregistratietoken.

    // 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()

Pushmeldingen verwerken die zijn ontvangen van Event Grid of Notification Hub

Als u pushmeldingen wilt ontvangen voor binnenkomende oproepen, roept u handlePushNotification() een exemplaar aan met een payload van een CallComposite woordenlijst.

Wanneer u de opties voor CallKit gebruikt handlePushNotification() en CallKit instelt, krijgt u een CallKit-melding om oproepen te accepteren of te weigeren.

    // 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
        }
    }

Registreren voor binnenkomende oproepmeldingen bij push-ingang

Als u binnenkomende oproepmeldingen wilt ontvangen, handlePushNotificationmeldt u zich aan onIncomingCall en onIncomingCallCancelled. IncomingCall bevat de inkomende callId en bellergegevens. IncomingCallCancelled bevat callId en annuleringscode voor aanroepen 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

Interne push uitschakelen voor binnenkomende oproep

Als u alleen pushmeldingen wilt ontvangen van EventGrid en APNS wilt instellen op disableInternalPushForIncomingCall waar in CallCompositeOptions. Als disableInternalPushForIncomingCall waar is, wordt de gebeurtenis voor pushmeldingen van de ui-bibliotheek alleen ontvangen wanneer handlePushNotification deze wordt aangeroepen. De optie disableInternalPushForIncomingCall helpt om het ontvangen van meldingen vanaf CallComposite de voorgrondmodus te stoppen. Deze instelling heeft geen EventGrid controle en NotificationHub instellingen.

    let options = CallCompositeOptions(disableInternalPushForIncomingCall: true)

Start samengesteld op binnenkomende oproep die is geaccepteerd door het aanroepen van SDK CallKit

De Azure Communication Services Calling iOS SDK ondersteunt CallKit-integratie. U kunt deze integratie inschakelen in de UI-bibliotheek door een exemplaar van CallCompositeCallKitOption. Zie Integreren met CallKit voor meer informatie.

Abonneer u op onIncomingCallAcceptedFromCallKit als CallKit van het aanroepen van SDK is ingeschakeld. Start bij gesprek geaccepteerd callComposite met gespreks-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)

Oproepen verwerken met CallComposite

Als u gesprekken wilt accepteren, belt u naar accept. Als u oproepen wilt weigeren, belt u naar reject.

// Accept call
callComposite.accept(incomingCallId, 
                     ... // CallKit and local options
                     )

// Decline call
callComposite.reject(incomingCallId)

Andere deelnemers bellen

Als u gesprekken met andere deelnemers wilt starten, start u callComposite met de lijst met deelnemers van CommunicationIdentifier.

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

Volgende stappen