Ver código fonte

Add Utils.platformString() and Utils.isIOS()

customisations
alemart 1 ano atrás
pai
commit
135554c15f
2 arquivos alterados com 31 adições e 8 exclusões
  1. 1
    8
      src/core/session.ts
  2. 30
    0
      src/utils/utils.ts

+ 1
- 8
src/core/session.ts Ver arquivo

@@ -188,15 +188,8 @@ export class Session extends AREventTarget<SessionEventType>
188 188
      */
189 189
     static isSupported(): boolean
190 190
     {
191
-        // navigator.platform is deprecated
192
-        const platform = ((navigator: any): string =>
193
-            typeof navigator.userAgentData === 'object' ?
194
-            navigator.userAgentData.platform :
195
-            navigator.platform
196
-        )(navigator);
197
-
198 191
         // If Safari or iOS, require version 15.2 or later
199
-        if(/(Mac|iOS|iPhone|iPad|iPod)/i.test(platform)) {
192
+        if(/(Mac|iOS|iPhone|iPad|iPod)/i.test(Utils.platformString())) {
200 193
             const ios = /(iPhone|iPad|iPod).* (CPU[\s\w]* OS|CPU iPhone|iOS) ([\d\._]+)/.exec(navigator.userAgent); // Chrome, Firefox, Edge, Safari on iOS
201 194
             const safari = /(AppleWebKit)\/.* (Version)\/([\d\.]+)/.exec(navigator.userAgent); // Safari on macOS (also newer iPads, Edge on iOS...)
202 195
             const matches = safari || ios; // match safari first (min version)

+ 30
- 0
src/utils/utils.ts Ver arquivo

@@ -99,4 +99,34 @@ export class Utils
99 99
     {
100 100
         return computeResolution(resolution, aspectRatio);
101 101
     }
102
+
103
+    /**
104
+     * Returns a string containing platform brand information
105
+     * @returns platform brand information
106
+     */
107
+    static platformString(): string
108
+    {
109
+        return ((navigator: any): string =>
110
+            typeof navigator.userAgentData === 'object' ? // prefer the NavigatorUAData interface
111
+            navigator.userAgentData.platform : // use only low entropy data
112
+            navigator.platform // navigator.platform is deprecated
113
+        )(navigator);
114
+    }
115
+
116
+    /**
117
+     * Checks if we're on iOS
118
+     * @returns true if we're on iOS
119
+     */
120
+    static isIOS(): boolean
121
+    {
122
+        const platform = Utils.platformString();
123
+
124
+        if(/(iOS|iPhone|iPad|iPod)/i.test(platform))
125
+            return true;
126
+
127
+        if(/Mac/i.test(platform) && navigator.maxTouchPoints !== undefined) // iPad OS 13+
128
+            return navigator.maxTouchPoints > 2;
129
+
130
+        return false;
131
+    }
102 132
 }

Carregando…
Cancelar
Salvar