Содержание


Создание Android-приложения, уведомляющего о праздниках, в среде Bluemix

Регистрация мобильных устройств для получения уведомлений о праздниках

Comments

В этой статье объясняется, как построить приложение для мобильных Android-устройств, которое уведомляет пользователей о праздниках на следующий месяц. Пользователь может зарегистрировать свое мобильное устройство в IBM® Bluemix™. В приложении также предусмотрены средства поиска праздничных дней за определенный период времени, что полезно при планировании отпуска. 

Во многих компаниях отдел кадров в начале года рассылает список праздников в формате Excel. Такую электронную таблицу очень неудобно открывать на Android-устройствах, чтобы просмотреть все предстоящие праздники в разных географических регионах. Фильтровать список на мобильном устройстве тоже неудобно (например, когда нужно увидеть предстоящие праздники на декабрь и у вас нет под рукой ноутбука).

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

Приложение, построенное с помощью Mobile Cloud Starter в Bluemix, использует следующие службы Bluemix:

Приложение состоит из двух частей: клиентской и серверной. Клиент содержит пользовательский интерфейс (UI), который позволяет зарегистрировать устройство и указать, когда нужно получать уведомления (еженедельно или ежемесячно). Интерфейс также позволяет просматривать праздники за определенный период времени. Его код находится в папке client.

Сервер содержит два компонента:

  • код, который определяет API REST для отправки уведомлений еженедельно и ежемесячно. Каждый из этих методов возвращает список праздников и передает их в качестве входных данных методу sendNotificationByTags;
  • два процесса-планировщика: еженедельный и ежемесячный. Каждый планировщик вызывает необходимый API REST (определенный в app.js), еженедельно или ежемесячно, для отправки пользователям уведомлений с соответствующим списком праздников.

Даты праздников хранятся в файле CSV, который находится в папке public с кодом сервера (в нашем случае, Holidays.csv). Тот же файл загружается в службу mobile data с именем класса Holidays.

Что нужно для создания приложения

Запустить приложениеПолучить код

Шаг 1. Настройка Eclipse с ADT

Загрузите и настройте Eclipse с модулем Android Developer Tools (ADT) от Android.

  1. Откройте Eclipse и выберите Window > SDK Manager. Выберите инструменты платформы SDK Android и платформу Android. Наш проект основан на Android 4.4.2, API 19.
  2. Выберите все из раздела Android 4.4.2 (API19).
  3. Выберите пакет Google Play Services в разделе Extras.
  4. В SDK Manager выберите Intel x 86 emulator accelerator (установщик HAXM).
  5. Нажмите кнопку INSTALL.

    Примечание. При установке кода из sdkmanager установщик HAXM загружается, но не устанавливается. Этот установщик находится в папке adt-bundle\sdk\extras\intel, и его нужно запустить вручную.

  6. Настройка эмулятора мобильного устройства. Выберите пункт Window > Android virtual device manager и добавьте эмулятор мобильного устройства. Этот шаг необходимо выполнить правильно, чтобы эмулятор мог получать уведомления.

Загрузка кода

  1. Войдите в DevOps Services со своим ID IBM.
  2. Перейдите по ссылке Go to MyHolidays.
  3. Нажмите кнопку FORK PROJECT и дайте своей копии проекта имя. Прежде чем нажать кнопку CREATE, не забудьте записать или скопировать URL-адрес проекта.
  4. Получите Git, если он у вас еще не установлен. В Git откройте командную строку, перейдите (cd) в каталог, куда вы хотите загрузить код, и выполните следующую команду:
    git clone <url to your forked project>
  5. Установите Node.js если у вас его еще нет. Node.js позволяет тестировать приложения в локальной среде.
  6. Установите npm (менеджер пакетов).

