CallKit integreren in de UI-bibliotheek
De Ui-bibliotheek van Azure Communication Services biedt out-of-the-box-ondersteuning voor CallKit. Ontwikkelaars kunnen hun eigen configuratie opgeven voor CallKit die moet worden gebruikt voor de UI-bibliotheek.
In dit artikel leert u hoe u CallKit correct instelt met behulp van de UI-bibliotheek in uw toepassing.
Vereisten
- Een fysiek iOS-apparaat. Een iOS-simulator biedt geen ondersteuning voor CallKit-functionaliteit.
- Een Azure-account met een actief abonnement. Gratis een account maken
- Een geïmplementeerde Communication Services-resource. Een Communication Services-resource maken.
- Een gebruikerstoegangstoken om de aanroepclient in te schakelen. Een toegangstoken voor gebruikers ophalen.
- Optioneel: Voltooiing van de quickstart om aan de slag te gaan met de samengestelde UI-bibliotheek.
Zie de opensource iOS UI-bibliotheek en de voorbeeldtoepassingscode voor meer informatie.
CallKit-integratie instellen
De Azure Communication Services Calling iOS SDK ondersteunt CallKit-integratie. U kunt deze integratie inschakelen in de UI-bibliotheek door een exemplaar van CallCompositeCallKitOption
. Zie Integreren met CallKit voor meer informatie.
Gegevens van geadresseerden voor uitgaande oproepen opgeven
Als u uitgaande oproepgegevens wilt opgeven, maakt u een exemplaar van CallKitRemoteInfo
. Als u dit niet opgeeft CallKitRemoteInfo
, wordt de onbewerkte waarde van de deelnemer-id standaard weergegeven.
Wijs een waarde toe om displayName
de weergavenaam voor de aanroeper aan te passen. De opgegeven CallKitRemoteInfo
waarde is precies hoe deze wordt weergegeven in het laatst gekozen oproeplogboek.
Wijs ook de cxHandle
waarde toe. Dit is wat de toepassing ontvangt wanneer de gebruiker terugbelt op die contactpersoon.
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)
Gegevens van geadresseerden voor inkomende oproepen opgeven
Als u binnenkomende oproepoproepgegevens wilt opgeven, maakt u een exemplaar van CallKitOptions
. Als u dit niet opgeeft CallKitOptions
, wordt de onbewerkte waarde van de deelnemer-id standaard weergegeven.
Wijs een waarde toe om provideRemoteInfo
de weergavenaam voor de aanroeper aan te passen. De opgegeven CallKitRemoteInfo
waarde is precies hoe deze wordt weergegeven in het laatst gekozen oproeplogboek.
Wijs ook de cxHandle
waarde toe. Dit is wat de toepassing ontvangt wanneer de gebruiker terugbelt op die contactpersoon.
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
}
Providers configureren
Geef, indien nodig, een CXProviderConfiguration
exemplaar op voor CallKitOptions
. Zie de Apple-documentatie voor ontwikkelaars over CXProviderConfiguration voor meer informatie.
let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]
Een audiosessie configureren
Configureer een audiosessie die moet worden aangeroepen voordat u binnenkomende oproepen plaatst of accepteert en voordat u een gesprek in de wachtstand hervat. Zie de Apple-documentatie voor ontwikkelaars over AVAudioSession voor meer informatie.
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 inschakelen
Als u CallKit wilt inschakelen, maakt u een exemplaar van CallKitOptions
en geeft u deze op.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
)
Wacht- en cv-API voor CallKit geïntegreerd in de toepassing
Voor CallKit geïntegreerd in toepassingsgebruik hold
en resume
voor het beheren van de oproepstatus.
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
}
}