Menyiapkan panggilan satu-ke-satu dan pemberitahuan push di Pustaka UI
Pustaka UI menyediakan dukungan siap pakai untuk melakukan panggilan satu ke satu dengan menggunakan pengidentifikasi peserta Azure Communication Services. Untuk mendukung panggilan satu-ke-satu, Pustaka UI menyediakan pemberitahuan panggilan masuk. Anda juga dapat menggunakan Azure Communication Services sebagai sumber peristiwa Azure Event Grid untuk panggilan.
Dalam artikel ini, Anda mempelajari cara melakukan panggilan satu-ke-satu dengan benar dengan menggunakan Pustaka UI di aplikasi Anda.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Sumber daya Communication Services yang disebarkan. Buat sumber daya Azure Communication Services.
- Token akses pengguna untuk mengaktifkan klien panggilan. Dapatkan token akses pengguna.
- Opsional: Penyelesaian Mulai Cepat untuk memulai komposit Pustaka UI.
Menyiapkan fitur
Untuk informasi selengkapnya, lihat Pustaka UI Android sumber terbuka dan kode aplikasi sampel.
Menyiapkan izin untuk pemberitahuan push
Untuk menyiapkan pemberitahuan push, Anda memerlukan akun Firebase dengan Firebase Cloud Messaging (FCM) diaktifkan. Layanan FCM Anda harus terhubung ke instans Azure Notification Hubs. Untuk informasi selengkapnya, lihat pemberitahuan Communication Services. Anda juga perlu menggunakan Android Studio versi 3.6 atau yang lebih baru untuk membangun aplikasi Anda.
Agar aplikasi Android menerima pesan pemberitahuan dari FCM, aplikasi memerlukan serangkaian izin. Di file Anda AndroidManifest.xml
, tambahkan sekumpulan izin berikut setelah <manifest ...>
tag atau </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" />
Menambahkan pemberitahuan masuk ke aplikasi seluler Anda
Azure Communication Services terintegrasi dengan Azure Event Grid dan Azure Notification Hubs, sehingga Anda dapat menambahkan pemberitahuan push ke aplikasi Anda di Azure.
Daftar/Batalkan pendaftaran untuk pemberitahuan push hub pemberitahuan
Untuk mendaftar pemberitahuan push, aplikasi perlu memanggil registerPushNotification()
CallComposite
instans dengan token pendaftaran perangkat.
Untuk mendapatkan token pendaftaran perangkat, tambahkan Firebase SDK ke instans modul build.gradle
aplikasi Anda. Untuk menerima pemberitahuan dari Firebase, integrasikan Azure Notification Hubs dengan mengikuti instruksi di pemberitahuan Communication Services.
val deviceRegistrationToken = "" // From Firebase
callComposite.registerPushNotification(deviceRegistrationToken).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Menangani pemberitahuan push yang diterima dari Event Grid atau hub pemberitahuan
Untuk menerima pemberitahuan push untuk panggilan masuk, panggil handlePushNotification
instans CallComposite
dengan payload.
Untuk mendapatkan payload dari FCM, mulailah dengan membuat layanan baru (Layanan Layanan> Baru>File>) yang memperluas FirebaseMessagingService
kelas Firebase SDK dan mengambil alih onMessageReceived
metode . Metode ini adalah penanganan aktivitas yang dipanggil ketika FCM mengirimkan pemberitahuan push ke aplikasi.
// On Firebase onMessageReceived
val pushNotification = CallCompositePushNotification(remoteMessage.data)
callComposite.handlePushNotification(pushNotification).whenComplete { _, throwable ->
if (throwable != null) {
// Handle error
}
}
Mendaftar untuk pemberitahuan panggilan masuk
Untuk menerima pemberitahuan panggilan masuk setelah handlePushNotification
, berlangganan CallCompositeIncomingCallEvent
dan CallCompositeIncomingCallCancelledEvent
. CallCompositeIncomingCallEvent
berisi informasi callId dan penelepon masuk. CallCompositeIncomingCallCancelledEvent
berisi pemecahan masalah kode pembatalan panggilan dan panggilan di 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)
Menangani panggilan
Untuk menerima panggilan, lakukan panggilan ke accept
. Untuk menolak panggilan, lakukan panggilan ke reject
.
// Accept call
callComposite.accept(applicationContext, incomingCallId, localOptions)
// Decline call
callComposite.reject(incomingCallId)
Putar-putar peserta lain
Untuk memulai panggilan dengan peserta lain, buat CallCompositeStartCallOptions
dengan ID mentah peserta dari CommunicationIdentity
dan launch
.
Untuk informasi selengkapnya, lihat Pustaka UI iOS sumber terbuka dan kode aplikasi sampel.
Siapkan pemberitahuan push
Pemberitahuan push seluler adalah pemberitahuan pop-up yang Anda dapatkan di perangkat seluler. Artikel ini berfokus pada pemberitahuan push Voice over Internet Protocol (VoIP).
Bagian berikut ini menjelaskan cara mendaftar, menangani, dan membatalkan pendaftaran pemberitahuan push. Sebelum Anda memulai tugas tersebut, selesaikan prasyarat ini:
- Di Xcode, buka Menandatangani & Kapabilitas. Tambahkan kapabilitas dengan memilih + Capability, lalu pilih Pemberitahuan Push.
- Tambahkan kapabilitas lain dengan memilih + Capability, lalu pilih Mode Latar Belakang.
- Di Mode Latar Belakang, pilih kotak centang Voice over IP dan Pemberitahuan jarak jauh.
Menambahkan pemberitahuan masuk ke aplikasi seluler Anda
Azure Communication Services terintegrasi dengan Azure Event Grid dan Azure Notification Hubs, sehingga Anda dapat menambahkan pemberitahuan push ke aplikasi Anda di Azure.
Daftar/batalkan pendaftaran untuk pemberitahuan push hub pemberitahuan
Untuk mendaftar pemberitahuan push, aplikasi perlu memanggil registerPushNotifications()
CallComposite
instans dengan token pendaftaran perangkat.
// 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()
Menangani pemberitahuan push yang diterima dari Event Grid atau hub pemberitahuan
Untuk menerima pemberitahuan push untuk panggilan masuk, hubungi handlePushNotification()
padaCallComposite
instans dengan payload kamus.
Saat Anda menggunakan handlePushNotification()
dan opsi CallKit diatur, Anda mendapatkan pemberitahuan CallKit untuk menerima atau menolak panggilan.
// 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
}
}
Mendaftar untuk pemberitahuan panggilan masuk saat menangani pendorongan
Untuk menerima pemberitahuan panggilan masuk setelah handlePushNotification
, berlangganan onIncomingCall
dan onIncomingCallCancelled
. IncomingCall
berisi informasi callId dan penelepon masuk. IncomingCallCancelled
berisi pemecahan masalah kode pembatalan panggilan dan panggilan di 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
Menonaktifkan pendorongan internal untuk panggilan masuk
Untuk menerima pemberitahuan push hanya dari EventGrid
dan APNS
diatur disableInternalPushForIncomingCall
ke true di CallCompositeOptions
. Jika disableInternalPushForIncomingCall
benar, peristiwa pemberitahuan push dari pustaka ui hanya diterima ketika handlePushNotification
akan dipanggil. Opsi disableInternalPushForIncomingCall
ini membantu berhenti menerima pemberitahuan dari CallComposite
dalam mode latar depan. Pengaturan ini tidak mengontrol EventGrid
dan NotificationHub
menyetel.
let options = CallCompositeOptions(disableInternalPushForIncomingCall: true)
Luncurkan komposit pada panggilan masuk yang diterima dari panggilan SDK CallKit
Azure Communication Services Calling iOS SDK mendukung integrasi CallKit. Anda dapat mengaktifkan integrasi ini di Pustaka UI dengan mengonfigurasi instans CallCompositeCallKitOption
. Untuk informasi selengkapnya, lihat Mengintegrasikan dengan CallKit.
Berlangganan onIncomingCallAcceptedFromCallKit
jika CallKit dari memanggil SDK diaktifkan. Saat panggilan diterima, luncurkan callComposite
dengan ID panggilan.
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)
Menangani panggilan dengan CallComposite
Untuk menerima panggilan, lakukan panggilan ke accept
. Untuk menolak panggilan, lakukan panggilan ke reject
.
// Accept call
callComposite.accept(incomingCallId,
... // CallKit and local options
)
// Decline call
callComposite.reject(incomingCallId)
Putar-putar peserta lain
Untuk memulai panggilan dengan peserta lain, luncurkan callComposite
dengan daftar peserta .CommunicationIdentifier
// [CommunicationIdentifier]
// use createCommunicationIdentifier(fromRawId: "raw id")
callComposite.launch(participants: <list of CommunicationIdentifier>,
localOptions: localOptions)