Недавно мне было поручено разработать мобильное приложение в 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 .