Integrera CallKit i användargränssnittsbiblioteket
Användargränssnittsbiblioteket för Azure Communication Services tillhandahåller inbyggt stöd för CallKit. Utvecklare kan ange en egen konfiguration för CallKit som ska användas för användargränssnittsbiblioteket.
I den här artikeln får du lära dig hur du konfigurerar CallKit korrekt med hjälp av användargränssnittsbiblioteket i ditt program.
Förutsättningar
- En fysisk iOS-enhet. En iOS-simulator stöder inte CallKit-funktioner.
- Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
- En distribuerad Communication Services-resurs. Skapa en Communication Services-resurs.
- En användaråtkomsttoken för att aktivera anropsklienten. Hämta en användaråtkomsttoken.
- Valfritt: Slutförande av snabbstarten för att komma igång med kompositerna för användargränssnittsbiblioteket.
Mer information finns i iOS-användargränssnittsbiblioteket med öppen källkod och exempelprogramkoden.
Konfigurera CallKit-integrering
Azure Communication Services Calling iOS SDK stöder CallKit-integrering. Du kan aktivera den här integreringen i användargränssnittsbiblioteket genom att konfigurera en instans av CallCompositeCallKitOption
. Mer information finns i Integrera med CallKit.
Ange information om samtalsmottagare för utgående samtal
Om du vill ange information om utgående samtal skapar du en instans av CallKitRemoteInfo
. Om du inte anger CallKitRemoteInfo
visas deltagaridentifierarens råvärde som standard.
Tilldela ett värde för för displayName
att anpassa visningsnamnet för anroparen. Värdet som anges i CallKitRemoteInfo
är exakt hur det visas i den senast uppringda samtalsloggen.
Tilldela cxHandle
även värdet. Det är vad programmet tar emot när användaren ringer tillbaka till kontakten.
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)
Ange information om samtalsmottagare för inkommande samtal
Om du vill ange information om inkommande uppringare skapar du en instans av CallKitOptions
. Om du inte anger CallKitOptions
visas deltagaridentifierarens råvärde som standard.
Tilldela ett värde för för provideRemoteInfo
att anpassa visningsnamnet för anroparen. Värdet som anges i CallKitRemoteInfo
är exakt hur det visas i den senast uppringda samtalsloggen.
Tilldela cxHandle
även värdet. Det är vad programmet tar emot när användaren ringer tillbaka till kontakten.
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
}
Konfigurera providers
Ange en CXProviderConfiguration
instans till CallKitOptions
. Mer information finns i Apples utvecklardokumentation om CXProviderConfiguration.
let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]
Konfigurera en ljudsession
Konfigurera en ljudsession som ska anropas innan du ringer eller accepterar inkommande samtal och innan du återupptar ett samtal som är pausat. Mer information finns i Apples utvecklardokumentation om 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
}
Aktivera CallKit
Om du vill aktivera CallKit skapar du en instans av CallKitOptions
och anger den till 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
)
Hold and Resume API för CallKit integrerat i programmet
För CallKit integrerat i programanvändning hold
och resume
för att hantera samtalstillstånd.
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
}
}