Прогрессивное улучшение с PhoneGap?

Я работаю над PhoneGapping мобильного веб-приложения, которое я написал с нуля, и мне интересно, что все думают о прогрессивном улучшении?

Прямо сейчас приложение PhoneGap просто указывает на наш домен, поэтому любой код на сервере - это то, что выполняется. Я хотел бы сохранить это как можно больше, но мне было интересно, есть ли какой-нибудь способ определить, идет ли просмотрщик через PhoneGap или нет, а затем включить другие функции, основанные на этом (например, локальные контакты, push-уведомления),

Я знаю, что PhoneGap требует наличия файла phonegap.js, и кажется, что включение этого общего кода вызовет некоторые проблемы у пользователей, не являющихся PhoneGap, поэтому любые мысли здесь будут отличными. Спасибо!

1 ответ

Решение

Я опубликую ссылку на пост в блоге об этом с большим количеством деталей / примеров, но по сути это сводится к трем вещам:

  1. Изменение запросов от PhoneGap, а затем обнаружение на вашем сервере
  2. Убедиться, что правильные API Javascript находятся в нужном месте
  3. Определение того, когда показывать / включать функции 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% одной и той же кодовой базы, и позволяет мне включать функции, только если я знаю, что они есть у пользователя. Это похоже на обнаружение хакерских функций на стероидах.

Другие вопросы по тегам