Procházet zdrojové kódy

Define React Native as a type of browser

dev1
Lyubomir Marinov před 9 roky
rodič
revize
026c1b2f72
2 změnil soubory, kde provedl 30 přidání a 2 odebrání
  1. 21
    0
      modules/RTC/RTCBrowserType.js
  2. 9
    2
      modules/RTC/RTCUtils.js

+ 21
- 0
modules/RTC/RTCBrowserType.js Zobrazit soubor

@@ -20,6 +20,8 @@ var RTCBrowserType = {
20 20
 
21 21
     RTC_BROWSER_NWJS: "rtc_browser.nwjs",
22 22
 
23
+    RTC_BROWSER_REACT_NATIVE: "rtc_browser.react-native",
24
+
23 25
     getBrowserType: function () {
24 26
         return currentBrowser;
25 27
     },
@@ -45,6 +47,9 @@ var RTCBrowserType = {
45 47
     isNWJS: function () {
46 48
         return currentBrowser === RTCBrowserType.RTC_BROWSER_NWJS;
47 49
     },
50
+    isReactNative: function () {
51
+        return currentBrowser === RTCBrowserType.RTC_BROWSER_REACT_NATIVE;
52
+    },
48 53
     isTemasysPluginUsed: function () {
49 54
         return RTCBrowserType.isIExplorer() || RTCBrowserType.isSafari();
50 55
     },
@@ -163,9 +168,25 @@ function detectNWJS (){
163 168
     return null;
164 169
 }
165 170
 
171
+function detectReactNative() {
172
+    var match
173
+        = navigator.userAgent.match(/\b(react[ \t_-]*native)(?:\/(\S+))?/i);
174
+    var version;
175
+    if (match) {
176
+        currentBrowser = RTCBrowserType.RTC_BROWSER_REACT_NATIVE;
177
+        if (match.length > 2) {
178
+            version = match[2];
179
+        }
180
+        console.info(
181
+            "This appears to be " + /* name */ match[1] + ", ver: " + version);
182
+    }
183
+    return version;
184
+}
185
+
166 186
 function detectBrowser() {
167 187
     var version;
168 188
     var detectors = [
189
+        detectReactNative,
169 190
         detectNWJS,
170 191
         detectOpera,
171 192
         detectChrome,

+ 9
- 2
modules/RTC/RTCUtils.js Zobrazit soubor

@@ -122,7 +122,11 @@ function getConstraints(um, options) {
122 122
         setResolutionConstraints(constraints, options.resolution);
123 123
     }
124 124
     if (um.indexOf('audio') >= 0) {
125
-        if (!RTCBrowserType.isFirefox()) {
125
+        if (RTCBrowserType.isReactNative()) {
126
+            // The react-native-webrtc project that we're currently using
127
+            // expects the audio constraint to be a boolean.
128
+            constraints.audio = true;
129
+        } else if (!RTCBrowserType.isFirefox()) {
126 130
             // same behaviour as true
127 131
             constraints.audio = { mandatory: {}, optional: []};
128 132
             if (options.micDeviceId) {
@@ -640,7 +644,10 @@ var RTCUtils = {
640 644
                 };
641 645
                 RTCSessionDescription = mozRTCSessionDescription;
642 646
                 RTCIceCandidate = mozRTCIceCandidate;
643
-            } else if (RTCBrowserType.isChrome() || RTCBrowserType.isOpera() || RTCBrowserType.isNWJS()) {
647
+            } else if (RTCBrowserType.isChrome() ||
648
+                    RTCBrowserType.isOpera() ||
649
+                    RTCBrowserType.isNWJS() ||
650
+                    RTCBrowserType.isReactNative()) {
644 651
                 this.peerconnection = webkitRTCPeerConnection;
645 652
                 var getUserMedia = navigator.webkitGetUserMedia.bind(navigator);
646 653
                 if (navigator.mediaDevices) {

Načítá se…
Zrušit
Uložit