我必須構建一個跨平臺的對等應用程序(至少支持iOS & Android)。爲此,我正在使用科爾多瓦。目前我可以使用ZeroConf插件進行服務發現。現在我想要發現一個點對點連接。使用web的科爾多瓦對等應用程序RTC
已經使用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();
然而,我需要翻譯的應用科爾多瓦,因此,我需要在鈦版本中使用這些插槽的替代品。使用中間服務器不是一種選擇(僅用於發送可能使用的信號,不用於消息交換)。
我的導師建議使用webRTC,因爲它是一個簡單的標準JavaScript API,提及它適用於iOS,涉及official website which metions iOS support。我實現了它,在瀏覽器中測試它,它的功能就像一個魅力。
然而,在iOS的WebRTC測試它不工作時:
var RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.msRTCPeerConnection;
這個工程在瀏覽器,但在iOS這導致RTCPeerConnection
是undefined
。 我想我錯過了一些東西,因爲官方網站提到iOS支持?
好的,這就是我想的,謝謝!當然,這不會讓它變得更容易..我看到一個Cordova的WebRTC插件,會試試看。是否存在一些兼容iOS和Android的webRTC插件?請注意:這意味着無法使用webRTC與iOS,Android和PC之間的互操作性? (這超出了我的任務範圍,但純粹是好奇心)。這是我正在談論的插件:https://www.npmjs.com/package/cordova-plugin-webrtc – HyperZ
我個人開發了一個使用適用於Android版Crosswalk的Cordova/Ionic應用程序,並使用cordova-plugin-iosrtc iOS版本。有幾個cordova WebRTC插件,但每個插件都有限制。 WebRTC使不同平臺上的不同設備之間的互操作性成爲可能:我的應用程序(網絡,Android和iOS)成功地相互作用。 – beaver
問題是我將不得不將我的工作集成到一個大型項目中,然後整個項目不會綁定到Cordova(或Ionic),而是可以使用Titanium版本或網絡部分的Cordova版本運行。恐怕我會把整個項目綁定到科爾多瓦,因此,我只需要能夠發送文本,一個簡單的插件(理想情況下與iOS和Android兼容)提供數據通道會很好,但似乎並不存在。 – HyperZ