cordova-plugin-iosrtc无法在movile ionic js webrtc app上使用sip.js 0.11

问题描述 投票:0回答:1

我正在开发基于Ionic / AngularJS技术的webrtc调用/视频聊天应用程序。该应用程序与sip.js一起使用PBX服务器上的呼叫操作。对于IOS与WebRtc的集成,app可与cordova-plugin-iosrtc配合使用。当我尝试使用PBX连接来呼叫或接听电话时,应用程序会在sip.js上使用cordova-plugin-iosrtc两种可能的使用模式时抛出错误

A)当我尝试使用cordova-plugin-iosrtc工作在对等连接iOS插件模式....

telephoneService.js(Angular JS)

var pc = new cordova.plugins.iosrtc.RTCPeerConnection({
    iceServers: []
});

cordova.plugins.iosrtc.getUserMedia(
  // constraints
  { audio: true, video: true },
  // success callback
  function (stream) {
    console.log('got local MediaStream: ', stream);
    pc.addStream(stream);
  },
  // failure callback
  function (error) {
    console.error('getUserMedia failed: ', error);
  }
);

var sessionDescriptionHandlerOptions = {

                constraints: {
                    audio: audioId,
                    video: videoId
                },


                media: {
                    local: {
                      audio: document.getElementById('localAudio')
                    },
                    remote: {
                      audio: document.getElementById('remoteAudio')
                    }
                },


            extraHeaders: extraHeaders

            }

}

userAgent.invite('sipusertocall', sessionDescriptionHandlerOptions);

收到下一个错误:

undefined is not a object evaluating 'environment.navigator.mediaDevices.getUserMedia' (sip.js lib)

B)

cordova.plugins.iosrtc.registerGlobals(); use iosrtc plugin with webrtc native api (navigator.mediaDevice.getUserMedia(), ....)

    navigator.mediaDevices.getUserMedia(
     function (stream) {
        console.log('got local MediaStream: ', stream);

        window.stream = stream;
      },
      // failure callback
      function (error) {
        console.error('getUserMedia failed: ', error);
      }
    )

    var sessionDescriptionHandlerOptions = {

                    constraints: {
                        audio: audioId,
                        video: videoId
                    },


                    media: {
                        local: {
                          audio: document.getElementById('localAudio')
                        },
                        remote: {
                          audio: document.getElementById('remoteAudio')
                        }
                    },


                extraHeaders: extraHeaders

            }

    userAgent.invite('sipusertocall', sessionDescriptionHandlerOptions);

App receive from sip.js next error from PBX: Failed:WebRTC Error 

客户端同时显示下一个错误:

必须使用RTCSessionDescription实例作为第一个参数调用setLocalDescription()

ionic-framework webrtc cordova-plugins freeswitch
1个回答
0
投票

所以较新的SIP.js实际上是在传递一个RTCSessionDescriptionInit的实例,虽然它有一个类似的结构:{sdp:...,类型:...}到一个RTCSessionDescription init不被cordova iosrtc实现接受。

我已经以SIP.js的自定义SDH的形式为此创建了一个修复程序(因为我遇到了完全相同的问题)。我的自定义SDH在将对象传递到getLocationDescription和setRemoteDescription之前将其转换为新的RTCSessionDescription(...)。

链接到SDH插件:https://github.com/iotum/cordova-ios-session-description-handler

希望这可以帮助!韦斯

© www.soinside.com 2019 - 2024. All rights reserved.