Шаг 2. Создание приложения и настройка служб

  1. Войдите в Bluemix и создайте приложение:
    1. Выберите Create an App.
    2. Выберите вид приложения MOBILE.
    3. Выберите платформу Android.
    4. Дайте своему приложению подходящее имя и нажмите кнопку Finish.
    5. Выберите ANDROID и нажмите кнопку Continue.

      Приложение со службами

  2. Выберите Add Service и добавьте к приложению службу Workload Scheduler Beta.
  3. Вы увидите экран, аналогичный показанному ниже. Нажмите кнопку CLOSE, не обращая внимания на сообщение об ошибке.
  4. Вернитесь в приложение. Откройте службу Mobile Data Service, щелкните на вкладке Manage Data и импортируйте свой файл CSV со списком праздников, указав имя класса Holidays. Пример CSV-файла Holidays.csv (с типичным форматом) содержится в каталоге server\public. Этот файл создает класс в mobile data, который используется интерфейсом Get Holidays из пользовательского интерфейса (в коде клиента) для выбора праздников за определенный период времени.

    С помощью этого приложения можно также добавлять в службу mobile data такие данные, как номер мобильного телефона и местоположение пользователя, которого нужно уведомлять. (См. файл RegistrationActivity.java в коде клиента.)

    Файл Holidays.csv, используемый в приложении, содержит следующие поля:

    • Serial
    • HolidayName
    • dateString
    • day
    • type
    • location

Если вы планируете использовать свой собственный файл Holidays.csv, то он должен иметь следующий формат:

Настройка службы Bluemix Push

Workload Scheduler отправляет уведомления зарегистрированным пользователям с помощью службы IBM Push. Чтобы настроить службу Push, откройте руководство Создание Android-приложения с использованием службы IBM Push для Bluemix и выполните инструкции из следующих разделов:

  • Прежде чем начать: получите номер проекта API Google и GCM API Key, необходимые для Push;
  • Добавление к проекту Play Services (при использовании Android Studio пропустите этот шаг);
  • Добавление к проекту JAR-архивов SDK IBM CloudCode Client и IBM Push (при использовании Android Studio пропустите этот шаг);
  • Добавление в Bluemix-приложение номера проекта и GCM API Key Google API.

Примечание. Шаг по редактированию файла app.js для указания фактического ID и маршрута приложения можно пропустить. В нашем проекте эти настройки сделаны в файле appconfigs.js (в папке server кода).

Создайте теги weeklybangalore, weeklyhyderabad, monthlybangalore и monthlyhyderabad. Эти теги нужны для того, чтобы приложение отправляло еженедельные (теги, начинающиеся с weekly) и ежемесячные уведомления (теги, начинающиеся с monthly). Чтобы рассылать корректные списки праздников, мы добавляем название географического региона. Например, если пользователь подписан на еженедельные уведомления в Бангалор, то в его мобильное устройство будут поступать уведомления с тегом weeklybangalore. (Фрагмент кода, где пользователь регистрируется на push-уведомления и подписывается на эти теги, находится в файле RegistrationActivity.java).

Если в вашем файле Holidays.csv есть регион, отличающийся от регионов, перечисленных в файле Holidays.csv примера, создайте теги weekly<locationname1>, weekly<locationname2>, monthly<locationname1>, monthly<locationname2> и т.п. Изменяя имена тегов, не забудьте внести необходимые изменения:

  • в своем Android-приложении исправьте файл RegistrationActivity.java, указав имена регионов и частоту рассылки уведомлений;
  • в файле App.js исправьте имя тега, который передается в метод req.push.sendNotificationByTag.

Можно добавить в приложение еще несколько тегов и подписаться на эти теги - например, bi-monthly<locationname>, чтобы уведомления отправлялись два раза в месяц, или monthlyall, чтобы ежемесячно отправлялся список праздников для всех регионов. Для этого нужно изменить Android-приложение, файл app.js (см. выше), а также Workload Scheduler. Для новых интервалов рассылки вам понадобится один или более процессов планировщика (раз в два месяца, ежеквартально и т.д.).

Шаг 3. Настройка и запуск приложения (клиент)

Чтобы получить работающий код примера приложения на стороне клиента:

  1. Откройте Eclipse и импортируйте Android-проект в папку client загруженного кода.
  2. Отредактируйте файл src/client/assests/myHolidays.properties, указав значения applicationID, applicationSecret и applicationRoute с панели управления Bluemix.
  3. Загрузите файл https://mbaas-catalog.ng.bluemix.net/sdk/ibm-bluemix-sdk-android.zip. Введите этот URL в браузер, и вы увидите всплывающее окно с предложением сохранить файл. Разархивируйте его и скопируйте JAR-архивы (ibmbluemix.jar, ibmcloudcode.jar, ibmpush.jar и ibmdata.jar) в папку libs своего проекта Android.
  4. Выполните следующие действия, чтобы включить службу Push:
    1. Импортируйте в свою рабочую область библиотеку Google Play Services из ADT_installation_dir\sdk\extras\google\google_play_services.

      Щелкните на файле File > Import > Android > Existing Android Code в рабочей области и перейдите в папку проекта библиотеки, чтобы импортировать ее. Выберите вариант Copy, чтобы скопировать проекты в рабочую область.

    2. Добавьте в приложение ссылку на библиотеку Google Play Services. Щелкните на проекте правой кнопкой мыши и выберите Properties > Android > Library > Add (чтобы добавить ссылку на Google Play Services из рабочей области своего проекта).
  5. Выполните сборку кода и запустите приложение на виртуальном устройстве Android (AVD). Нажмите кнопку Register, чтобы зарегистрировать свое устройство и получать уведомления еженедельно или ежемесячно.

