Integrace CallKitu do knihovny uživatelského rozhraní
Knihovna uživatelského rozhraní služby Azure Communication Services poskytuje připravenou podporu pro CallKit. Vývojáři můžou poskytnout vlastní konfiguraci pro CallKit, která se má použít pro knihovnu uživatelského rozhraní.
V tomto článku se dozvíte, jak správně nastavit CallKit pomocí knihovny uživatelského rozhraní ve vaší aplikaci.
Požadavky
- Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
- Nasazený prostředek komunikační služby. Vytvořte prostředek komunikační služby.
- Přístupový token uživatele, který povolí klienta volání. Získejte přístupový token uživatele.
- Volitelné: Dokončení rychlého startu pro začátek práce se složenými knihovnami uživatelského rozhraní.
Další informace najdete v opensourcové knihovně uživatelského rozhraní iOS a ukázkovém kódu aplikace.
Nastavení integrace CallKitu
Sada Azure Communication Services Volající iOS SDK podporuje integraci CallKitu. Tuto integraci můžete povolit v knihovně uživatelského rozhraní konfigurací instance CallCompositeCallKitOption
. Další informace naleznete v tématu Integrace s CallKit.
Zadání informací o příjemci hovorů pro odchozí hovory
Chcete-li zadat informace o odchozích hovorech, vytvořte instanci CallKitRemoteInfo
. Pokud ho nezadáte CallKitRemoteInfo
, zobrazí se ve výchozím nastavení nezpracovaná hodnota identifikátoru účastníka.
Přiřaďte hodnotu pro displayName
přizpůsobení zobrazovaného jména volajícího. Hodnota zadaná CallKitRemoteInfo
ve formátu přesně odpovídá tomu, jak se zobrazuje v protokolu posledního vytáčeného volání.
Také přiřaďte cxHandle
hodnotu. Je to, co aplikace obdrží, když uživatel zavolá zpět na tento kontakt.
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)
Zadání informací o příjemci hovorů pro příchozí hovory
Chcete-li zadat informace o volajícím příchozího volání, vytvořte instanci CallKitOptions
. Pokud ho nezadáte CallKitOptions
, zobrazí se ve výchozím nastavení nezpracovaná hodnota identifikátoru účastníka.
Přiřaďte hodnotu pro provideRemoteInfo
přizpůsobení zobrazovaného jména volajícího. Hodnota zadaná CallKitRemoteInfo
ve formátu přesně odpovídá tomu, jak se zobrazuje v protokolu posledního vytáčeného volání.
Také přiřaďte cxHandle
hodnotu. Je to, co aplikace obdrží, když uživatel zavolá zpět na tento kontakt.
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
}
Konfigurace poskytovatelů
Podle potřeby zadejte CXProviderConfiguration
instanci .CallKitOptions
Další informace najdete v dokumentaci pro vývojáře Apple o CXProviderConfiguration.
let providerConfig = CXProviderConfiguration()
providerConfig.supportsVideo = true
providerConfig.maximumCallGroups = 1
providerConfig.maximumCallsPerCallGroup = 1
providerConfig.includesCallsInRecents = true
providerConfig.supportedHandleTypes = [.phoneNumber, .generic]
Konfigurace zvukové relace
Nakonfigurujte volat zvukovou relaci před umístěním nebo přijetím příchozího hovoru a před pokračováním hovoru, který je přidržený. Další informace najdete v dokumentaci pro vývojáře Apple týkající se 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
}
Povolení CallKitu
Chcete-li povolit CallKit, vytvořte instanci CallKitOptions
a poskytněte ji .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
)
Rozhraní API pro blokování a obnovení pro CallKit integrované v aplikaci
Pro CallKit integrovaný do aplikace se používají hold
a resume
spravují stav volání.
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
}
}