phonegap push plugin что это
Начало работы с Push Notifications в PhoneGap
Доброго времени суток, хабрапользователи!
Push Notifications не включены в API PhoneGap. Если сделать небольшой поиск по документации PhoneGap, то можно найти только Notifications которые представляют собой обычные alert диалоги с вожможностью использования в них звуковых эффектов и вибрации.
Но что делать, если вам просто необходимо создать кроссплатформенное приложение с Push Notifications? Я хочу обратить Ваше внимание на тестовый пример работы с некоторыми из них при помощи Android. В результате, из разработанного проекта можно будет получить также iOS, BlackBerry и Windows Phone приложения.
В статье будут рассмотрены две библиотеки для работы с Push Notifications в PhoneGap: Urban Airship и Poosh Woosh.
Начать стоит с поиска подходящей библиотеки, а их на самом деле великое множество. Однако, нужно, чтобы библиотека была действительно кроссплатформенной и имела единый сервис доставки.
Просмотрев имеющиеся варианты, я остановилась на 2 библиотеках: Urban Airship и Poosh Woosh. У них есть свои недостатки и преимущества, поэтому рассмотрим обе библиотеки.
По сути, Urban Airship имеет 3 версии: Enterprise Edition, версию для малого бизнеса Small Business Edition и бесплатную Developer Edition. Вы можете ознакомиться со всеми преимуществами более подробно на официальном сайте.
Push Woosh также имеет несколько версий: Free, Premium, Gold, Platinum. Ознакомиться с ними можно после регистрации на официальном сайте.
Рассмотрим более подробно бесплатные версии: Developer Edition от Urban Airship и Free от Push Woosh. Их основное отличие в том, что в Urban Airship вы можете отправлять до 1 миллиона сообщений в месяц, а в Push Woosh вы можете подключать для отправки сообщений до 1 миллиона девайсов. Кроме того, в бесплатной версии Push Woosh у вас не будет доступа к API, геозонам и тегам, а количество приложений будет ограничено 10. Urban Airship к преимуществам своего продукта относит: гибкие интерфейсы для полной настройки, безотказность, безопасность, масштабируемость, а также высокую производительность. Итак, вы можете выбрать ту, которая является более подходящей для вашего проекта.
Далее перейдем к подключению библиотек.
Google?
Да, именно Google. Теперь стоит обратиться к его помощи. Нужно будет использовать Google API для своего проекта. Для этого:
1. Нужно перейти по ссылке и создать его, соответственно;
2. После создания проекта в браузере будет введена ссылка, похожая на эту:
Здесь 4815162342 — это gsmSender в файле airshipconfig.properties.
3. Во вкладке Services необходимо включить Google Cloud Messaging for Android.
4. Во вкладке API Access выбираем «Create a new Server key. » В появившемся окне ничего не нужуно вводить, просто нажимает “Create”.
5. Сгенерированный API key понадобится в созданном ранее профиле Urban Airsip.
Go Urban Airship
Теперь, стоит скачать саму библиотеку, а также тестовый пример с официального сайта Urban Airship. Подключаем проект к Eclipse и добавляем в него скачанную библиотеку.
Далее нужно сделать самое интересное — разобраться с ключами, которые находятся в файле airshipconfig.properties.
Переходим к Urban Airship профилю и создаем в нем новое приложение, при этом вводим полученный API key в строку CGM API Key.
Во вкладке Details созданного проекта: Application Key — это developmentAppKey в файле airshipconfig.properties, а Application Secret — это developmentAppSecret.
И вот настал тот момент, когда, наконец-то, можно запустить приложение. При этом не стоит забывать включить интернет.
Для отправки Push Notifications необходимо сделать следующие шаги:
1. Читаем лог и видим похожую строку. Копируем push ID, который понадобится для отправки Push Notification на указанный телефон.
3. Проверяем — нажимаем “Send it!”. При клике на Push Notifications происходит переход на само приложение.
Pushwoosh
В работе с Pushwoosh всё очень похоже.
Вы можете скачать тестовый пример для PhoneGap.
Понадобится регистрация и создание приложения. Для примера работы с приложением введем полученный у Google, API key.
Далее в коде файла index.js заменим projectId на собственный, в поле appid введем в полученный от PushWoosh код:
Теперь можно отправлять первый Push Notification от Push Woosh (для этого не надо вводить дополнительных кодов для девайсов).
Как отправить push-уведомление с помощью phonegap и parse
Я создаю приложение для Android, используя php, jquery и phonegap. Я искал так много вещей в google, но я не могу найти для отправки push-уведомления. Я видел это Phonegap и Parse.com Push Notifications IOS. Но я не понимаю, могу ли я получить deviceToken.
Я также видел ниже
Я понял, как отправить уведомление. Но без devicetoken, как я могу отправить push-уведомление. Может anybosy сказать мне, как я могу получить токен устройства.
Я следовал этому руководству, который работал очень хорошо. В нем также объясняется, как получить токен устройства.
Вам будет предложено ввести его, но вы также можете подключить свой телефон к компьютеру и прочитать файлы журнала. (Вы можете использовать инструмент «monitor» в SDK android)
ОБНОВЛЕНИЕ С ПРИМЕРОМ
Большинство шагов в основном представляют собой прямую копию учебника devgirls, о котором я упоминал ранее
В командной строке Windows:
phonegap local plugin add https://github.com/phonegap-build/PushPlugin
Я пропустил это, я не копирую файл в каталог www. Я просто оставлю его там, где он есть.
Добавить в index.html
Добавьте в config.xml (это отличается от сайта и решает не поддерживаемую ошибку)
Скопируйте push-код в функцию onDeviceReady в файле /js/index.js. Очевидно, добавьте свой собственный ключ из Google
Скопировать функцию обработчика обратного вызова в файл /js/index.js
phonegap remote build android приложение: phonegap remote build android
This package has been deprecated
This package is deprecated, see https://blog.phonegap.com/update-for-customers-using-phonegap-and-phonegap-build-cc701c77502c
phonegap-plugin-push
phonegap-plugin-push
Register and receive push notifications
The links below take you to the version 2.x documentation which includes a number of breaking API changes from version 1.x, mostly the move from GCM to FCM. If you are using version 1.x please reference the docs in the v1.x branch.
This plugin offers support to receive and handle native push notifications with a single unified API.
This does not mean you will be able to send a single push message and have it arrive on devices running different operating systems. By default Android uses FCM and iOS uses APNS and their payloads are significantly different. Even if you are using FCM for both Android and iOS there are differences in the payload required for the plugin to work correctly. For Android always put your push payload in the data section of the push notification. For more information on why that is the case read Notification vs Data Payload. For iOS follow the regular FCM documentation.
This plugin does not provide a way to determine which platform you are running on. The best way to do that is use the device.platform property provided by cordova-plugin-device.
Do you like tutorial? You get tutorial!
Инфраструктура разработки приложения на PhoneGap для iOS и Android
Сегодня я расскажу вам о нашем опыте разработки кросс-платформенных мобильных приложений на основе PhoneGap/Cordova. В проекте используются такие технологии, как HTML5, CSS3 и Angular.js. Grunt применяется в качестве task manager’а, позволяющего упростить и ускорить выполнение рутинных задач. Все сборки компилируются локально во время процесса разработки.
Источник: build.phonegap.com
Когда версия готова к этапу тестирования, она компилируется с помощью PhoneGap Build и загружается на Ubertesters — сервис дистрибуции мобильных приложений, который позволяет проводить тестирование быстро и эффективно на всех подключенных устройствах. Приложение поддерживает минимум iOS 6 и Android 4.1 (87.5 % доля рынка).
Настройка локальной сборки и структура проекта
Для локального тестирования приложения необходимо установить инструменты для PhoneGap/Cordova. Важно убедиться, что NodeJS уже установлен, открыть командную строку или Cygwin и выполнить следующее:
После завершения установки пустой проект может быть создан и скомпилирован для требуемой платформы:
Внимание: phonegap = cordova. Можно использовать cordova вместо phonegap при написании команд:
Сборка для iOS может осуществляться только под Mac OS X (согласно условиям лицензионного соглашения Apple), не существует способа запустить сборку для iOS под Windows.
Платформа Android требует наличия SDK Tools, его можно скачать по ссылке (пакет SDK Tools Only внизу страницы). Сразу после установки необходимо проверить в Android SDK Manager, что Android 5.0 (API level 21) был установлен успешно. Android 5.0 используется как target для текущей версии Phonegap/Cordova при локальной сборке.
Структура приложения
Файлы и папки
• platforms – включает в себя раздельный код под каждую из используемых платформ, компилируется каждый раз, когда выполняется сборка;
• plugins – это плагины, используемые в приложении. Плагины описываются подробнее далее;
• www – веб-приложение на основе HTML5/Angular.js, PhoneGap/Cordova отображает при помощи системного компонента Web View;
• config.xml – файл должен находиться в корневой папке проекта при локальной сборке. PhoneGap Build требует наличия файла config.xml в /www. Файл настроек является важной частью проекта на основе PhoneGap. Он включает в себя ссылки на ресурсы приложения, устанавливает необходимые разрешения и настраивает параметры для каждой из платформ (например, поведение status bar’а). Application (bundle) id и информация об издателе должна быть тоже указана в config.xml.
Plugins
Плагин это пакет, который позволяет автоматически внедрить native код в приложение и управлять native методами из Cordova Web View. Все основные функции PhoneGap/Cordova API реализованы при помощи плагинов, которые предоставляют доступ к возможностям и функциям устройства и платформы, которые недоступны обычному веб-приложению: сканирование QR кода, NFC, Push уведомления и даже Touch ID для iOS.
Существует реестр PhoneGap плагинов. Очень важно использовать плагины, совместимые с PhoneGap Build, иначе сборка будет возможно только локально.
Для добавления плагина в проект при локальной сборке используют команду plugin add из корневой папки проекта. Аргументом к этой команде является URL Git репозитория, содержащего код плагина:
PhoneGap Build требует указания id в файле config.xml для каждого плагина (что-то вроде зависимостей). Указывать конкретную версию не обязательно, но желательно, так как различные сборки плагина могут быть несовместимы, и придётся долго выяснять причину внезапно появившихся ошибок. Пример со страницы плагина:
Все плагины обычно имеют документацию (пускай, и не всегда подробную) на GitHub.
Поскольку мы используем Angular.js framework, а не чистый JavaScript, дополнительный компонент требуется для того, чтобы «обернуть» плагины. Он называется ngCordova.
ngCordova
ngCordova это коллекция из более чем 60 Angular.js расширений на основе Cordova API, которые позволяют упростить создание, тестирование и сборку мобильных приложений PhoneGap/Cordova. Проект поддерживается и развивается командой Ionic Framework. ngCordova предоставляет простые Angular.js wrapper’ы для самых популярных и часто используемых плагинов PhoneGap/Cordova и позволяет сделать фото, отсканировать QR код, загрузить файл, включить вспышку, получить текущую локацию, а также многое другое с помощью нескольких строк кода.
Для локальной сборки всё так же необходимо добавить плагин с помощью команды:
Для PhoneGap Build требуется ссылка на id плагина в config.xml:
ng-cordova.js импортируется из пакета ngCordova, script тэг должен быть расположен после импорта angular.js, иначе появятся ошибки, не имеющие отношения к проекту:
Важно не забыть добавить зависимость ngCordova к модулю:
Каждый ngCordova wrapper имеет свою документацию. Плагин для Push уведомлений и QR сканер были использованы и протестированы в нашем проекте. Сканер QR кодов (Barcode Scanner) был интегрирован без особых проблем, можно даже сказать «out-of-the-box», но настройка Push плагина заняла довольно длительное время в связи с недостатком документации – информацию приходилось собирать, просматривая огромный список issues на GitHub’е.
Push уведомления для Android (Google Cloud Messaging)
Краткая документация доступна на странице плагина ngCordova.
Важно! Payload часть push уведомления, отправляемая с сервера должна следовать определённому формату, иначе возможны проблемы с автоматическим появлением уведомлений в системном трее.
Было обнаружено, что объект data должен обязательно иметь поле «message» (в качестве текста уведомления) и «title» (если отсутствует, то заголовок уведомления будет пустым). Поле «uri» необходимо для того, чтобы указать действие, которое совершается при открытии уведомления.
Также важно отметить, что notificationReceived listener срабатывает тогда, когда приложение находится в foreground, а также в случае, когда пользователь открывает уведомление (переход из background’а в foreground). Push уведомления появляются автоматически в background’е и продолжают приходить даже после перезагрузки системы.
Push уведомления на iOS
Краткая документация доступна на странице плагина ngCordova.
В момент, когда разрабатывалось приложение, часть бэкенда, которая отвечает за отправку Apple Push уведомлений (APNS) была не готова. Решили использовать временное решение для тестирования и отладки. Node Push Server был выбран первоначально (т.к. по нему имелись рекомендации в некоторых мануалах по Phonegap/Cordova), но в ходе тестирования выяснилось, что в нём отсутствует поддержка кастомных полей для Push уведомлений на iOS (поддерживаются только badge, alert и sound, а нам нужно передавать uri для открытия определённой страницы) и из-за проблем с форматом некорректно работает на iOS 6 и iOS 7 (счётчик на иконке не отображается).
Существует несколько распространённых решений на рынке, но мы выбрали платформу Parse.com для наших тестовых уведомлений на iOS, т.к. условия Free Plan вполне достаточны для процесса разработки и тестирования.
Чтобы настроить уведомления: первым делом необходимо зарегистрироваться и зайти в настройки, раздел “Settings”, затем перейти в секцию “Push” для того, чтобы включить обработку push уведомлений и загрузить требуемый сертификат (*.p12). Вы можете узнать больше о работе Apple Push Notification Service здесь.
PhoneGap Build
— Что такое PhoneGap Build?
PhoneGap Build это бесплатный облачный сервис, построенный на основе PhoneGap/Cordova, который позволяет собирать кросс-платформенные мобильные приложения.
— Зачем нам PhoneGap Build?
PhoneGap Build позволяет делать сборки для iOS, Android и Windows Phone одновременно, без необходимости устанавливать какие-либо SDK tools (конечно, в этом есть доля лукавства – при разработке всё равно лучше делать сборку локально, хотя бы на Android, перед отправкой на тестирование). Но что более важно, этот сервис позволяет делать сборки для iOS в облаке без наличия Mac.
PhoneGap Build имеет собственный REST API, который может использоваться для автоматизации создания и обновления проектов, запуска сборки под iOS, Android и Windows Phone (можно выбирать платформу). Если вы используете GitHub, есть возможность настроить сервис для автоматической сборки после каждого коммита в репозитории. REST API позволяет авторизовать каждый HTTP запрос к серверу с помощью токена, вместо того, чтобы передавать имя пользователя и пароль в header’е.
После того как установочные пакеты для всех требуемых платформ сгенерированы с помощью PhoneGap Build, можно вручную загрузить их на сервис дистрибуции. Существует множество альтернативных вариантов: HockeyApp, TestFlight, TestFairy, но далее мы рассмотрим Ubertesters и изучим, как произвести автоматизацию сборки и дистрибуции с возможностью интеграции Ubertesters Upload API.
Ubertesters
— Почему Ubertesters?
Особенности и преимущества этого сервиса обсуждаются в этой статье.
Сервис Ubertesters предоставляет SDK для всех основных платформ (даже Phonegap/Cordova). Upload API, как уже было сказано, позволяет использовать continuous integration и автоматизировать дистрибуцию.
Чтобы открыть доступ к Upload API необходимо перейти на страницу профиля.
Документация доступна по ссылке.
Автоматизация задач
Существует несколько способов автоматизации процесса сборки для приложений на PhoneGap/Cordova. В качестве task manager’a можно использовать Grunt, Ant, Maven а в качестве среды для continuous integration Jenkins CI или Team City.
Конфигурация Grunt
Grunt требует наличия двух файлов: package.json (он определяет зависимости и базовые настройки) и gruntfile.js (конфигурация задач).
Для начала нужно установить grunt-cli:
Зависимости, заданные в package.json, могут быть удовлетворены с помощью npm install
Все необходимые модули будут установлены в /node_modules
Но также потребуется установить grunt-phonegap-build вручную:
Список задач Grunt
1) http:phonegap_build_version
Мы получаем текущую версию из сервиса PhoneGap Build с помощью HTTP GET запроса:
Методы и документация PhoneGap Build Read API доступны по ссылке.
2) readCurrentVersion
Результат http:phonegap_build_version возвращается в формате JSON и сохраняется по указанному пути:
В данный момент скрипт имеет баг: phonegap_app.json должен быть создан вручную до запуска (можно просто создать пустой JSON file). Текущая версия передаётся как параметр к modify_json.
3) modify_json
Обновляет значение текущей версии в package.json.
4) magikarp
Magikarp инкрементирует текущую версию в package.json. Опции доступны: major, minor и build.
5) readNextVersion
Инкрементированная версия из package.json передаётся в xmlpoke.
6) xmlpoke
Изменяет версию в файле www/config.xml.
7) compress
Сжимает содержимое папки www (не саму папку, это важно!), исключая ненужные файлы. Сжатый zip файл сохраняется по указанному пути target/phonegapp.zip
8) phonegap-build:debug
В данный момент debug и release ничем не различаются (release ключ ещё не сгенерирован для Android). Сжатый zip файл отправляется на сервис PhoneGap Build. Задача завершается только после сборки (ios/android) и сохранения установочных пакетов (ipa/apk).
Методы и документация PhoneGap Build Write API methods доступны по ссылке.
9) http:ubertesters_ios
Эта задача загружает ipa сборку на Ubertesters с помощью Upload API. Здесь можно использовать любой сервис дистрибуции мобильных приложений, если он имеет REST API.
10) http:ubertesters_android
Та же задача, но для Android apk.
11) PROFIT!
Grunt запускается локально с помощью команды ‘grunt’ или на сконфигурированном build сервере (TeamCity в нашем случае). Также есть возможность настроить TeamCity, чтобы вызывать процесс сборки и дистрибуции при каждом коммите.
Так можно сэкономить немало времени, используя continuous integration при сборке и тестировании мобильных приложений.
Phonegap push plugin что это
This project is not under active development. Folks who are users of this plugin should switch to using cordova-plugin-push which is a fork of this project.
phonegap-plugin-push
Register and receive push notifications
The links below take you to the version 2.x documentation which includes a number of breaking API changes from version 1.x, mostly the move from GCM to FCM. If you are using version 1.x please reference the docs in the v1.x branch.
This plugin offers support to receive and handle native push notifications with a single unified API.
This does not mean you will be able to send a single push message and have it arrive on devices running different operating systems. By default Android uses FCM and iOS uses APNS and their payloads are significantly different. Even if you are using FCM for both Android and iOS there are differences in the payload required for the plugin to work correctly. For Android always put your push payload in the data section of the push notification. For more information on why that is the case read Notification vs Data Payload. For iOS follow the regular FCM documentation.
This plugin does not provide a way to determine which platform you are running on. The best way to do that is use the device.platform property provided by cordova-plugin-device.
Do you like tutorial? You get tutorial!