Интеграция CallKit в библиотеку пользовательского интерфейса
Библиотека пользовательского интерфейса Службы коммуникации Azure предоставляет поддержку callKit вне поля. Разработчики могут предоставить собственную конфигурацию для CallKit, которая будет использоваться для библиотеки пользовательского интерфейса.
В этой статье вы узнаете, как правильно настроить CallKit с помощью библиотеки пользовательского интерфейса в приложении.
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Развернутый ресурс Служб коммуникации. Создайте ресурс Служб коммуникации.
- Маркер доступа пользователя для включения клиента для вызовов. Получите маркер доступа пользователя.
- Необязательно. Завершение краткого руководства по началу работы с составными компонентами библиотеки пользовательского интерфейса.
Дополнительные сведения см. в библиотеке пользовательского интерфейса iOS с открытым исходным кодом и образце кода приложения.
Настройка интеграции CallKit
Пакет SDK для вызовов iOS Службы коммуникации Azure поддерживает интеграцию CallKit. Эту интеграцию можно включить в библиотеке пользовательского CallCompositeCallKitOption
интерфейса, настроив экземпляр. Дополнительные сведения см. в разделе "Интеграция с 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
. Дополнительные сведения см. в документации разработчика Apple по CXProviderConfiguration.
let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]
Настройка звукового сеанса
Настройте звуковой сеанс для вызова перед размещением или принятием входящих вызовов и перед возобновлением вызова, который находится на удержании. Дополнительные сведения см. в документации разработчика Apple по 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
}
Включение 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
)
Api удержания и возобновления работы для CallKit, интегрированный в приложение
Для 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
}
}