Прогрессивное улучшение с PhoneGap?
Я работаю над PhoneGapping мобильного веб-приложения, которое я написал с нуля, и мне интересно, что все думают о прогрессивном улучшении?
Прямо сейчас приложение PhoneGap просто указывает на наш домен, поэтому любой код на сервере - это то, что выполняется. Я хотел бы сохранить это как можно больше, но мне было интересно, есть ли какой-нибудь способ определить, идет ли просмотрщик через PhoneGap или нет, а затем включить другие функции, основанные на этом (например, локальные контакты, push-уведомления),
Я знаю, что PhoneGap требует наличия файла phonegap.js, и кажется, что включение этого общего кода вызовет некоторые проблемы у пользователей, не являющихся PhoneGap, поэтому любые мысли здесь будут отличными. Спасибо!
1 ответ
Я опубликую ссылку на пост в блоге об этом с большим количеством деталей / примеров, но по сути это сводится к трем вещам:
- Изменение запросов от PhoneGap, а затем обнаружение на вашем сервере
- Убедиться, что правильные API Javascript находятся в нужном месте
- Определение того, когда показывать / включать функции PhoneGap
То, как я сейчас это делаю, выглядит следующим образом:
1) Изменение запросов от PhoneGap
Вы можете добавить пользовательскую строку в User Agent из приложения PhoneGap, а затем выполнить поиск этой пользовательской строки на сервере. Самый простой способ сделать это (на Android) в вашем platforms/android/src/path/to/your/app/[app_name].java
, в onCreate
метод, после super.loadUrl(Config.getStartUrl());
строка, добавьте:
String ua = this.appView.getSettings().getUserAgentString();
this.appView.getSettings().setUserAgentString(ua + " your_custom_string");
2) Убедитесь, что правильные API Javascript находятся в нужном месте
Когда вы создаете приложение PhoneGap и запускаете его с локальным источником, есть запасной вариант для реальных API-интерфейсов Javascript, которые использует PhoneGap. Если вы работаете локально, вам не нужно cordova.js
или же phonegap.js
файл в каталоге вашего проекта вообще. Вы можете найти нужные файлы в platforms/android/assets/www
, Ты ищешь cordova.js
, cordova_plugins.js
и весь plugins/
каталог. В своем веб-приложении вам необходимо убедиться, что папка, на которую вы указываете cordova.js
также имеет plugins/
каталог. Например:
<script type="text/javascript" src="/js/cordova.js"></script>
Значит все должно быть в твоем webroot/js/
папка.
3) Определение, когда показывать / включать функции PhoneGap.
Это так же просто, как чтение пользовательского агента для your_custom_string
от ранее и включения / выключения функций. Вы не хотите загружать cordova.js
сценария, если средство просмотра не поступает из PhoneGap (в противном случае все становится странным), и убедитесь, что вы настроили прослушиватель событий на deviceready
событие, и сделать любой код, специфичный для PhoneGap, после того, как он запущен.
В предстоящем сообщении блога будет простой пример использования API контактов Ionic и PhoneGap.
И это все! Я действительно взволнован потенциалом, который это открывает для прогрессивного улучшения. Это позволяет мне поддерживать как мобильный веб, так и нативный (Android и, вероятно, iOS) с ~99% одной и той же кодовой базы, и позволяет мне включать функции, только если я знаю, что они есть у пользователя. Это похоже на обнаружение хакерских функций на стероидах.