Sinch не поддерживает видеозвонок в Swift - PullRequest
0 голосов
/ 07 мая 2018

вот мой код. Я преобразую этот код из цели c в быстрый переход от синхротестирования. Предоставление части Objective-C может быть интересно, но она не поддерживает видеовызов. когда я принимаю звонок, аудио работает нормально. но видео не отправляется на другое устройство. Пожалуйста, помогите мне, если у кого-нибудь есть пример кода для swift, затем отправьте или попробуйте исправить это с помощью этого кода .. спасибо

// MARK: - Load
override func viewDidLoad() {
    super.viewDidLoad()

    if call?.direction == SINCallDirection.incoming {
        self.callStateLabel.text = ""
        self.showButtons(EButtonsBar.kButtonsAnswerDecline)
        //audioController().startPlayingSoundFile(path(forSound: "incoming.wav"), loop: true)
    } else {
        self.callStateLabel.text = "calling..."
        self.showButtons(EButtonsBar.kButtonsHangup)
    }
    if  (call?.details.isVideoOffered)! {
        localVideoView.addSubview(videoController().localView())
        localVideoFullscreenGestureRecognizer.require(toFail: switchCameraGestureRecognizer)
        videoController().localView().addGestureRecognizer(localVideoFullscreenGestureRecognizer)
        videoController().remoteView().addGestureRecognizer(remoteVideoFullscreenGestureRecognizer)
    }
}

@IBAction func accept(sender: AnyObject) {
    call?.answer()

}

@IBAction func decline(sender: AnyObject) {
    call?.hangup()
    dismiss(animated: true, completion: nil)
}


@IBAction func hangup(sender: AnyObject) {
    call?.hangup()
    dismiss(animated: true, completion: nil)
}

func audioController() -> SINAudioController{
    return Global.client.audioController()

}

func videoController() -> SINVideoController {
    return Global.client.videoController()
}

1 Ответ

0 голосов
/ 07 мая 2018

Добавьте 2 представления в вашем контроллере представления. Один предназначен для локального просмотра видео, а другой - для удаленного видео. Установите его розетки для просмотра контроллера. У меня есть рабочий пример звукового вызова, и я просто добавляю эти вещи в свой контроллер просмотра вызовов.

func videoController() -> SINVideoController {
    return appDeletgate.client.videoController()
}

В viewdidload проверьте, предлагается ли видео по вызову.

if call.details.isVideoOffered {

    localVideoView.addSubview(videoController().localView())
    //localVideoFullscreenGestureRecognizer.require(toFail: switchCameraGestureRecognizer)
    //videoController().localView().addGestureRecognizer(localVideoFullscreenGestureRecognizer)
    //videoController().remoteView().addGestureRecognizer(remoteVideoFullscreenGestureRecognizer)
}

Добавьте этот метод для добавления удаленного видео в поле зрения.

func callDidAddVideoTrack(_ call: SINCall?) {
    remoteVideoView.addSubview(videoController().remoteView())
}

Также убедитесь, что вы добавили эти 2 ключа в info.plist

<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) need to access your camera for video call.</string>
<key>NSMicrophoneUsageDescription</key>
<string>$(PRODUCT_NAME) uses the Microphone for calling</string>

И это, наконец, то, как я это называю.

let call: SINCall? = self.callClient().callUserVideo(withId: recipientName) //self.callClient().callUser(withId: recipientName)
let callVC  = mainStoryBoard.instantiateViewController(withIdentifier: "CallVC") as! CallVC
callVC.call = call
self.navigationController?.pushViewController(callVC, animated: true)
...