UI 라이브러리에 CallKit 통합
Azure Communication Services UI 라이브러리는 CallKit에 대한 기본 지원을 제공합니다. 개발자는 UI 라이브러리에 사용할 CallKit에 대한 자체 구성을 제공할 수 있습니다.
이 문서에서는 애플리케이션에서 UI 라이브러리를 사용하여 CallKit을 올바르게 설정하는 방법을 알아봅니다.
필수 조건
- 물리적 iOS 디바이스입니다. iOS 시뮬레이터는 CallKit 기능을 지원하지 않습니다.
- 활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
- 배포된 Communication Services 리소스. Communication Services 리소스 만들기
- 호출 클라이언트를 사용하도록 설정하는 사용자 액세스 토큰입니다. 사용자 액세스 토큰을 가져옵니다.
- 선택 사항: UI 라이브러리 복합 구성 요소 시작 빠른 시작 완료.
자세한 내용은 오픈 소스 iOS UI 라이브러리 및 샘플 애플리케이션 코드를 참조하세요.
CallKit 통합 설정
Azure Communication Services 통화 iOS SDK는 CallKit 통합을 지원합니다. CallCompositeCallKitOption
인스턴스를 구성하여 UI 라이브러리에서 이 통합을 사용하도록 설정할 수 있습니다. 자세한 내용은 CallKit과 통합을 참조하세요.
발신 통화 수신자 정보 지정
발신 전화 정보를 지정하려면 CallKitRemoteInfo
의 인스턴스를 만듭니다. CallKitRemoteInfo
를 제공하지 않으면 참가자 식별자의 원시 값이 기본 값으로 표시됩니다.
발신자의 표시 이름을 사용자 지정하려면 displayName
에 값을 할당합니다. CallKitRemoteInfo
에 지정된 값은 마지막으로 전화를 건 통화 로그에 표시되는 방식과 정확히 같습니다.
또한 cxHandle
값을 할당합니다. 이것은 사용자가 해당 연락처로 다시 전화를 걸 때 애플리케이션이 수신하는 값입니다.
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)
수신 전화에 대한 통화 수신자 정보 지정
수신 전화 발신자 정보를 지정하려면 CallKitOptions
의 인스턴스를 만듭니다. CallKitOptions
를 제공하지 않으면 참가자 식별자의 원시 값이 기본 값으로 표시됩니다.
발신자의 표시 이름을 사용자 지정하려면 provideRemoteInfo
에 값을 할당합니다. CallKitRemoteInfo
에 지정된 값은 마지막으로 전화를 건 통화 로그에 표시되는 방식과 정확히 같습니다.
또한 cxHandle
값을 할당합니다. 이것은 사용자가 해당 연락처로 다시 전화를 걸 때 애플리케이션이 수신하는 값입니다.
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
}
공급자 구성
필요에 따라 CXProviderConfiguration
인스턴스를 CallKitOptions
에 제공합니다. 자세한 내용은 CXProviderConfiguration에 대한 Apple 개발자 설명서를 참조하세요.
let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]
오디오 세션 구성
전화를 걸거나 걸려오는 전화를 받기 전과 보류 중인 통화를 다시 시작하기 전에 오디오 세션 구성이 호출됩니다. 자세한 내용은 AVAudioSession에 대한 Apple 개발자 설명서를 참조하세요.
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
}
CallKit 사용 설정
CallKit을 사용하도록 설정하려면 CallKitOptions
인스턴스를 만들어서 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
)
애플리케이션에 통합된 CallKit용 보류 및 다시 시작 API
애플리케이션에 통합된 CallKit의 경우 hold
및 resume
을 사용하여 통화 상태를 관리합니다.
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
}
}