Несколько дней назад я сделал то же самое.
Для iOS вы можете использовать PushKit и CallKit следующими способами: -
0,1. Включите фоновый режим, а также проверьте voip.
- Импорт Pushkit и реализация функций PKPushRegistryDelegate.
Зарегистрируйте pushkit следующим образом: -
func registerPushkitToken() -> Void {
pushRegistry = PKPushRegistry.init(queue: DispatchQueue.main)
pushRegistry?.delegate = self
pushRegistry?.desiredPushTypes = [.voIP]
}
3. Реализация функции токена
func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials:
PKPushCredentials, for type: PKPushType) {
let tokenChars = pushCredentials.token.hexString()
}
Реализовать следующую функцию для разбора уведомления
func pushRegistry (_ реестр: PKPushRegistry, didReceiveIncomingPush с полезной нагрузкой: PKPushPayload, для типа: PKPushType) {
если пусть userInfo = payload.dictionaryPayload ["userInfo"] как? [AnyHashable: Любые] {
}
}
Реализация делегатских функций провайдера:
let providerConfiguration = CXProviderConfiguration (localizedName: appName)
providerConfiguration.supportsVideo = true
providerConfiguration.maximumCallsPerCallGroup = 1
providerConfiguration.maximumCallGroups = 1
providerConfiguration.supportedHandleTypes = [.generic]
Реализация функций CXProviderDelegate
func providerDidReset(_ provider: CXProvider) {
print("Function: \(#function), line: \(#line)")
sessionPool.removeAll()
}
func provider(_ provider: CXProvider, perform action: CXStartCallAction) {
print("Function: \(#function), line: \(#line)")
guard let session = pairedSession(of:action.callUUID) else {
action.fail()
return
}
let callUpdate = CXCallUpdate()
callUpdate.remoteHandle = action.handle
callUpdate.hasVideo = true
callUpdate.localizedCallerName = callDetails.dispalyName;
callUpdate.supportsDTMF = false
provider.reportCall(with: action.callUUID, updated: callUpdate)
delegate?.callCenter(self, startCall: session)
action.fulfill()
}
Вы также можете сослаться на мой пост здесь. https://stackoverflow.com/questions/54197721/how-to-integrate-callkit-with-agora-voip-in-swift-4-ios/54647666#54647666