diff --git a/openvidu-browser/src/OpenVidu/OpenVidu.ts b/openvidu-browser/src/OpenVidu/OpenVidu.ts index e776b023..ec9124b7 100644 --- a/openvidu-browser/src/OpenVidu/OpenVidu.ts +++ b/openvidu-browser/src/OpenVidu/OpenVidu.ts @@ -341,7 +341,8 @@ export class OpenVidu { checkSystemRequirements(): number { if (platform.isIPhoneOrIPad()) { - if (platform.isIOSWithSafari() || platform.isIonicIos()) { + if (platform.isIOSWithSafari() || platform.isIonicIos() || + platform.isChromeMobileBrowser() || platform.isEdgeMobileBrowser() || platform.isOperaMobileBrowser() || platform.isFirefoxMobileBrowser()) { return 1; } return 0; diff --git a/openvidu-browser/src/OpenVidu/Publisher.ts b/openvidu-browser/src/OpenVidu/Publisher.ts index b17480c4..8c8e6dc2 100644 --- a/openvidu-browser/src/OpenVidu/Publisher.ts +++ b/openvidu-browser/src/OpenVidu/Publisher.ts @@ -703,7 +703,7 @@ export class Publisher extends StreamManager { this.videoReference = document.createElement('video'); this.videoReference.setAttribute('muted', 'true'); this.videoReference.style.display = 'none'; - if (platform.isSafariBrowser()) { + if (platform.isSafariBrowser() || (platform.isIPhoneOrIPad() && (platform.isChromeMobileBrowser() || platform.isEdgeMobileBrowser() || platform.isOperaMobileBrowser() || platform.isFirefoxMobileBrowser()))) { this.videoReference.setAttribute('playsinline', 'true'); } this.stream.setMediaStream(mediaStream); diff --git a/openvidu-browser/src/OpenVidu/StreamManager.ts b/openvidu-browser/src/OpenVidu/StreamManager.ts index f1ef2313..9d42ac81 100644 --- a/openvidu-browser/src/OpenVidu/StreamManager.ts +++ b/openvidu-browser/src/OpenVidu/StreamManager.ts @@ -135,7 +135,7 @@ export class StreamManager extends EventDispatcher { id: '', canplayListenerAdded: false }; - if (platform.isSafariBrowser()) { + if (platform.isSafariBrowser() || (platform.isIPhoneOrIPad() && (platform.isChromeMobileBrowser() || platform.isEdgeMobileBrowser() || platform.isOperaMobileBrowser() || platform.isFirefoxMobileBrowser()))) { this.firstVideoElement.video.setAttribute('playsinline', 'true'); } this.targetElement = targEl; @@ -425,7 +425,7 @@ export class StreamManager extends EventDispatcher { video.autoplay = true; video.controls = false; - if (platform.isSafariBrowser()) { + if (platform.isSafariBrowser() || (platform.isIPhoneOrIPad() && (platform.isChromeMobileBrowser() || platform.isEdgeMobileBrowser() || platform.isOperaMobileBrowser() || platform.isFirefoxMobileBrowser()))) { video.setAttribute('playsinline', 'true'); } diff --git a/openvidu-browser/src/OpenViduInternal/Utils/Platform.ts b/openvidu-browser/src/OpenViduInternal/Utils/Platform.ts index f7450dbd..d4ec7b36 100644 --- a/openvidu-browser/src/OpenViduInternal/Utils/Platform.ts +++ b/openvidu-browser/src/OpenViduInternal/Utils/Platform.ts @@ -40,7 +40,7 @@ export class PlatformUtils { * @hidden */ public isFirefoxMobileBrowser(): boolean { - return platform.name === "Firefox Mobile"; + return platform.name === "Firefox Mobile" || platform.name === "Firefox for iOS"; } /** @@ -70,7 +70,7 @@ export class PlatformUtils { */ public isEdgeMobileBrowser(): boolean { const version = platform?.version ? parseFloat(platform.version) : -1; - return platform.name === "Microsoft Edge" && platform.os?.family === 'Android' && version > 45; + return platform.name === "Microsoft Edge" && (platform.os?.family === 'Android' || platform.os?.family === 'iOS') && version > 45; } /** @@ -102,14 +102,12 @@ export class PlatformUtils { */ public isIPhoneOrIPad(): boolean { const userAgent = !!platform.ua ? platform.ua : navigator.userAgent; - const isTouchable = "ontouchend" in document; const isIPad = /\b(\w*Macintosh\w*)\b/.test(userAgent) && isTouchable; const isIPhone = /\b(\w*iPhone\w*)\b/.test(userAgent) && /\b(\w*Mobile\w*)\b/.test(userAgent) && isTouchable; - return isIPad || isIPhone; }