Mengintegrasikan CallKit ke pustaka UI
Pustaka Antarmuka Pengguna Azure Communication Services menyediakan dukungan siap pakai untuk CallKit. Pengembang dapat menyediakan konfigurasi mereka sendiri agar CallKit digunakan untuk Pustaka UI.
Dalam artikel ini, Anda mempelajari cara menyiapkan CallKit 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.
Untuk informasi selengkapnya, lihat Pustaka UI iOS sumber terbuka dan kode aplikasi sampel.
Menyiapkan integrasi 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.
Tentukan info penerima panggilan untuk panggilan keluar
Untuk menentukan info panggilan keluar, buat instans CallKitRemoteInfo
. Jika Anda tidak memberikan CallKitRemoteInfo
, nilai mentah pengidentifikasi peserta ditampilkan secara default.
Tetapkan nilai untuk displayName
mengkustomisasi nama tampilan untuk pemanggil. Nilai yang ditentukan di CallKitRemoteInfo
persis seperti yang muncul di log panggilan terakhir yang diputar.
Tetapkan juga nilainya cxHandle
. Inilah yang diterima aplikasi ketika pengguna memanggil kembali kontak tersebut.
let cxHandle = CXHandle(type: .generic, value: "VALUE_TO_CXHANDLE")
let callKitRemoteInfo = CallKitRemoteInfo(displayName: "DISPLAY_NAME", handle: cxHandle)
callComposite.launch(..., // Locator for Azure Communication Service
callKitRemoteInfo: callKitRemoteInfo)
Tentukan info penerima panggilan untuk panggilan masuk
Untuk menentukan info pemanggil panggilan masuk, buat instans .CallKitOptions
Jika Anda tidak memberikan CallKitOptions
, nilai mentah pengidentifikasi peserta ditampilkan secara default.
Tetapkan nilai untuk provideRemoteInfo
mengkustomisasi nama tampilan untuk pemanggil. Nilai yang ditentukan di CallKitRemoteInfo
persis seperti yang muncul di log panggilan terakhir yang diputar.
Tetapkan juga nilainya cxHandle
. Inilah yang diterima aplikasi ketika pengguna memanggil kembali kontak tersebut.
public func incomingCallRemoteInfo(info: Caller) -> CallKitRemoteInfo {
let cxHandle = CXHandle(type: .generic, value: "VALUE_TO_CXHANDLE")
var remoteInfoDisplayName = "DISPLAY_NAME"
let callKitRemoteInfo = CallKitRemoteInfo(displayName: remoteInfoDisplayName,
handle: cxHandle)
return callKitRemoteInfo
}
Mengonfigurasi penyedia
Sesuai kebutuhan, berikan CXProviderConfiguration
instans ke CallKitOptions
. Untuk informasi selengkapnya, lihat dokumentasi pengembang Apple tentang CXProviderConfiguration.
let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]
Mengonfigurasi sesi audio
Konfigurasikan sesi audio yang akan dipanggil sebelum melakukan atau menerima panggilan masuk dan sebelum memulai kembali panggilan yang ditangguhkan. Untuk informasi selengkapnya, lihat dokumentasi pengembang Apple tentang AVAudioSession.
public func configureAudioSession() -> Error? {
let audioSession = AVAudioSession.sharedInstance()
let options: AVAudioSession.CategoryOptions = .allowBluetooth
var configError: Error?
do {
try audioSession.setCategory(.playAndRecord)
} catch {
configError = error
}
return configError
}
Aktifkan CallKit
Untuk mengaktifkan CallKit, buat instans CallKitOptions
dan berikan ke callCompositeOptions
.
let isCallHoldSupported = true // enable call hold (default is true)
let callKitOptions = CallKitOptions(
providerConfig: providerConfig,
isCallHoldSupported: isCallHoldSupported,
provideRemoteInfo: provideRemoteInfo,
configureAudioSession: configureAudioSession
)
let options = CallCompositeOptions(
..., // Other options for Azure Communication Service
callKitOptions: callKitOptions
)
Tahan dan Lanjutkan API untuk CallKit yang terintegrasi dalam aplikasi
Untuk CallKit yang terintegrasi dalam penggunaan hold
aplikasi dan resume
untuk mengelola status panggilan.
callComposite.hold() { result in
switch result {
case .success:
// success
case .failure(let error):
// failure
}
}
callComposite.resume() { result in
switch result {
case .success:
// success
case .failure(let error):
// failure
}
}