Если mini app не работает на iPhone, а на Android или компьютере открывается нормально, причина обычно не в боте целиком, а в особенностях iOS WebView, Safari и клиентского JavaScript.
Сначала нужно понять, где именно ломается сценарий: mini app не открывается, открывается белым экраном, не проходит авторизацию, не отправляет данные в бот или падает на конкретном действии.
Коротко: что сделать
- Проверить открытие mini app на iPhone в актуальном Telegram
- Открыть тот же URL в Safari и сравнить поведение
- Проверить HTTPS, mixed content и ошибки JavaScript
- Проверить initData и проверку hash на backend
- Проверить viewport, safe-area и touch-события
Основные причины
У проблемы может быть несколько уровней: интерфейс, backend, права, внешняя интеграция, кэш, очередь задач или настройки сервера. Поэтому лучше не гадать, а пройти цепочку от действия пользователя до записи в логах и базе.
- Используется API браузера, который ограничен в iOS WebView
- Часть ресурсов грузится по HTTP внутри HTTPS-страницы
- Код зависит от hover, desktop viewport или нестабильной высоты экрана
- localStorage или cookie используются без учета iOS-ограничений
- Ошибка авторизации скрыта за общим белым экраном
Пошаговая диагностика
Диагностику удобнее вести на одном воспроизводимом примере: один пользователь, один заказ, один запрос, один файл или одно событие. Так проще отделить реальную причину от случайных совпадений.
- Подключить Safari Web Inspector к iPhone и посмотреть console
- Проверить Network на 4xx, 5xx и заблокированные ресурсы
- Сравнить initData на iPhone и Android
- Проверить, не перекрывает ли интерфейс системная safe-area
- Запустить минимальную страницу WebApp без тяжелых библиотек
Как исправить проблему
Исправление должно закрывать первопричину. Если затронуты платежи, доступы, персональные данные, уведомления или рабочие заказы, сначала проверьте решение на тестовом сценарии и сохраните возможность отката.
- Убрать mixed content и привести все ресурсы к HTTPS
- Исправить JS-ошибки, которые проявляются только в Safari/WebKit
- Добавить корректную работу с safe-area и высотой viewport
- Перенести критичную авторизацию на backend
- Добавить fallback-сообщение вместо белого экрана
Безопасный план решения
Проверяйте правку на реальном iPhone, а не только в эмуляторе. Для mini app важно тестировать Telegram WebView, Safari и несколько версий iOS, потому что поведение может отличаться.
Чего не стоит делать
- Не отключать проверку initData ради быстрого запуска
- Не хранить bot token или секреты в frontend
- Не считать Android-тест достаточным для iPhone
- Не оставлять белый экран без диагностического сообщения
Что подготовить перед исправлением
- Ссылка на mini app
- Модель iPhone и версия iOS
- Скрин или запись проблемы
- Ошибки из console и Network
- Описание сценария, который не работает
FAQ
Почему mini app работает в Safari, но не в Telegram?
Telegram открывает страницу внутри WebView, где могут отличаться доступные API, размер viewport, cookie и обработка внешних ссылок.
Можно ли отлаживать Telegram WebApp на iPhone?
Да, через Safari Web Inspector при подключенном устройстве. Это самый быстрый способ увидеть реальные JS-ошибки.
Нужно ли делать отдельную версию для iPhone?
Обычно нет. Чаще достаточно исправить WebKit-совместимость, viewport, safe-area и авторизацию.
Когда стоит обратиться за помощью
Обращаться стоит, если mini app уже принимает заявки, оплаты, записи или личные данные и нельзя оставлять iPhone-пользователей без рабочего сценария.
Итог
Начните с реального iPhone, Safari Web Inspector, HTTPS и initData. Если нужно аккуратно починить Telegram mini app под iPhone, можно написать в Telegram @rabotator_support.