2017-01-06 2 views
2

Используя одно из примеров приложения для видеосвязи, предоставляемое Twilio (VideoCallKitQuickStart), я пытаюсь вызвать входящий вызов, отправив уведомление VoIP в приложение. Но приложение не вызывает входящий вызов. Я также попытался держа App открыто во время отправки уведомления VoIP и приложение падает, бросая НИЖЕ за исключениемЗапуск входящего VoIP-вызова с использованием CallKit и Twilio-Video API

NSInvalidArgumentException: Попытка вставки неимущественного список объектов «PKPushPayload: 0x16e44af0» для ключа полезной нагрузки

Может кто-нибудь, пожалуйста, помогите мне или укажите мне в правильном направлении, как вызвать входящий вызов в приложении, когда получено уведомление VoIP.

Ниже мой код в ViewController.swift файл

func pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!) { 
     // Process the received push 

     self.reportIncomingCall(uuid: UUID(), roomName: "testRoom", completion: nil) 
    } 

func reportIncomingCall(uuid: UUID, roomName: String?, completion: ((NSError?) -> Void)? = nil) { 

    let callHandle = CXHandle(type: .generic, value: roomName ?? "") 
    let callUpdate = CXCallUpdate() 
    callUpdate.remoteHandle = callHandle 
    callUpdate.supportsDTMF = false 
    callUpdate.supportsHolding = true 
    callUpdate.supportsGrouping = false 
    callUpdate.supportsUngrouping = false 
    callUpdate.hasVideo = true 

    callKitProvider.reportNewIncomingCall(with: uuid, update: callUpdate) { error in 
     if error == nil { 
      NSLog("Incoming call successfully reported.") 
     } else { 
      NSLog("Failed to report incoming call successfully: \(error?.localizedDescription).") 
     } 
     completion?(error as? NSError) 
    } 
} 
+0

Вы интегрировали видеозвонок с помощью функции «Принять/отклонить» с помощью Twilio Video? Пожалуйста, помогите мне. Является ли это возможным? и как я могу это сделать? Пожалуйста, дайте мне знать –

+0

@NikunjJadav Я предлагаю вам начать здесь, https://github.com/twilio/video-quickstart-swift – user44776

ответ

0

Twilio разработчик евангелист здесь.

Я не очень хорошо разбираюсь в iOS, но, взглянув на документацию для PKPushRegistryDelegate, похоже, что ваше определение функции pushRegistry неверно.

Это должно быть

func pushRegistry(_ registry: PKPushRegistry, 
    didReceiveIncomingPushWith payload: PKPushPayload, 
    forType type: PKPushType) 

То есть, didReceiveIncomingPushWith, а не didReceiveIncomingPushWithPayload.

В качестве альтернативы, это имеет какое-либо отношение к тому, что вы отливаете forType в String?

0

Swift 3,0

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, forType type: PKPushType) { 
    NSLog("pushRegistry:didReceiveIncomingPushWithPayload:forType:") 

    if (type == PKPushType.voIP) { 
     print(payload.dictionaryPayload) 
     VoiceClient.sharedInstance().handleNotification(payload.dictionaryPayload, delegate: self) 
    } 
} 

И пожалуйста, не вносить никаких изменений в полезной нагрузке, не изменяя его для того, чтобы SDK для извлечения информации о входящем вызове из полезной нагрузки, так что SDK может уведомить приложение с входящими вызовами

Смежные вопросы