Fullscreen API в iOS 15: как включить полноэкранный режим на iPhone и iPad

Режим полноэкранного отображения (Fullscreen API) на устройствах Apple с iOS 15 часто становится головной болью для разработчиков и обычных пользователей. В отличие от Android или десктопных браузеров, где активация полноэкранного режима происходит в один клик, Safari накладывает жёсткие ограничения — особенно после обновлений безопасности. Эта статья не только объяснит, как включить Fullscreen API на iPhone или iPad с iOS 15, но и раскроет нюансы работы с веб-приложениями, играми и медиаконтентом, где полноэкранный режим критичен.

Проблема усугубляется тем, что Apple целенаправленно блокирует автоматические переходы в полноэкранный режим через JavaScript без прямого взаимодействия пользователя. Это означает, что даже если сайт технически поддерживает requestFullscreen(), Safari может проигнорировать команду или показать её только после тапа по экрану. Мы разберём легальные способы обхода этих ограничений, включая настройки iOS, альтернативные браузеры и даже модификации через Shortcuts (если вы готовы к экспериментам).

Важно: инструкции в этой статье актуальны для iOS 15.0–15.7.9. Если ваше устройство обновлено до iOS 16+, некоторые методы могут не работать — проверьте версию в Настройки → Основные → О программе.

Что такое Fullscreen API и почему он не работает в iOS 15

Fullscreen API — это веб-стандарт, позволяющий веб-страницам переходить в полноэкранный режим через JavaScript. На большинстве платформ (Windows, macOS, Android) он работает стабильно, но iOS традиционно ограничивает его функциональность. В iOS 15 Apple ужесточила политику безопасности, и теперь:

  • 🚫 Автоматический полноэкранный режим запрещён: element.requestFullscreen() срабатывает только после прямого действия пользователя (тап, клик).
  • 🔒 Ограничения для PWA: Прогрессивные веб-приложения (Progressive Web Apps) в iOS 15 не могут использовать Fullscreen API без обходных путей.
  • 📱 Исключение для медиа: Видео в <video> могут переходить в полноэкранный режим через нативный плеер, но не через JavaScript.
  • 🌐 Разница между браузерами: Safari блокирует API строже, чем Chrome или Firefox для iOS.

Основная причина таких ограничений — защита пользователей от нежелательных полноэкранных окон (например, рекламы или фишинга). Однако это создаёт проблемы для легитимных сервисов: онлайн-игры (Roblox, Now.gg), видеоплееры (YouTube, Twitch), презентации (Google Slides) и даже некоторые WebGL-приложения.

⚠️ Внимание: В iOS 15.4+ Apple добавила дополнительную проверку на "пользовательское намерение" (user intent). Это означает, что даже если вы вызовете requestFullscreen() по тапу, Safari может проигнорировать запрос, если сочтёт его "подозрительным" (например, если тап был вне видимой области экрана).

Способ 1: Включение Fullscreen API через настройки Safari

