首页 > 解决方案 > Twilio 通话暂停 ios

问题描述

我试图在用户离开视图时立即暂停 Twillio 呼叫,无论是由用户还是被任何中断(如接到另一个电话)。

func addObservers() {
          NotificationCenter.default.addObserver(self,
                                                 selector: #selector(applicationDidBecomeActive),
                                                 name: UIApplication.didBecomeActiveNotification,
                                                 object: nil)
        
    
    NotificationCenter.default.addObserver(self,
                                           selector: #selector(applicationDidInActive),
                                           name: UIApplication.didEnterBackgroundNotification,
                                           object: nil)
    }

func removeObservers() {
        NotificationCenter.default.removeObserver(self, name: UIApplication.didBecomeActiveNotification, object: nil)
        NotificationCenter.default.removeObserver(self, name: UIApplication.didEnterBackgroundNotification, object: nil)

    }

@objc fileprivate func applicationDidBecomeActive() {
    printLog(log: "=============applicationDidBecomeActive========")
        holdCall(onHold: false)

    }
@objc fileprivate func applicationDidInActive() {
    printLog(log: "==============applicationDidInActive============")
        holdCall(onHold: true)
   
    }

在 android 中,相同的行为会以某种方式触发在后端注册的事件trackUnsubscribed

room.on('trackUnsubscribed', function (track, participant) {
            isJoin = true;
            dePopulatScreen();
            if ( $('#video-error').hasClass("display-view") ) {
                $('#video-error').removeClass('display-view');
            }
            $('#video-error #supported div img').css('display', 'none');
            document.getElementById('video-error-message').innerHTML = 'Call has been placed on hold by the patient. Please wait it will automatically reconnect shortly.'
            detachTracks([track]);
        });

我怎样才能在ios中实现同样的效果

标签: iosswifttwilio

解决方案


为了保持通话,我们需要将音频和视频流取消发布和发布

if let participant = self.room?.localParticipant, let videoTrack = self.localVideoTrack , let audioTrack = self.localAudioTrack{
    if(onHold){
       participant.unpublishVideoTrack(videoTrack)
        participant.unpublishAudioTrack(audioTrack)
    }
    else{
       participant.publishVideoTrack(videoTrack)
        participant.publishAudioTrack(audioTrack)

    }
}

推荐阅读