WebApk

Бьюсь с Гуглом. Уже несколько дней.

Хочу, чтобы мой сайт на Android ставился как нормальное приложение. Чтобы иконка висела в общем меню приложений. Чтобы открывался без адресной строки. Чтобы вел себя как нативка. Это называется WebAPK.

И вот тут начинается цирк.

На компьютере всё идеально. Открываю Chrome, там кнопка «Установить». Тыкаю, приложение ставится. Красота. А на телефоне - фиг там. Вместо нормальной установки Chrome предлагает мне «Добавить на главный экран».

И всё. Получается не приложение, а ярлык с иконкой Хрома, который висит на рабочем столе. Убого. Это не то, за чем я шел.

Он должен предложить установку как нативного приложения. Сам собрать этот APK, засунуть его в систему, чтобы Android видел его в списке программ. А он не хочет.

Правила

Я полез разбираться, по каким правилам он это делает. Оказалось, их несколько, и все обязательны. Если хоть одно не выполнено - до свидания, получи ярлык.

Первое. HTTPS. Без него даже не начинай.

Второе. Манифест. И там должны быть name, short_name, start_url. И иконки. Обязательно 192x192 и 512x512. И обязательно PNG. Если иконка SVG или jpg - не прокатит. Я проверил, у меня всё есть.

Третье. Service Worker. И вот тут сюрприз. На десктопе Chrome уже давно забил на это требование. Ему достаточно просто манифеста. А на Android - нет. Ему подавай зарегистрированный Service Worker, и обязательно с обработчиком fetch. Причем даже пустой обработчик подходит. Главное, чтобы он был. Я проверил, у меня есть.

Четвертое. И самое интересное. WebAPK собирается не на моем сервере. Не в моем браузере. Его собирает сервер Google. Браузер стучится к ним, они генерируют APK, подписывают его, и только потом он ставится на телефон. И если что-то пошло не так на их стороне - я об этом даже не узнаю. Просто получу ярлык.

Почему я не собираю сам

Я подозреваю, что дело в сервере. Мой VPS с российским IP, а серверы Google могут быть недоступны или работать криво.

Технически, я могу собрать APK сам. Взять код, обернуть его в коробочку и выложить. Но это не то.

Если я дам людям файл, который надо ставить вручную, Android сразу же напишет: «Установка из неизвестного источника». Люди пугаются таких предупреждений. Обычный человек не будет разбираться, что там внутри. Он просто закроет и уйдет. А я потеряю доверие.

Мне нужно, чтобы он собирал приложение на автомате. Чтобы человек нажал одну кнопку, и всё прошло гладко, как в Плей Маркете. Без страшных красных экранов.

Зачем мне это

А надо это вот почему. В планах у меня чат, как основа сообщества. А для чата жизненно важны уведомления. Обычные пуш-уведомления в браузере на Android работают так себе, их часто блокируют или убивают в фоне. А у нормально установленного WebAPK уведомления работают как у нативной Телеги. Приходят даже когда приложение закрыто.

Без нормального приложения сообщество не построишь. Люди не будут сидеть в чате, если им не приходят уведомления о новых сообщениях.

Поэтому я копаю дальше. Чиню, проверяю, жду. Растроился, но не сдался.

Рано или поздно я заставлю этого кремниевого параноика собрать мой WebAPK и предложить его как нормальное приложение. Прийдеться попотеть, но не сдасться.