О гибридных и нативных приложениях, их преимуществах и недостатках уже написано немало. В том числе много написано о Кордове. Но со временем все меняется и те возможности и методы, которые работали раньше, сейчас недоступны. Поэтому сегодня хочу обратить внимание на актуальные особенности разработки мобильного приложения под iOS с помощью Cordova!
Цель: Перенести готовое приложение на Angular в мобильное приложение.
Минимально необходимый стек:
1. Приложение Angular
2. Серверное приложение (nodejs, экспресс)
2. Приложение Cordova
3. Xcode
Как установить Cordova, создать приложения Angular и Cordova подробно описано в соответствующей документации (для Angular/для Cordova), поэтому не будем тратить на это время, а сразу перейдем к важным практическим особенностям, которые почти никто не говорит.
Действия в приложении Angular:
1. Создайте приложение и просмотрите каталог «dist».
ng build --configuration production
2. Переименуйте «dist» в «www».
3. Скопируйте каталог «www».
Действия в приложении Cordova:
1. замените каталог «www» на скопированный.
2. добавьте плагины Cordova:
- плагины Cordova добавьте Cordova-Plugin-Device
- плагины Cordova добавьте Cordova-plugin-ionic-webview
- плагины Cordova добавляют Cordova-Plugin-Splashscreen
- Плагины Cordova добавляют Cordova-Plugin-Statusbar
3. Cordova build ios (для компиляции кода из «www» в «platforms/ios»)
Действия в Xcode:
Затем вам нужно открыть Xcode и запустить файлы с «платформ/ios». Не волнуйтесь, если это не начнется сразу. Если вы новичок в Xcode, вам нужно сначала установить его (создать учетную запись разработчика Apple, подписать свое приложение и т. д.).
После этого вы можете открыть приложение Cordova в симуляторе или на своем устройстве.
Действия во внутреннем приложении:
Следующее, с чем вы можете столкнуться, — это совместное использование ресурсов между источниками (CORS).
Совместное использование ресурсов между источниками (CORS) — это механизм, основанный на HTTP-заголовке, который позволяет серверу указывать любые источники (домен, схему или порт), кроме своего собственного, из которых браузер должен разрешать загрузку ресурсов. CORS также опирается на механизм, с помощью которого браузеры делают предварительный запрос к серверу, на котором размещен ресурс из другого источника, чтобы убедиться, что сервер разрешит фактический запрос. В этой предварительной проверке браузер отправляет заголовки, указывающие метод HTTP, и заголовки, которые будут использоваться в фактическом запросе.
Это решилось добавлением в ваш бэкэнд этого кода:
let allowedOrigins = ["ionic://your_domain", "app://your_domain"];
Ваше созданное приложение для iOS не поддерживает протоколы http/https и использует «ionic» или «app».
Действия в config.xml:
Приложение Cordova содержит файл config.xml для более подробной настройки (значок приложения, заставка, строка состояния и т. д.). Но и тут есть нюансы, на которые стоит обратить внимание.
1. Для подключения бека и фронтенда нужно добавить:
<preference name=”hostname” value=”your_production_domain” />
2. заставка (занимает только центр вашего изображения)
3. значок приложения (необходимо добавить все типы значков)
4. от Iphone 11 вам нужна прокладка сверху «тела»
5. После всех изменений в config.xml нужно выполнить команду — «cordova build ios» и снова пересобрать в Xcode.
Я прикрепил свой пример config.xml, так как это очень важная часть.
<?xml version='1.0' encoding='utf-8'?> <widget id="your_id" version="1.0.0"> <name>Name</name> <description>description</description> <author email="author"> author </author> <content src="index.html" /> <allow-intent href="http://*/*" /> <allow-intent href="https://*/*" /> <preference name="scheme" value="app" /> <preference name="hostname" value="your_domain" /> <preference name="ScrollEnabled" value="true" /> <platform name="ios"> <splash src="res/screen/ios/Default@3x~universal~anyany.png" /> <icon src="res/ios/[email protected]" width="180" height="180" /> <!-- iOS 7.0+ --> <!-- iPhone / iPod Touch --> <icon src="res/ios/icon-60.png" width="60" height="60" /> <icon src="res/ios/[email protected]" width="120" height="120" /> <!-- iPad --> <icon src="res/ios/icon-76.png" width="76" height="76" /> <icon src="res/ios/[email protected]" width="152" height="152" /> <!-- Spotlight Icon --> <icon src="res/ios/icon-40.png" width="40" height="40" /> <icon src="res/ios/[email protected]" width="80" height="80" /> <!-- iOS 6.1 --> <!-- iPhone / iPod Touch --> <icon src="res/ios/icon.png" width="57" height="57" /> <icon src="res/ios/[email protected]" width="114" height="114" /> <!-- iPad --> <icon src="res/ios/icon-72.png" width="72" height="72" /> <icon src="res/ios/[email protected]" width="144" height="144" /> <!-- iPad Pro --> <icon src="res/ios/icon-167.png" width="167" height="167" /> <!-- iPhone Spotlight and Settings Icon --> <icon src="res/ios/icon-small.png" width="29" height="29" /> <icon src="res/ios/[email protected]" width="58" height="58" /> <icon src="res/ios/[email protected]" width="87" height="87" /> <!-- iPad Spotlight and Settings Icon --> <icon src="res/ios/icon-50.png" width="50" height="50" /> <icon src="res/ios/[email protected]" width="100" height="100" /> <!-- iTunes Marketing Image --> <icon src="res/ios/icon-1024.png" width="1024" height="1024" /> </platform> <preference name="SplashScreenDelay" value="3000" /> </widget>
Я постарался описать все особенности, с которыми столкнулся при создании мобильного приложения iOS с использованием Angular и Cordova. Я думаю, что это действительно хорошая возможность превратить ваше веб-приложение в мобильное приложение.