Nastavení volání 1:1 a nabízených oznámení v knihovně uživatelského rozhraní
Knihovna uživatelského rozhraní poskytuje připravenou podporu pro volání 1:1 pomocí identifikátorů účastníků služby Azure Communication Services. Pro podporu volání 1:1 poskytuje knihovna uživatelského rozhraní oznámení o příchozích hovorech. Azure Communication Services můžete také použít jako zdroj událostí Azure Event Gridu pro volání.
V tomto článku se dozvíte, jak správně volat 1:1 pomocí knihovny uživatelského rozhraní ve vaší aplikaci.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Nasazený prostředek komunikační služby. Vytvořte prostředek komunikační služby.
- Přístupový token uživatele, který povolí klienta volání. Získejte přístupový token uživatele.
- Volitelné: Dokončení rychlého startu pro začátek práce se složenými knihovnami uživatelského rozhraní.
Nastavení funkcí
Další informace najdete v opensourcové knihovně uživatelského rozhraní Androidu a vzorovém kódu aplikace.
Nastavení oprávnění pro nabízená oznámení
K nastavení nabízených oznámení potřebujete účet Firebase s povolenou službou Firebase Cloud Messaging (FCM). Vaše služba FCM musí být připojená k instanci Azure Notification Hubs. Další informace najdete v tématu Oznámení komunikačních služeb. K sestavení aplikace musíte také použít Android Studio verze 3.6 nebo novější.
Aby aplikace pro Android přijímala zprávy s oznámeními z FCM, potřebuje sadu oprávnění. AndroidManifest.xml
Do souboru přidejte následující sadu oprávnění za <manifest ...>
značku nebo </application>
značku.
<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" />
Přidání příchozích oznámení do mobilní aplikace
Služba Azure Communication Services se integruje se službou Azure Event Grid a Službou Azure Notification Hubs, takže můžete do svých aplikací v Azure přidávat nabízená oznámení .
Registrace nebo zrušení registrace nabízených oznámení centra oznámení
Aby se aplikace zaregistrovala k nabízeným oznámením, musí volat registerPushNotification()
CallComposite
instanci pomocí tokenu registrace zařízení.
Pokud chcete získat token registrace zařízení, přidejte do instance modulu build.gradle
aplikace sadu Firebase SDK. Pokud chcete přijímat oznámení z Firebase, integrujte službu Azure Notification Hubs podle pokynů v oznámeních služby Communication Services.
val deviceRegistrationToken = "" // From Firebase
callComposite.registerPushNotification(deviceRegistrationToken).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Zpracování nabízených oznámení přijatých z Event Gridu nebo centra oznámení
Pokud chcete přijímat nabízená oznámení pro příchozí hovory, zavolejte handlePushNotification
instanci CallComposite
s datovou částí.
Pokud chcete získat datovou část z FCM, začněte vytvořením nové služby (File>New>Service Service>), která rozšiřuje FirebaseMessagingService
třídu Firebase SDK a přepíše metodu.onMessageReceived
Tato metoda je obslužná rutina události, která volala, když FCM doručí nabízené oznámení do aplikace.
// On Firebase onMessageReceived
val pushNotification = CallCompositePushNotification(remoteMessage.data)
callComposite.handlePushNotification(pushNotification).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Registrace oznámení o příchozích hovorech
Příjem oznámení o příchozích hovorech po handlePushNotification
přihlášení k odběru CallCompositeIncomingCallEvent
a CallCompositeIncomingCallCancelledEvent
. CallCompositeIncomingCallEvent
obsahuje příchozí ID volání a informace o volajícím. CallCompositeIncomingCallCancelledEvent
obsahuje id volání a řešení potíží s kódem zrušení volání ve službě 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)
Zpracování volání
Pokud chcete přijímat hovory, zavolejte na accept
. Chcete-li odmítnout volání, zavolejte na reject
.
// Accept call
callComposite.accept(applicationContext, incomingCallId, localOptions)
// Decline call
callComposite.reject(incomingCallId)
Vytáčení dalších účastníků
Chcete-li zahájit hovory s dalšími účastníky, vytvořte CallCompositeStartCallOptions
nezpracovaná ID účastníků z CommunicationIdentity
a launch
.
Další informace najdete v opensourcové knihovně uživatelského rozhraní iOS a ukázkovém kódu aplikace.
Nastavení nabízených oznámení
Mobilní nabízené oznámení je automaticky otevírané oznámení, které se zobrazí v mobilním zařízení. Tento článek se zaměřuje na nabízená oznámení protokolu VoIP (Voice over Internet Protocol).
Následující části popisují, jak se registrovat, zpracovávat a zrušit registraci nabízených oznámení. Před zahájením těchto úkolů proveďte tyto požadavky:
- V Xcode přejděte do možností podepisování a funkcí. Přidejte funkci tak , že vyberete + Schopnost a pak vyberete Nabízená oznámení.
- Přidejte další funkci výběrem + Možnosti a pak vyberte Režimy pozadí.
- V části Režimy pozadí zaškrtněte políčka Hlas přes IP adresu a vzdálená oznámení .
Přidání příchozích oznámení do mobilní aplikace
Služba Azure Communication Services se integruje se službou Azure Event Grid a Službou Azure Notification Hubs, takže můžete do svých aplikací v Azure přidávat nabízená oznámení .
Registrace nebo zrušení registrace nabízených oznámení centra oznámení
Aby se aplikace zaregistrovala k nabízeným oznámením, musí volat registerPushNotifications()
CallComposite
instanci pomocí tokenu registrace zařízení.
// 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()
Zpracování nabízených oznámení přijatých z Event Gridu nebo centra oznámení
Pokud chcete přijímat nabízená oznámení pro příchozí hovory, zavolejte handlePushNotification()
instanci CallComposite
s datovou částí slovníku.
Při použití handlePushNotification()
a nastavení možností CallKit se zobrazí oznámení CallKitu pro příjem nebo odmítnutí hovorů.
// 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
}
}
Registrace pro oznámení příchozích hovorů při zpracování nabízených oznámení
Příjem oznámení o příchozích hovorech po handlePushNotification
přihlášení k odběru onIncomingCall
a onIncomingCallCancelled
. IncomingCall
obsahuje příchozí ID volání a informace o volajícím. IncomingCallCancelled
obsahuje id volání a řešení potíží s kódem zrušení volání ve službě 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
Zakázání interního nabízení příchozích hovorů
Chcete-li přijímat nabízená oznámení pouze z EventGrid
a nastavena disableInternalPushForIncomingCall
na hodnotu true in CallCompositeOptions
APNS
. Pokud disableInternalPushForIncomingCall
je true, událost nabízených oznámení z knihovny uživatelského rozhraní přijata pouze v případě, že handlePushNotification
bude volána. Tato možnost disableInternalPushForIncomingCall
pomáhá zastavit příjem oznámení v CallComposite
režimu popředí. Toto nastavení neřídí EventGrid
a NotificationHub
nastavení.
let options = CallCompositeOptions(disableInternalPushForIncomingCall: true)
Spuštění složeného při příchozím hovoru přijatém z volání sady SDK CallKit
Sada Azure Communication Services Volající iOS SDK podporuje integraci CallKitu. Tuto integraci můžete povolit v knihovně uživatelského rozhraní konfigurací instance CallCompositeCallKitOption
. Další informace naleznete v tématu Integrace s CallKit.
Přihlaste se k odběru onIncomingCallAcceptedFromCallKit
, pokud je povolená sada CallKit z volající sady SDK. Při přijetí hovoru spusťte callComposite
id hovoru.
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)
Zpracování hovorů pomocí CallComposite
Pokud chcete přijímat hovory, zavolejte na accept
. Chcete-li odmítnout volání, zavolejte na reject
.
// Accept call
callComposite.accept(incomingCallId,
... // CallKit and local options
)
// Decline call
callComposite.reject(incomingCallId)
Vytáčení dalších účastníků
Chcete-li zahájit hovory s ostatními účastníky, spusťte callComposite
seznam CommunicationIdentifier
účastníků .
// [CommunicationIdentifier]
// use createCommunicationIdentifier(fromRawId: "raw id")
callComposite.launch(participants: <list of CommunicationIdentifier>,
localOptions: localOptions)