Первый и самый очевидный метод — настроить Safari так, чтобы он разрешал полноэкранный режим. К сожалению, в iOS 15 нет прямого переключателя "Разрешить Fullscreen API", но можно оптимизировать настройки для максимальной совместимости:

  1. Отключите ограничения для сайтов:

    Перейдите в Настройки → Safari → Настройки для сайтов.

    Прокрутите до раздела "Запрос на полноэкранный режим" и выберите Разрешить (если опция доступна). В iOS 15 этот пункт может отсутствовать — тогда переходите к следующему шагу.

  2. Разрешите JavaScript и всплывающие окна:

    В том же меню (Настройки → Safari) убедитесь, что:

    • JavaScript включён (Дополнительно → JavaScript → ВКЛ).
    • Блокировка всплывающих окон отключена (Блокировка всплывающих окон → ВЫКЛ).
  • Добавьте сайт на главный экран:

    Откройте нужный сайт в Safari, нажмите Поделиться → На экран "Домой". Запуск через иконку на главном экране иногда даёт больше прав, чем обычный браузер.

  • Если после этих манипуляций Fullscreen API всё ещё не работает, проблема может быть в конкретном сайте. Например, YouTube в Safari использует нативный плеер, а не JavaScript-API, поэтому полноэкранный режим там работает иначе.

    Отключена блокировка всплывающих окон|JavaScript включён в настройках Safari|Сайт добавлен на главный экран (опционально)|Пробуете в частном режиме (иногда помогает)-->

    Способ 2: Использование альтернативных браузеров

    Если Safari упорно блокирует Fullscreen API, попробуйте другие браузеры для iOS. Не все они равнозначны — некоторые просто обёртки над WebKit (движок Safari), но есть и более гибкие решения:

    Браузер Поддержка Fullscreen API Особенности Ссылка
    Chrome для iOS ⚠️ Частичная Использует WebKit, но иногда обходит ограничения Safari. App Store
    Firefox для iOS ✅ Полная Лучшая поддержка веб-стандартов среди браузеров для iOS. App Store
    Edge для iOS ⚠️ Частичная Аналогичен Chrome, но с интеграцией Microsoft-сервисов. App Store
    Brave ✅ Полная Блокирует рекламу, но поддерживает Fullscreen API лучше Safari. App Store

    Важный нюанс: даже в Firefox или Brave полноэкранный режим может не работать, если сайт не оптимизирован для iOS. Например, многие онлайн-игры требуют дополнительного тапа по кнопке "Fullscreen" после загрузки.

    Если вы разрабатываете веб-приложение, тестируйте его в Firefox для iOS — этот браузер максимально близок к десктопным стандартам. Для обычных пользователей рекомендуем Brave: он блокирует рекламу и лучше обрабатывает мультимедиа.

    📊 Какой браузер вы используете на iPhone?
    Safari
    Chrome
    Firefox
    Edge
    Brave
    Другой

    Способ 3: Обход ограничений через Web App (PWA)

    Прогрессивные веб-приложения (Progressive Web Apps, PWA) в iOS 15 имеют больше прав, чем обычные сайты в Safari. Если ваш сервис поддерживает PWA, попробуйте установить его как приложение:

    1. Откройте сайт в Safari и найдите иконку Поделиться (квадрат со стрелкой вверх).
    2. Выберите На экран "Домой".
    3. Запустите приложение с главного экрана. В некоторых случаях это разблокирует Fullscreen API.
    4. Пример сервисов, где это работает:

      • 🎮 Now.gg (облачный гейминг) — полноэкранный режим доступен только через PWA.
      • 📺 Twitch — в PWA видео можно развернуть на весь экран без ограничений.
      • 📊 Google Slides — презентации открываются в полноэкранном режиме.

      Однако есть подводные камни:

      • ❌ Не все PWA поддерживают Fullscreen API — зависит от реализации сайта.
      • ❌ В iOS 15 PWA не могут использовать некоторые функции (например, WebGL 2.0), что критично для игр.
      • ❌ Приложение будет работать в "песочнице" WebKit, поэтому производительность может быть ниже, чем в десктопных браузерах.
      Почему PWA в iOS ограничены?

      Apple намеренно ограничивает возможности PWA, чтобы продвигать нативные приложения из App Store. В iOS 15 PWA не имеют доступа к:

      - Push-уведомлениям без открытого браузера.

      - Файловой системе (например, нельзя сохранять файлы напрямую).

      - Некоторым API, включая Web Bluetooth и Web USB.

      Это делает PWA менее функциональными, чем на Android или Windows.

      Способ 4: Ручное включение полноэкранного режима для видео и игр

      Если Fullscreen API не срабатывает автоматически, можно попробовать активировать полноэкранный режим вручную. Этот метод работает для:

      • 🎬 Видео (<video>, YouTube, Vimeo).
      • 🎮 Игр на WebGL или HTML5.
      • 📱 Веб-приложений с канвасом (<canvas>).

    Инструкция для видео:

    1. Запустите видео на сайте (например, YouTube).
    2. Тапните по видео один раз — появятся элементы управления.
    3. Тапните по иконке (развернуть) в правом нижнем углу плеера.
    4. Если иконки нет, попробуйте двойной тап по видео — иногда это срабатывает.

    Инструкция для игр и веб-приложений:

    1. Запустите игру или приложение в браузере.
    2. Найдите на экране кнопку "Fullscreen" (обычно в меню настроек игры).
    3. Если кнопки нет, попробуйте жест двумя пальцами: разведите их в стороны на экране (иногда это имитирует запрос на полноэкранный режим).
    4. Для WebGL-игр может потребоваться повернуть устройство в горизонтальный режим — некоторые игры блокируют полноэкранный режим в портретной ориентации.
    ⚠️ Внимание: В iOS 15 некоторые сайты (например, Roblox в браузере) могут показывать чёрный экран при попытке перейти в полноэкранный режим. Это связано с ограничениями WebKit для WebGL. Решение — использовать официальное приложение Roblox из App Store.

    Способ 5: Использование Shortcuts для принудительного полноэкранного режима

    Для продвинутых пользователей есть способ обмануть iOS с помощью приложения Shortcuts (Ярлыки). Этот метод не гарантирует 100% результат, но иногда помогает запустить сайт в режиме, близком к полноэкранному.

    Инструкция:

    1. Откройте приложение Shortcuts (если его нет, скачайте из App Store).
    2. Создайте новый ярлык и добавьте действие "Открыть URL-адреса".
    3. Введите адрес сайта, который нужно открыть в полноэкранном режиме.
    4. Добавьте действие "Установить ориентацию экрана" и выберите Альбомная (горизонтальная).
    5. Добавьте действие "Запустить ярлык в виде приложения" (если опция доступна).
    6. Сохраните ярлык и запустите его. Некоторые сайты могут открыться в режиме, близком к полноэкранному.

    Этот метод работает нестабильно и зависит от конкретного сайта. Например, для Google Slides он может сработать, а для Now.gg — нет. Также учитывайте, что Apple может блокировать такие обходные пути в будущих обновлениях.

    Проблемы и ошибки при работе с Fullscreen API в iOS 15

    Даже после всех манипуляций Fullscreen API может не работать. Рассмотрим типичные ошибки и их решения:

    Проблема Возможная причина Решение
    Кнопка "Fullscreen" неактивна Сайт не поддерживает Fullscreen API для iOS. Попробуйте другой браузер или официальное приложение.
    Чёрный экран после перехода в полноэкранный режим Ошибка WebGL или ограничения WebKit. Обновите iOS или используйте нативное приложение.
    Полноэкранный режим включается, но сразу выходит Safari блокирует автоматический режим без взаимодействия. Тапните по экрану перед активацией requestFullscreen().
    Видео не разворачивается на весь экран Используется нестандартный плеер (например, кастомный HTML5-плеер). Попробуйте открыть видео в YouTube-приложении.

    Если ни один из методов не помог, проверьте:

    • 🔄 Обновите iOS до последней версии (в iOS 16+ некоторые ограничения сняты).
    • 📱 Перезагрузите устройство — иногда это сбрасывает кэш WebKit.
    • 🌐 Попробуйте другой сайт — проблема может быть на стороне сервиса, а не вашего iPhone.

    FAQ: Частые вопросы о Fullscreen API в iOS 15

    ❓ Почему Fullscreen API работает на Android, но не на iPhone?

    Apple целенаправленно ограничивает возможности веб-приложений в iOS, чтобы продвигать нативные приложения из App Store. В Android такие ограничения отсутствуют, поэтому Fullscreen API работает стабильно.

    ❓ Можно ли включить Fullscreen API для всех сайтов сразу?

    Нет, в iOS 15 нет глобального переключателя. Каждый сайт должен запрашивать полноэкранный режим отдельно, и Safari блокирует автоматические запросы без взаимодействия пользователя.

    ❓ Почему после обновления до iOS 15.4 Fullscreen API перестал работать?

    В iOS 15.4 Apple ужесточила политику безопасности для WebKit, добавив проверку на "пользовательское намерение". Теперь requestFullscreen() срабатывает только после явного действия (тапа) и может быть заблокирован, если Safari сочтёт запрос подозрительным.

    ❓ Работает ли Fullscreen API в режиме "Частный доступ" (Incognito)?

    Да, но с теми же ограничениями. Режим "Частный доступ" не влияет на работу Fullscreen API, однако некоторые сайты могут блокировать полноэкранный режим в приватных окнах по своим внутренним правилам.

    ❓ Можно ли через джейлбрейк разблокировать Fullscreen API?

    Технически да, но это не рекомендуется. Джейлбрейк нарушает безопасность iOS и может привести к блокировке устройства. К тому же, даже с джейлбрейком полноценная поддержка Fullscreen API не гарантирована из-за ограничений WebKit.