android – 使用webRTC的Cordova点对点应用程序

我必须构建一个跨平台的点对点应用程序(至少支持iOS和Android).为此,我使用Cordova.目前我可以使用ZeroConf插件进行服务发现.现在我想在发现上建立点对点连接.

已经使用Titanium制作了一个等效的应用程序.发现后,它使用套接字连接到发现的计算机.

/*
    Service Discovery resulting in an IP address and port number
    ...
*/

socket = Titanium.Network.createTCPSocket({
    hostName: discoveredHostName,
    port: discoveredPort,
    mode: Titanium.Network.READ_WRITE_MODE
});
...
socket.connect();

但是,我需要将应用程序转换为Cordova,因此我需要替代Titanium版本中使用的那些套接字.使用中间服务器不是一种选择(仅用于发信号通知它,而不是用于消息交换).

我的导师建议使用webRTC,因为它是一个简单的标准Javascript API,提到它适用于iOS,参考official website which metions iOS support.我实现了它,在浏览器中测试它,它就像一个魅力.

但是,在iOS上测试时,webRTC不起作用:

var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.msRTCPeerConnection;

这适用于浏览器,但在iOS上,这会导致RTCPeerConnection未定义.我认为我遗漏了一些东西,官方网站提到iOS支持?

解决方法:

Safari,MacOS和iOS都不支持WebRTC:

http://caniuse.com/#search=webrtc

引用的文章(https://webrtc.org/native-code/ios/)是指iOS上的本机开发,我认为是使用实现WebRTC API的库或SDK.

使用Cordova Framework,您无法在启用WebView WebRTC时本机地使用,但您必须采用特定的插件或将Cordova WebView与Crosswalk(例如)联系.

在iOS上,实现w3c WebRTC API的插件是iosrtc,但它有一些待处理的issuesvideo元素实现的一些限制.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...