Konfigurowanie połączeń typu jeden do jednego i powiadomień wypychanych w bibliotece interfejsu użytkownika
Biblioteka interfejsu użytkownika zapewnia wbudowaną obsługę wykonywania wywołań jeden do jednego przy użyciu identyfikatorów uczestników usług Azure Communication Services. Aby obsługiwać wywołania typu jeden do jednego, biblioteka interfejsu użytkownika udostępnia przychodzące powiadomienia o wywołaniach. Usługi Azure Communication Services można również używać jako źródła zdarzeń usługi Azure Event Grid do wywołań.
Z tego artykułu dowiesz się, jak poprawnie wykonywać wywołania jeden do jednego przy użyciu biblioteki interfejsu użytkownika w aplikacji.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
- Wdrożony zasób usług komunikacyjnych. Utwórz zasób usług komunikacyjnych.
- Token dostępu użytkownika umożliwiający włączenie klienta wywołania. Uzyskiwanie tokenu dostępu użytkownika.
- Opcjonalnie: ukończenie przewodnika Szybki start dotyczącego rozpoczynania pracy z zestawami biblioteki interfejsu użytkownika.
Konfigurowanie funkcji
Aby uzyskać więcej informacji, zobacz bibliotekę interfejsu użytkownika systemu Android typu open source i przykładowy kod aplikacji.
Konfigurowanie uprawnień dla powiadomień wypychanych
Aby skonfigurować powiadomienia wypychane, musisz mieć konto firebase z włączoną usługą Firebase Cloud Messaging (FCM). Usługa FCM musi być połączona z wystąpieniem usługi Azure Notification Hubs. Aby uzyskać więcej informacji, zobacz Powiadomienia usług komunikacyjnych. Aby skompilować aplikację, musisz również użyć programu Android Studio w wersji 3.6 lub nowszej.
Aby aplikacja systemu Android odbierała komunikaty powiadomień z usługi FCM, musi mieć zestaw uprawnień. AndroidManifest.xml
W pliku dodaj następujący zestaw uprawnień po tagu <manifest ...>
or</application>
.
<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" />
Dodawanie powiadomień przychodzących do aplikacji mobilnej
Usługi Azure Communication Services integrują się z usługami Azure Event Grid i Azure Notification Hubs, dzięki czemu można dodawać powiadomienia wypychane do aplikacji na platformie Azure.
Rejestrowanie/wyrejestrowywanie powiadomień wypychanych centrum powiadomień
Aby zarejestrować się w celu otrzymywania powiadomień wypychanych, aplikacja musi wywołać registerPushNotification()
CallComposite
wystąpienie przy użyciu tokenu rejestracji urządzenia.
Aby uzyskać token rejestracji urządzenia, dodaj zestaw Firebase SDK do wystąpienia modułu build.gradle
aplikacji. Aby otrzymywać powiadomienia z programu Firebase, zintegruj usługę Azure Notification Hubs, postępując zgodnie z instrukcjami w obszarze Powiadomienia usług Komunikacyjnych.
val deviceRegistrationToken = "" // From Firebase
callComposite.registerPushNotification(deviceRegistrationToken).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Obsługa powiadomień wypychanych odebranych z usługi Event Grid lub centrum powiadomień
Aby odbierać powiadomienia wypychane dla połączeń przychodzących, wywołaj handlePushNotification
CallComposite
wystąpienie z ładunkiem.
Aby pobrać ładunek z usługi FCM, zacznij od utworzenia nowej usługi (usługi File>New>Service),> która rozszerza FirebaseMessagingService
klasę zestawu SDK programu Firebase i zastępuje metodę .onMessageReceived
Ta metoda to procedura obsługi zdarzeń wywoływana, gdy usługa FCM dostarcza powiadomienie wypychane do aplikacji.
// On Firebase onMessageReceived
val pushNotification = CallCompositePushNotification(remoteMessage.data)
callComposite.handlePushNotification(pushNotification).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Rejestrowanie w celu otrzymywania powiadomień o połączeniach przychodzących
Aby otrzymywać powiadomienia o połączeniach przychodzących po handlePushNotification
, zasubskrybuj CallCompositeIncomingCallEvent
i CallCompositeIncomingCallCancelledEvent
. CallCompositeIncomingCallEvent
zawiera identyfikator wywołania przychodzącego i informacje o obiekcie wywołującym. CallCompositeIncomingCallCancelledEvent
zawiera identyfikator callId i kod anulowania wywołań w usługach 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)
Obsługa wywołań
Aby akceptować połączenia, wykonaj wywołanie metody accept
. Aby odrzucić wywołania, wykonaj wywołanie metody reject
.
// Accept call
callComposite.accept(applicationContext, incomingCallId, localOptions)
// Decline call
callComposite.reject(incomingCallId)
Wybieranie innych uczestników
Aby rozpocząć połączenia z innymi uczestnikami, utwórz CallCompositeStartCallOptions
z nieprzetworzonymi identyfikatorami uczestników z CommunicationIdentity
i launch
.
Aby uzyskać więcej informacji, zobacz bibliotekę interfejsu użytkownika systemu iOS typu open source i przykładowy kod aplikacji.
Konfigurowanie powiadomień wypychanych
Powiadomienie push dla urządzeń przenośnych to wyskakujące powiadomienie, które otrzymasz na urządzeniu przenośnym. Ten artykuł koncentruje się na powiadomieniach wypychanych za pośrednictwem protokołu Internet Protocol (VoIP).
W poniższych sekcjach opisano sposób rejestrowania, obsługi i wyrejestrowania powiadomień wypychanych. Przed rozpoczęciem tych zadań wykonaj następujące wymagania wstępne:
- W programie Xcode przejdź do pozycji Podpisywanie i możliwości. Dodaj możliwość, wybierając pozycję + Możliwości, a następnie wybierz pozycję Powiadomienia wypychane.
- Dodaj kolejną możliwość, wybierając pozycję + Możliwości, a następnie wybierz pozycję Tryby w tle.
- W obszarze Tryby tła zaznacz pola wyboru Voice over IP i Remote notifications (Głos za pośrednictwem adresu IP i powiadomień zdalnych ).
Dodawanie powiadomień przychodzących do aplikacji mobilnej
Usługi Azure Communication Services integrują się z usługami Azure Event Grid i Azure Notification Hubs, dzięki czemu można dodawać powiadomienia wypychane do aplikacji na platformie Azure.
Rejestrowanie/wyrejestrowywanie powiadomień wypychanych centrum powiadomień
Aby zarejestrować się w celu otrzymywania powiadomień wypychanych, aplikacja musi wywołać registerPushNotifications()
CallComposite
wystąpienie przy użyciu tokenu rejestracji urządzenia.
// 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()
Obsługa powiadomień wypychanych odebranych z usługi Event Grid lub centrum powiadomień
Aby odbierać powiadomienia wypychane dla wywołań przychodzących, wywołaj handlePushNotification()
CallComposite
wystąpienie z ładunkiem słownika.
Gdy używasz handlePushNotification()
i opcje CallKit są ustawione, otrzymasz powiadomienie CallKit o akceptowaniu lub odrzucaniu wywołań.
// 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
}
}
Rejestrowanie w celu otrzymywania powiadomień o wywołaniu przychodzącym przy wypychaniu dojścia
Aby otrzymywać powiadomienia o połączeniach przychodzących po handlePushNotification
, zasubskrybuj onIncomingCall
i onIncomingCallCancelled
. IncomingCall
zawiera identyfikator wywołania przychodzącego i informacje o obiekcie wywołującym. IncomingCallCancelled
zawiera identyfikator callId i kod anulowania wywołań w usługach 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
Wyłączanie wewnętrznego wypychania dla połączeń przychodzących
Aby otrzymywać powiadomienia wypychane tylko z EventGrid
elementu i APNS
ustawić wartość disableInternalPushForIncomingCall
true w elem CallCompositeOptions
. Jeśli disableInternalPushForIncomingCall
ma wartość true, zdarzenie powiadomienia wypychanego z biblioteki interfejsu użytkownika odebrane tylko wtedy, gdy handlePushNotification
zostanie wywołane. Opcja disableInternalPushForIncomingCall
ułatwia zatrzymanie odbierania powiadomień z CallComposite
trybu pierwszego planu. To ustawienie nie kontroluje ustawień i NotificationHub
nie jest to ustawienieEventGrid
.
let options = CallCompositeOptions(disableInternalPushForIncomingCall: true)
Uruchamianie złożonego wywołania przychodzącego zaakceptowanego z wywołania zestawu CallKit zestawu SDK
Usługa Azure Communication Services wywołująca zestaw SDK systemu iOS obsługuje integrację z zestawem CallKit. Tę integrację można włączyć w bibliotece interfejsu użytkownika, konfigurując wystąpienie programu CallCompositeCallKitOption
. Aby uzyskać więcej informacji, zobacz Integracja z zestawem CallKit.
onIncomingCallAcceptedFromCallKit
Subskrybuj, jeśli zestaw CallKit z wywoływania zestawu SDK jest włączony. Po zaakceptowaniu połączenia uruchom polecenie callComposite
z identyfikatorem połączenia.
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)
Obsługa wywołań za pomocą funkcji CallComposite
Aby akceptować połączenia, wykonaj wywołanie metody accept
. Aby odrzucić wywołania, wykonaj wywołanie metody reject
.
// Accept call
callComposite.accept(incomingCallId,
... // CallKit and local options
)
// Decline call
callComposite.reject(incomingCallId)
Wybieranie innych uczestników
Aby rozpocząć połączenia z innymi uczestnikami, uruchom polecenie callComposite
z listą uczestników .CommunicationIdentifier
// [CommunicationIdentifier]
// use createCommunicationIdentifier(fromRawId: "raw id")
callComposite.launch(participants: <list of CommunicationIdentifier>,
localOptions: localOptions)