Bagikan melalui


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

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

Langkah berikutnya