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 и предложить его как нормальное приложение. Прийдеться попотеть, но не сдасться.