Integrowanie zestawu CallKit z biblioteką interfejsu użytkownika
Biblioteka interfejsu użytkownika usług Azure Communication Services zapewnia wbudowaną obsługę zestawu CallKit. Deweloperzy mogą udostępnić własną konfigurację zestawu CallKit do użycia w bibliotece interfejsu użytkownika.
Z tego artykułu dowiesz się, jak poprawnie skonfigurować zestaw CallKit 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.
Aby uzyskać więcej informacji, zobacz bibliotekę interfejsu użytkownika systemu iOS typu open source i przykładowy kod aplikacji.
Konfigurowanie integracji z zestawem CallKit
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.
Określanie informacji adresata połączenia dla połączeń wychodzących
Aby określić informacje o połączeniach wychodzących, utwórz wystąpienie klasy CallKitRemoteInfo
. Jeśli nie podasz wartości nieprzetworzonej CallKitRemoteInfo
identyfikatora uczestnika, będzie domyślnie wyświetlana.
Przypisz wartość parametru , displayName
aby dostosować nazwę wyświetlaną elementu wywołującego. Wartość określona w pliku CallKitRemoteInfo
jest dokładnie tak, jak jest wyświetlana w dzienniku połączeń z ostatnim numerem.
Przypisz cxHandle
również wartość. Jest to to, co aplikacja otrzymuje, gdy użytkownik odwołuje się do tego kontaktu.
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)
Określanie informacji adresata połączenia dla połączeń przychodzących
Aby określić informacje o wywołaniu przychodzącym, utwórz wystąpienie klasy CallKitOptions
. Jeśli nie podasz wartości nieprzetworzonej CallKitOptions
identyfikatora uczestnika, będzie domyślnie wyświetlana.
Przypisz wartość parametru , provideRemoteInfo
aby dostosować nazwę wyświetlaną elementu wywołującego. Wartość określona w pliku CallKitRemoteInfo
jest dokładnie tak, jak jest wyświetlana w dzienniku połączeń z ostatnim numerem.
Przypisz cxHandle
również wartość. Jest to to, co aplikacja otrzymuje, gdy użytkownik odwołuje się do tego kontaktu.
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
}
Konfigurowanie dostawców
W razie potrzeby podaj CXProviderConfiguration
wystąpienie na CallKitOptions
. Aby uzyskać więcej informacji, zobacz dokumentację dla deweloperów firmy Apple dotyczącą CXProviderConfiguration.
let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]
Konfigurowanie sesji audio
Skonfiguruj sesję audio, która ma być wywoływana przed umieszczeniem lub zaakceptowaniem połączenia przychodzącego i przed wznowieniem połączenia, które jest wstrzymane. Aby uzyskać więcej informacji, zobacz dokumentację dla deweloperów firmy Apple dotyczącą 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
}
Włączanie zestawu CallKit
Aby włączyć zestaw CallKit, utwórz wystąpienie CallKitOptions
elementu i podaj go w pliku 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
)
Obsługa i wznawianie interfejsu API dla zestawu CallKit zintegrowanego w aplikacji
W przypadku zestawu CallKit zintegrowanego z aplikacją i hold
resume
zarządzania stanem wywołania.
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
}
}