2016-03-03 7 views
4

Мне нужно создать одноплатформенное однопользовательское приложение (по крайней мере, поддержку iOS & Android). Для этого я использую Кордову. В настоящее время я могу выполнить обнаружение сервисов с помощью плагина ZeroConf. Теперь Я хотел бы сделать одноранговое соединение при обнаружении.Кордовое одноранговое приложение с использованием webRTC

Эквивалентное приложение уже создано с использованием 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(); 

Однако мне нужно перевести приложение в Кордова, поэтому я буду нужна альтернатива для тех сокетов, используемых в версии Titanium. Использование промежуточного сервера не является опцией (только для сигнализации может использоваться, а не для обмена сообщениями).

Мой наставник посоветовал использовать webRTC, поскольку это простой стандартный Javascript API, упоминающий, что он работает на iOS, ссылаясь на official website which metions iOS support. Я реализовал его, тестируя его в браузере, и он работает как шарм.

Однако при тестировании его на IOS WebRTC не работает:

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

Это работает в браузере, но прошивкой это приводит к RTCPeerConnection быть undefined. Я предполагаю, что у меня что-то не хватает, поскольку на официальном сайте упоминается поддержка iOS?

ответ

4

WebRTC является не поддерживается на Safari, как MacOS и IOS:

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

В статье цитируется (https://webrtc.org/native-code/ios/) относится к природному развитию на прошивке с помощью, я думаю, , библиотеку или SDK, который реализует API WebRTC.

Использование Cordova Framework вы не можете полагаться на WebView WebRTC, но вам необходимо принять определенный плагин или подзагонить Cordova WebView с помощью Crosswalk (например).

На iOS плагин, реализующий w3c API WebRTC, равен iosrtc, но в нем есть issues отложенные и некоторые ограничения на реализацию элемента video.

+0

Хорошо, вот что я думал, спасибо! Определенно это не облегчит .. Я видел плагин WebRTC для Кордовы, попробует. Существует ли какой-либо плагин webRTC, совместимый с iOS, а также Android? На стороне примечания: Это означает, что нельзя использовать webRTC с возможностью взаимодействия между iOS, Android и ПК? (Это выходит за рамки моей задачи, кроме чистого любопытства). Это плагин, о котором я говорю: https://www.npmjs.com/package/cordova-plugin-webrtc – HyperZ

+0

Лично я разработал приложение Cordova/Ionic, используя версию Crosswalk для Android, и используя cordova-plugin-iosrtc для iOS. Существует несколько плагинов Cordova WebRTC, но у каждого из них есть ограничение. Благодаря WebRTC возможно взаимодействие между различными устройствами на разных платформах: мои приложения (веб, Android и iOS) успешно взаимодействуют между собой. – beaver

+0

Проблема заключается в том, что мне придется интегрировать мою работу в большой проект, идея состоит в том, что впоследствии весь проект не привязан к Кордове (или Ионной), но может быть запущен с использованием версии Titanium или версии Cordova сетевой части.Я боюсь, что сделаю весь проект привязанным к Кордове, поэтому, поскольку мне нужно только отправлять текст, простой плагин (идеально совместимый с iOS и Android), обеспечивающий канал передачи данных, был бы приятным, но, похоже, не существует , – HyperZ