Разработка
Apple против PWA: Ущерб будущему веба
То, что стартапы и небольшие группы разработчиков должны уделить время изучению языков Apple и проигнорировать (или отложить) релиз на Android для того, чтобы угодить Apple — нелепая идея.
Разработчик Грег Бласс написал о том, почему отказ Apple от поддержки PWA в мобильном Safari угрожает разработке современных приложений для смартфонов.
Progressive Web Applications (PWA) — одна из самых интересных и инновационных вещей, происходящих сейчас в веб-разработке. PWA позволяют вам использовать JavaScript, чтобы создавать сервис воркеры, которые предоставляют все функции нативных приложений — пуш-уведомления, оффлайн-поддержку и экраны загрузки приложений, только все через веб! Потрясающе.
Всё отлично, за исключением одной большой проблемы — Google создал технологию и добавил ее поддержку в Chrome на Android, но Apple отказались добавлять PWA в мобильный Safari. Всё, что они сделали — сказали, что проблема “на рассмотрении”. Никакой дискуссии об этом не ведется.
Я ждал, чтобы Apple высказала свою позицию по поводу PWA, но пока этого не произошло. Жизнь коротка, и я начал между делом изучать React Native. Об этом позже.
Почему нативные приложения… обречены?
Вчера я наткнулся на смелую и откровенную статью. В ней автор утверждает:
С этого момента я не буду создавать нативных приложений. Все мои последующие приложения будут PWA. PWA — это веб-приложения, который созданы для более естественной работы на мобильных устройствах, чем сами нативные приложения.
Тут же я подумал: “Как он может делать такое смелое заявление, когда PWA не работают на iOS и, возможно, никогда не будут работать?” Я бы хотел присоединиться к нему в этом путешествии. Каким отличным был бы этот мир — но пока это просто нереально.
Android сейчас занимает 86% глобального рынка ОС. Это высокий процент, но только если вы создаете приложения для глобального рынка, к которому я, и многие люди в США, не принадлежу. Это число значительно искажено из-за бедных стран с большим населением.
Последнее приложение, которое я разработал, предназначено для крупной медицинской некоммерческой организации, которая помогает сотням тысяч докторов. При опросе врачей выяснилось, что 80% из них используют iOS, а 45% сказали, что оффлайн-поддержка была бы полезной функцией, потому что у них нет стабильного соединения с сетью в офисе. Я бы хотел сделать PWA, но это было бы несовместимо с результатами этого опроса, поэтому мы использовали React Native (что оказалось отличным решением).
Ключевые характеристики PWA — это шутка
Я недавно нашел пост на Stack Overflow, который пытался заявить, что игнорирование PWA Apple — это не так плохо. Автор сказал, что Google определил список базовых характеристик PWA, и что многие из них возможны в мобильном Safari:
- Сайт обслуживается через HTTPS
- Страницы адаптируются под планшеты и мобильные устройства
- Начальный URL начинает загружаться в режиме оффлайн (невозможно на iOS)
- Метаданные можно добавить на домашний экран
- Быстрая загрузка даже на 3G
- Кроссбраузерная работа сайта
- Переходы между страниц не похожи на работу с сетью
- У каждой страницы есть URL
Серьезно? Это не то, что определяет PWA. Это то, что определяет стандартное адаптивное веб-приложение, что возможно сделать на iOS уже некоторое время.
Service Workers позволяют вам сделать все те захватывающие вещи, которые предлагает PWA. Недостаток поддержки мобильного Safari для них фактически убивает способность PWA работать для половины всех пользователей США, что в свою очередь убивает их выполнимость в целом.
Вот список вещей, который вы не можете сделать в мобильном Safari из-за отказа Apple в поддержке PWA:
- Создавать экран загрузки приложения
- Использовать пуш-оповещения
- Добавить оффлайн-поддержку
- Создавать изначальный интерфейс приложения, который мгновенно загрузится
- Быстрая установка на домашний экран через диалог в браузере
Полноэкранный режим Apple кишит багами
Я пытался создать близкий к нативному опыт в мобильном Safari, но в нем были серьезные баги, и Apple было на них наплевать. Они пропустили мои отчеты об ошибках (пометив их как дубликаты без комментария спустя месяцы после отправки) и проигнорировали все посты на форумах разработчиков о них.
Баги, которые я нашел в полноэкранном режиме Safari или режиме “веб-приложения”:
- Экран загрузки не работает (18 тысяч просмотров, никакого ответа от Apple).
- Фиксированные заголовки мерцают (мое самое большое разочарование, из-за которого я отключил ‘nq функцию в своем продукте).
- 300-миллисекундная задержка тапа, удаленная из мобильного Safari, но сохранившаяся в полноэкранном режиме (никакого ответа от Apple).
Я никогда не забуду это время, которое я провел за внедрением этих четко документированных функций, чтобы понять, что они не работают в более поздних версиях iOS.
Ответ Apple на форуме для разработчиков? Никакого. Абсолютная тишина. Это одна из самых раздражающих вещей из всех, с которыми я сталкивался, начиная с работы с ранними версиями Internet Explorer. И довольно просто понять, почему.
Apple относится к веб-приложениям, как к продукту второго сорта, потому что они не генерируют столько денег, сколько нативные приложения в App Store.
Прямо просить своих клиентов добавить приложение на домашний экран — это ужасный способ работы. На самом деле, я перестал так делать, потому что так ваше приложение выглядит как низкокачественный продукт.
Что насчет Cordova?
Что насчет этого? Я никогда не был фанатом платформы. Запуск приложения в нативной оболочке кажется хаком. Я пытался изучать и использовать Ionic/Angular, но мне не понравилось. Когда я вижу компании по разработке, который инвестировали свое время в экосистему Ionic, часть меня чувствует, что они зашли на неправильный поезд (честно говоря, React Native не существовал несколько лет назад).
И как только вы представляете гибридную оболочку, вы всё равно должны работать с App Store. Вы всё ещё должны играть в игру Apple и платить 100 долларов за доступ к App Store и налог в 30% — но вы всего лишь запускаете приложение в режиме веб-просмотра.
React Native во спасение
У вас есть ещё один выбор, созданный разработчиками Facebook — React Native.
Одна из самых больших вещей, которые вы должны сделать в качестве разработчика, — это решить, на что вы собираетесь потратить свое время, и я крайне рекомендую обучение React Native. Он уже открыл для меня множество новых возможностей для карьеры и разговоров с умными и успешными людьми.
Я провел последние шесть месяцев, обучаясь React Native и используя его для моего последнего проекта для клиентов, и это было невероятно. Во время изучения Angular я чувствовал, что я сражаюсь против языка, а React сразу показался мне логичным. Я никогда не испытывал такого уровня программистского возбуждения, и сообщество React Native действительно удивительное. Навигация в приложении — плавная и похожая на нативную, и всё приложение ощущается как настоящее.
Но в итоге, мы запустили меньше функций, чем если бы мы могли сделать PWA, и начали работать только на одной платформе.
Является ли опыт взаимодействия лучше? Вероятно. Но веб никогда не распространится с таким отношением. Я также задумываюсь, смогли бы мы охватить большее число людей, если бы им не нужно было скачивать приложение?
Apple, однако, получила, чего хотела: наши 100 долларов и контроль над приложением в App Store.
Путь Apple
Apple думает, что вам следует изучить совершенно другой, более сложный язык программирования (Objective-C/Swift) и поддерживать другую базу кода для iOS. Это наносит вред маленьким компаниям по разработке, замедляет инновации и делает запуск стартапов ещё более сложным.
То, что стартапы и небольшие группы разработчиков должны уделить время изучению языков Apple и проигнорировать (или отложить) релиз на Android для того, чтобы угодить Apple — нелепая идея.
Честно скажу, после всех моих жалоб я даже не противник Apple. Я использую iPhone и MacBook Pro каждый день. Я по-прежнему рассматриваю их устройства как превосходные и никогда не вернусь к PC/Windows.
И я не думаю, что люди в Apple сидят и игнорируют всё это, скорее несколько директоров или членов совета говорят всем не тратить время на технологии, которые не совпадают с тайной моделью получения доходов в App Store.
Это просто капитализм? Забота о собственном благополучии? Нет. Apple неприлично богаты. Я ещё жду ответа от них, но сомневаюсь, что это произойдет в ближайшее время. Эта статья не изменит их мнение, но я надеюсь, что она спровоцирует обсуждение и поможет распространить информацию.
Одно точно — мы не можем просто запрыгнуть на поезд PWA и совсем забыть о нативных приложениях. И мы должны назвать это своим именем — это ущерб будущему веба.