Pull to refresh

Приложение Apache Cordova в App Store

История о том, как «верстальщик» решил сделать свое первое мобильное приложение и что из этого получилось.


В компании, где я работаю, появилась потребность в мобильном приложении, по воле случая исполнителем стал человек без опыта мобильной разработки(ТС). Ниже будут описаны все подводные камни, которые встретились на моем пути, думаю информация будет полезна, не только тем, у кого появилась мысль (надеюсь, что нет) заниматься разработкой кросплатформенных приложений при помощи фреймворков ( Cordova/PhoneGap, Ionic и.т.д ), но и для тех кто будет подготавливать релиз своего приложения в App Store


Короткий план работ для решения задачи:


  1. Выбор среды разработки и инструментов
  2. Макет приложения, удовлетворяющий задачам компании
  3. Тестирование и разработка app
  4. Релиз приложения в App Store

1. Начнем по порядку (в этом пункте будет про Cordova, релиз в App Store — см пт4, наверняка ты здесь за этим). Имея за спиной навыки верстки под мобильные устройства и знания нативного JS, после сравнения документаций и советов боевых товарищей, выбор пал на фреймворк Apache Cordova, начало было положено, шаг за шагом я установил все необходимые пакеты на Macbook (nodejs, cocoapods, cordova) все это подробно описано в документации Apache, были свои проблемы, характерные для яблочных осей после новых обновлений, но все они решились при помощи гугления, вскоре появилась легкая иллюзия, что я делаю обычный мобильный сайт и cordova все делает за меня и на выходе получается приложение, которое мне необходимо, но это продлилось недолго, пока кроме красивого дизайна мне понадобилась и функциональность(взаимодействие с девайсом, доступ к файловой системе, чтение файлов).


2. Задача была тривиальная — вывести список файлов (PDF), для этого нужно получить данные с сервера, отрисовать их, связать с ссылками на pdf фалы, дать пользователю возможность открыть файл PDF, скачать, поделиться. воспользоваться поиском. На бумаге все просто, пока я не столкнулся с тем, что качественных и простых в интеграции инструментов для чтения файлов в Cordova немного (2-3 фигурировали во всех постах на it пабликах интернет пространства), но возможно в меру своего малого опыта, не все из них получилось интегрировать и опробовать, а некоторые и вовсе работали нестабильно(разработчики плагинов для Corodva, не всегда актуализируют их под новые версии IOS), остановился на одном, который и используется до сих пор, если будет интересно, могу описать как при помощи cordova-plugin-file. cordova-plugin-file-transfer удалось получить доступ к памяти телефона и при помощи еще одного плагина для чтения pdf вывести файл на экран для чтения


3. Для релиза pdf читалки в App store, одного вывода файлов с сервера и возможности их читать и скачать было маловато, много отказов для приложений из-за их бесполезности и малой функциональности. Я решил искать новые плагины для Cordova, которые позволяют использовать нативные функции ios устройств (доступ к камере, push-уведомления, innapp-browser), вот тут и началась главная головная боль…

Доступ к камере решил использовать для чтения QR-code нашей продукции, по нему выдавалась ссылка на продукт, по ссылке выводил подходящий PDF файл продукта — задача решилась быстро, так как были рабочие плагины Cordova для qr сканирования. С интеграцией Push-уведомлений было сложнее, необходимы были подписанные сертификаты, которые связывают bundle приложения и сервер для оповещений, пришлось пройти полную регистрацию в Apple Developer, оплатить подписку, для возможности выпуска сертификатов. При установке нескольких плагинов, приложение и вовсе крашилось, билды начали один за одним проваливаться, нашел поставщика услуг для Push-ей с пошаговой инструкцией для Cordova, и тут меня ждало разочарование(проблема была в том, что я работал в Xcode напряму со своим проектом, а не с Worksplace, из-за этого некоторые файлы сторонних плагинов были недоступны и билды фейлились). Несколько раз я создавал новые версии, заново их подписывал и устанавливал все плагины и вот я получил первое уведомление в мое приложение.


Теперь приложение, получает список продукции, соответствующие ей PDF файлы, читалку через которую они открываются, сохраняются и отправляются куда угодно, открытие текущего продукта на сайте внутри приложения, фильтры и поиск, после скачивания файлы оказываются в cash памяти и доступны без скачивания, пока на устройстве достаточно места, система сама примет решение, когда их удалить. Поиск по QR коду, на каждом нашем продукте есть qr и из приложения появилась быстрая возможность вывода всей инфы и файлов по данному продукту


4. И вот мы добрались до релиза, прогуглил сотни ссылок про развертывание приложений Cordova, но не нашел ни одной по новому xCode11. Большинство мануалов помогло на начальном этапе, подписка приложения сертификатами разработчика, создания профиля для дистрибуции, но вот дальше, начались проблемы. в каждом гайде, описывался не релиз в App Store, а простой экспорт установочных архивов с возможностью установки на конечное устройство. Мои действия были такие: после всех проверок, было принято решение собрать финальный архив, после пройти валидацию и подписать его, все это очень удобно делается из xCode, из него же и происходит загрузка в App Connect вашего архива, но и тут не все гладко, появлялась ошибка загрузки. аргументированная тем, что в моем apple developer центре не было идентификатора, совпадающим с bundle моего приложения, но он присутствовал в списке, тогда я создал приложение в App Connect и прикрепил к нему этот bundle (много гайдов по созданию именно приложения в App Connect, но там все интуитивно и все поля с подсказками). После данных манипуляций мой архив загрузился из Xcode в мой App Connect, система автоматом проверяет вашу сборку и к вам на почту приходят все ошибки, которые вам следует исправить.


После первой проверки, мне пришлось выбросить из приложения плагин cordova-inappbrowser, так как apple отказывают приложениям, использующим UIWebView, хоть и в плагине описывалась возможность переключения на WKWebView, система не пропускала мою сборку, так как файлы содержали импорты библиотеки UIWebView, в итоге минус функция открытия ссылки продукта внутри моего приложения. Несколько ошибок пришло по поводу того, что не были указаны причины использования камеры и нотификаций в файле info.plist, все замечания подробно описаны и в течение вечера их реально поправить.


Ревью приложения прошло этой же ночью, и мне все благополучно одобрили. Но после всех шишек, набитых при использовании Cordova, не берусь отвечать за все кросплатформенные фреймворки, вывод однозначно один, если нужно приложение, нужно делать его нативным, для решения простых задач и скромных приложений. Фреймворки хорошее подспорье, но серьезные проекты с долгой поддержкой я бы не решился доверять подобным инструментам, и да есть шанс, что его все таки одобрят на ревью, на что я не очень-то и расчитывал.

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.