как интегрировать Callkit с Agora VOiP в Swift 4 iOS?

Я хочу интегрировать Apple Callkit с Agora VOiP в Swift 4 iOS.

Пожалуйста, дайте любые предложения Как я могу это сделать.


person Chetan Pote    schedule 15.01.2019    source источник
comment
Добро пожаловать в StackOverflow. Как написано, этот вопрос слишком широк и открыт. Интеграция может означать многое, и этот вопрос трудно отличить от запроса очень большого количества бесплатного кода. Вам нужно сузить это до конкретной проблемы, с которой вы столкнулись, на которую можно ответить каноническим ответом. Я рекомендую начать здесь: developer.apple.com/videos/play/wwdc2016/230< /а>   -  person Rob Napier    schedule 15.01.2019


Ответы (1)


Чтобы интегрировать 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 })
    }
  1. Перейдите на портал разработчика, сгенерируйте сертификат VoIP Services и установите его.
  2. Включите push-уведомления в разделе «Возможности».

Это был базовый код поверх представления. Вам нужно будет добавить кейсы для имитации входящего звонка и другие настройки. Надеюсь, это поможет вам двигаться дальше.

person vrat2801    schedule 12.02.2019
comment
я интегрирую agora.io в одно из своих приложений. и обрабатывать состояние приложения с помощью уведомления Firebase. но когда мое приложение убито и получено уведомление о том, что экран вызова времени не вызывается. - person Rahul Phate; 10.12.2019
comment
Убедитесь, что вы используете Pushkit для регистрации токена устройства. Проверьте токены устройств, у вас будут разные токены устройств для push-уведомлений и уведомлений VOIP. Кроме того, убедитесь, что вы сообщаете о входящих вызовах в случае получения уведомлений VOIP с помощью CXProvider до завершения функции didReceiveIncomingPushWith(), иначе, начиная с iOS 13, система не будет отображать ваши звонки. Обязательно использовать CallKit с Pushkit, иначе система не покажет никаких вызовов и даже может заблокировать VOIP-сообщения на устройстве. - person vrat2801; 11.12.2019
comment
я реализую push kit. но у меня есть один запрос, где я загружаю этот voip-сертификат .p12 для уведомления - person Rahul Phate; 11.12.2019