Можно также выбрать Get Holidays, чтобы просмотреть список праздников для выбранного региона. Наш код отображает все праздники за год для определенного региона. Можно изменить его, чтобы он выдавал праздники только на следующие 30 дней и т.п.

Зарегистрировавшись, перейдите в службу Push на консоли Bluemix и проверьте, зарегистрировано ли ваше мобильное устройство. Попробуйте отправить уведомления на зарегистрированные мобильные устройства.

Перейдите в службу Mobile Data на консоли Bluemix, выберите Manage data, и вы увидите, что создан новый класс Registrations, содержащий информацию, с которой вы зарегистрировались.

Шаг 4. Настройка и запуск приложения (сервер)

На стороне сервера:

  1. Отредактируйте файл appconfig.json, указав applicationId и маршрут своего приложения.
  2. Необязательно: если вы не используете файл примера Holidays.csv, прилагаемый к руководству, загрузите или скопируйте свой собственный файл holidays.csv в папку public в каталоге node. (Это должен быть тот же файл, который вы загрузили в службу Mobile Data на шаге 2).
  3. Отредактируйте файл manifest.yml, указав имя и маршрут своего приложения.
  4. Передайте и разверните изменения в Bluemix.

Развертывание изменений в Bluemix

Чтобы развернуть приложение Node.js в среде Bluemix, используйте любой из следующих методов:

Теперь приложение работает в Bluemix. Проверьте его в своем браузере, набрав URL.

Шаг 5. Настройка службы Workload Scheduler

  1. На консоли Bluemix откройте службу Workload Scheduler Окно сообщения об ошибках
    Окно сообщения об ошибках
  2. Нажмите кнопку CLOSE, не обращая внимания на сообщение об ошибке. Вы увидите экран, аналогичный показанному ниже. Окно Workload Scheduler
    Окно Workload Scheduler

    Подождите, пока инициализируется подписка; это может занять несколько минут.

  3. После инициализации подписки выделенные сообщения исчезнут. Выберите Manage your processes > Manage simple processes.
  4. Создайте два процесса: для ежемесячных и для еженедельных уведомлений. Окно библиотеки процесса
    Окно библиотеки процесса
  5. На вкладке Triggers создайте триггер, который указывает, когда запускать этот процесс. Окно Edit Trigger
    Окно Edit Trigger
  6. Перейдите на вкладку Steps и создайте новый пункт. Дважды щелкните на нем и выберите RESTful и свой агент. Окно Edit Step
    Окно Edit Step
  7. Оставьте поле Authentication пустым, если только вы не указали какие-нибудь механизмы проверки подлинности в службе Mobile Application Security.
  8. В поле Action введите serviceuri в виде https://mobile.mybluemix.net/${appHostName}/v1/apps/${applicationId}/monthlyNotifications/ (в зависимости от планируемого периода рассылки уведомлений).
  9. Выберите метод POST.
  10. В поле HTTP Query Parameters введите секретный ключ своего приложения:
    "applicationSecret=<application secret>
  11. Поля Body и Advanced оставьте как есть. Нажмите кнопку OK.
  12. Разрешите процесс.
  13. Чтобы убедиться, что все идет хорошо, нажмите кнопку Run Now.

Шаг 6. Приложение готово

Просмотрите уведомления на своем AVD (эмуляторе) или на мобильном устройстве с установленным приложением.

Заключение

В этом руководстве показано, как создать простое мобильное приложение на базе Android, в котором можно регистрировать мобильные устройства и запустить планировщик в фоновом режиме для регулярной рассылки push-уведомлений зарегистрированным пользователям.

Мы показали, как настроить и развернуть мобильное приложение Android с помощью четырех служб Bluemix.


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления, Мобильные приложения
ArticleID=1016504
ArticleTitle=Создание Android-приложения, уведомляющего о праздниках, в среде Bluemix
publish-date=10012015