Статьи

PhoneGap: использование собственных мобильных функций с плагинами

Недавно мне было поручено разработать мобильное приложение в PhoneGap, использующее функцию Bluetooth. Хотя PhoneGap предоставляет базовую функциональность, PhoneGap не хватает возможностей для реализации мобильных функций, таких как Bluetooth. Тем не менее, он предоставляет механизм для реализации пользовательского плагина и средства для доступа к собственным функциям в приложении PhoneGap. В этом блоге я опишу шаги по реализации плагина для PhoneGap для использования собственных мобильных функций.

В моем предыдущем блоге « Android, iOS и Windows Mobile… Oh My: Введение в PhoneGap » я кратко описал основные функциональные возможности. Я бы порекомендовал просмотреть пост, если вы еще этого не сделали.

Реализация плагина

Чтобы реализовать плагин, вам нужно реализовать интерфейс JavaScript, который позволяет получать доступ к функциям через HTML-страницы в приложении PhoneGap. Интерфейс плагина должен быть реализован на родном языке.

Функция cordova.exec используется в интерфейсе JavaScript для доступа к собственным функциям через определяемый пользователем собственный плагин. Я обрисовал в общих чертах формат и описание функции и параметров для справки:

1
cordova.exec(success, failure, "NativePluginName", "start", [Arg]);

Аргументы:

  • «Success» — функция, которая будет вызываться при успешном завершении нативного вызова.
  • «Fail» — вызов функции, которая будет вызвана при ошибке собственного плагина и передаст сообщение на основе реализации плагина.
  • «NativePluginName» — класс обслуживания, вызываемый на собственной стороне. Обычно это будет имя класса нативного плагина.
  • «Start» — действие, которое вызывается на родном плагине. Обычно это имя метода. Однако можно использовать другое имя действия в зависимости от имени действия, используемого в собственном плагине (описание приведено ниже).
  • «[Arg]» — последний параметр позволяет передавать массив аргументов для метода в собственной реализации плагина.

Не забудьте включить интерфейс JavaScript в веб-страницу HTML для доступа к функциям интерфейса JavaScript.

1
<script type="text/JavaScript" src="js/JavaScriptplugininterface.js"></script>

В приведенном выше заявлении JavaScriptplugininterface — это имя имени интерфейса JavaScript. Обычно это похоже на родной плагин.

Пользовательский родной плагин

Для пользовательского собственного плагина я расскажу о плагине Android, который использует Java.

Чтобы реализовать собственный интерфейс плагина, ваш класс должен быть расширен до «CordovaPlugin». Android использует намерения для связи между процессами. Плагин Cordova обеспечивает доступ к объекту Cordova, с помощью которого вы можете получить доступ к текущей деятельности и контексту. Используя контекст, вы можете создать новое намерение и запустить его или выполнить функции над контекстом из плагина. Чтобы получить доступ к текущей активности и контексту приложения в плагине, вы можете использовать:

1
this.cordova.getActivity() and this.cordova.getActivity().getBaseContext() respectively.

Чтобы Cordova мог найти плагин, он должен быть объявлен в res / xml / config.xml .

1
2
3
<feature name="NativePluginName">
        <param name="android-package" value="com.keyhole.cordova.NativePluginName" />
</feature>

Имя функции — это имя службы, которое используется в JavaScript для вызова службы. Значение параметра — это полный путь (включая пространство имен) класса обслуживания. Не изменяйте имя параметра = «android-package» . Если вы не включите это, приложение скомпилируется, но Cordova не сможет найти плагин.

Наконец, JavaScript- функция cordova.exec будет передана методу execute плагина вместе с аргументами. Аргумент action передается из JavaScript, и для реализации функции его можно сопоставить следующим образом. Кроме того, аргументы, переданные в JavaScript, доступны в аргументах Cordova.

01
02
03
04
05
06
07
08
09
10
11
12
13
@Override
public boolean execute(String action, CordovaArgs args, CallbackContext callbackContext) throws JSONException {
 
        boolean validAction = true;
        Log.d("Plugin executing action:",action);
          if (action.equals("start")) {
              theCallbackContext = callbackContext;
// Do work
            } else {
                validAction = false;
            }
        return validAction;
    }

Вывод

Основным преимуществом использования PhoneGap является то, что вы можете разрабатывать приложения с использованием HTML, jQuery, JavaScript без необходимости изучения различных мобильных родных языков. Но для реализации функции, еще не доступной в PhoneGap, такой как Bluetooth, необходимо внедрить плагин для обеспечения доступа к собственной функциональности. Реализация плагина требует встроенного интерфейса для конкретного мобильного родного языка. К сожалению, необходимость писать код на определенном родном языке для мобильных устройств лишает нас одного из основных преимуществ PhoneGap.

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

Более подробную информацию о PhoneGap можно найти на phonegap.com .