Я хочу интегрировать Apple Callkit с Agora VOiP в Swift 4 iOS.
Пожалуйста, дайте любые предложения Как я могу это сделать.
Я хочу интегрировать Apple Callkit с Agora VOiP в Swift 4 iOS.
Пожалуйста, дайте любые предложения Как я могу это сделать.
Чтобы интегрировать voip, вам придется использовать и callKit, и PushKit.
CallKit будет использоваться для отображения собственного экрана вызова и обработчиков во время перехода в вызове, а Pushkit будет использоваться для вызова приложения, когда приложение будет уничтожено.
Его легко интегрировать:-
Включите фоновые режимы в info.plist и установите флажок Приложение предоставляет услуги передачи голоса по IP. Импортируйте Callkit в viewdidload/ любой метод инициализации любого класса, который вы будете использовать для реализации функций CXProviderDelegate. Благодаря этому вы будете настраивать объекты вызова, когда сообщать о входящем звонке, принимать действия, отклонять действие и т. д.
Реализовать следующие функции:
func providerDidReset(_ provider: CXProvider) {
}
func provider(_ provider: CXProvider, perform action: CXAnswerCallAction) {
action.fulfill()
}
func provider(_ provider: CXProvider, perform action: CXEndCallAction) {
action.fulfill()
}
Теперь импортируйте Pushkit и реализуйте функции PKPushRegistryDelegate.
а.) Настройте pushkit следующим образом
let registry = PKPushRegistry(queue: nil)
registry.delegate = self
registry.desiredPushTypes = [PKPushType.voIP]
б.) реализовать функцию токена pushkit. Возможно, вам придется обновить сервер для доставки push-уведомлений voip.
func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: PKPushCredentials, for type: PKPushType) {
print(pushCredentials.token.map { String(format: "%02.2hhx", $0) }.joined())
}
в. Теперь, когда вы получаете входящее уведомление, реализуйте эту функцию
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void) {
let config = CXProviderConfiguration(localizedName: "App name")
config.iconTemplateImageData = UIImagePNGRepresentation(UIImage(named: "any image name")!)
config.supportsVideo = true;
let provider = CXProvider(configuration: config)
provider.setDelegate(self, queue: nil)
let update = CXCallUpdate()
update.remoteHandle = CXHandle(type: .generic, value: "Caller name")
update.hasVideo = true
provider.reportNewIncomingCall(with: UUID(), update: update, completion: { error in })
}
Это был базовый код поверх представления. Вам нужно будет добавить кейсы для имитации входящего звонка и другие настройки. Надеюсь, это поможет вам двигаться дальше.