Последние несколько лет в индустрии активно развивается WebRTC — технология, которая позволяет делать голосовые и видеозвонки прямо из браузеров. Но мало кто знает, что эта же технология может быть использована в нативных мобильных приложениях и основанных на них SDK. В своем докладе я хочу рассказать про опыт заворачивания существующих Android и iOS SDK в React Native:
— Как поддерживать несколько разных архитектур
— Как работать с нативными виджетами, такими как «вывод видео»
— Синхронизация event loop между C-реализацией и — JavaScript движком React Native
— Планы на будущее: React Native WebRTC
Report
Share
Report
Share
1 of 81
Download to read offline
More Related Content
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
2. Что сейчас будет?
Рассказывает Григорий Петров
Специализация Руководство разработкой
Чем занимается Технический евангелист
Опыт Более 15 лет
Время выступления 45 минут
Вопросы В конце выступления, 15 минут
2
6. Проблема?
Кроссплатформенные видео и голос
Flash для веб, AIR для остального
Низкое качество звука и видео
Media Server и Media Gateway стоят дорого
6
7. Проблема?
Кроссплатформенные видео и голос
Flash для веб, AIR для остального
Низкое качество звука и видео
Media Server и Media Gateway стоят дорого
Трудно интегрировать в приложения
7
13. Что такое WebRTC?
●JavaScript API для браузеров
oВидео и голос, запись и воспроизведение
oСвязь peer-to-peer в реальном времени
13
14. Что такое WebRTC?
●JavaScript API для браузеров
oВидео и голос, запись и воспроизведение
oСвязь peer-to-peer в реальном времени
●SRTP, SDP, Opus, G.711, H.264/5, VP8/9
14
15. Что такое WebRTC?
●JavaScript API для браузеров
oВидео и голос, запись и воспроизведение
oСвязь peer-to-peer в реальном времени
●SRTP, SDP, Opus, G.711, H.264/5, VP8/9
●Внешний сигнальный протокол
15
16. Зачем оно в аппе?
Потому что все хотят в стор!
16
23. Еще один способ?
Нативно Android API/Java, Cocoa/Objective-C/Swift
Phonegap JJavaSScript, собственный HTML UI
Titanium, NativeScript JJavaSScript, нативный UI
Unity C#, JJavaSScript, 2D/3D для игр
Marmalade C++, 2D для игр
Xamarin C#, нативный UI + собственный UI
23
24. Еще один способ?
Нативно Android API/Java, Cocoa/Objective-C/Swift
Phonegap JJavaSScript, собственный HTML UI
Titanium, NativeScript JJavaSScript, нативный UI
Unity C#, JJavaSScript, 2D/3D для игр
Marmalade C++, 2D для игр
Xamarin C#, нативный UI + собственный UI
React Native JJavaSScript, нативный UI
24
38. React Native изнутри
●Android и iOS проекты
●"main" для Java и Objective-C
●Нативная либка React Native
●Ваш JavaScript код
38
39. React Native изнутри
●Android и iOS проекты
●"main" для Java и Objective-C
●Нативная либка React Native
●Ваш JavaScript код
Самый простой способ туда влезть
39
40. React Native изнутри
●Android и iOS проекты
●"main" для Java и Objective-C
●Нативная либка React Native
●Ваш JavaScript код
Самый простой способ туда влезть
Но не для SDK
40
41. Что есть для SDK?
React Native Module
React Native UI Component
41
42. Что есть для SDK?
React Native Module
React Native UI Component
Создаете свой класс и регистрируем его в
main (макросом в iOS)
42
46. Первая засада
Проект Android/iOS
Он не знает про node_modules
Можно попросить разработчика добавлять
CI будет очень недовольно
Поэтому React Native включил в себя rnpm
46
61. Как наш код видит JavaScript
Наш код получает параметры методов
61
62. Как наш код видит JavaScript
Наш код получает параметры методов
Может вызывать переданные функции
62
63. Как наш код видит JavaScript
Наш код получает параметры методов
Может вызывать переданные функции
Имеет доступ к переданным объектам
63
64. Как наш код видит JavaScript
Наш код получает параметры методов
Может вызывать переданные функции
Имеет доступ к переданным объектам
Может использовать EventEmitter
64
65. React Native UI Component
UIView на iOS и View на Android
65
74. Хозяйке на заметку
●Все что занимает время — в потоки
●Эвристика rnpm плохо документирована
74
75. Хозяйке на заметку
●Все что занимает время — в потоки
●Эвристика rnpm плохо документирована
●Креш в плюсах нас огорчает
75
76. Хозяйке на заметку
●Все что занимает время — в потоки
●Эвристика rnpm плохо документирована
●Креш в плюсах нас огорчает
●64-битный React Native: месяц от роду
76
77. Хозяйке на заметку
●Все что занимает время — в потоки
●Эвристика rnpm плохо документирована
●Креш в плюсах нас огорчает
●64-битный React Native: месяц от роду
●Зависимости. Обновил – и не работает
77
78. Хозяйке на заметку
●Все что занимает время — в потоки
●Эвристика rnpm плохо документирована
●Креш в плюсах нас огорчает
●64-битный React Native: месяц от роду
●Зависимости. Обновил – и не работает
●Тяжело сделать Hot Reloading
78
79. Хозяйке на заметку
●Все что занимает время — в потоки
●Эвристика rnpm плохо документирована
●Креш в плюсах нас огорчает
●64-битный React Native: месяц от роду
●Зависимости. Обновил – и не работает
●Тяжело сделать Hot Reloading
●Пока нет поддержки permissions
79