Настройте push-уведомления городского дирижабля с телефонной связью на Android

У меня есть приложение PhoneGap/Cordova, и я хочу добавить push-уведомления с помощью подключаемого модуля городского дирижабля для PhoneGap. Выглядит многообещающе. Я пытаюсь следовать инструкциям от Urban Airship и смотреть в примере на GitHub. Проблема в том, что я разработчик html5-css3-JavaScript, а не разработчик Java/Android. Я использую Эклипс.

Я изменил файл AndroidManifest.xml, как в примере, указав имя моего пакета, где это уместно.

Я импортировал файлы .java PushNotificationPlugin.java, IntentReceiver.java и MainApplication.java в дерево проекта в папке src. Теперь появляются ошибки, например "Не удается разрешить импорт com.urbanairship.UAirship".

Смотрите скриншот ниже, чтобы увидеть мой прогресс и ошибки.

введите здесь описание изображения

Мои вопросы:

«Установите файлы PushNotificationPlugin.java и IntentReceiver.java в свой проект Android». Где я должен разместить эти файлы в дереве проекта и должен ли я каким-либо образом ссылаться на них? Должен ли я также установить файл MainApplication.java где-то и как?

«Инициализируйте библиотеку Urban Airship в своем классе Application». Какой файл в моем дереве проектов PhoneGap является классом Application и где в этом файле я могу скопировать и вставить код Urban Airship?

«Инструментируйте свой основной класс Activity». Мне нужно добавить эти несколько строк Java в основное действие Cordova. В каком файле содержится основная активность Cordova и куда в этом файле я могу скопировать-вставить столь желанный код Urban Airship?

Любая помощь будет принята с благодарностью! Я даже создам для вас простое приложение Sencha Touch, если вы поможете мне заставить его работать...


person ʕ ᵔᴥᵔ ʔ    schedule 05.01.2013    source источник


Ответы (1)


У меня тоже были проблемы с настройкой. Это то, что я сделал, чтобы наконец заставить его работать, в дополнение к тому, что сказано в этот учебник:

  1. скопируйте файл urbanairship[...].jar в папку libs вашего проекта (из-за этого отсутствующего файла у вас есть ошибки на экране печати)
  2. импортируйте файлы MainApplication.java, IntentReceiver.java в основной пакет (come.waywayway.easyapp). Обновите имена пакетов в этих файлах. Мне также пришлось заменить ACTION_LOCATION_SERVICE_BOUND на ACTION_SUFFIX_LOCATION_SERVICE_BOUND в IntentReceiver.
  3. импортируйте файл PushNotificationPlugin.java в пакет com.urbanairship.phonegap.plugins (поместите его в src/com/urbanairship/phonegap/plugins), обновите импорт IntentReceiver, указав имя вашего пакета, и обязательно укажите ссылку на плагин в res /xml/config.xml, например:

    <plugin name="PushNotificationPlugin" value="com.urbanairship.phonegap.plugins.PushNotificationPlugin"/>
    
  4. обновите класс основной активности (easyapp.java), чтобы он соответствовал классу основной активности примера приложения (UAPhonegapSample.java).
  5. импортируйте и обновите файлы airship.properties и location.properties, как описано в руководстве.
  6. На основе файла примера приложения AndroidManifest.xml обновите свой. Не забудьте добавить android:name=".MainApplication" в качестве атрибута объекта приложения.

Как только это будет сделано, вы сможете отправить тестовое уведомление с консоли городского дирижабля. APID вашего устройства должен отображаться в консоли Eclipse при запуске приложения. Вам не нужны файлы Javascript, если вы просто хотите получать уведомления.

person Raphael    schedule 24.01.2013
comment
Как только вы захотите начать использовать функции javascript, вам просто нужно активировать плагин, добавив ‹plugin name=PushNotificationPlugin value=com.urbanairship.phonegap.plugins.PushNotificationPlugin/› в ваш config.xml и включив файл PushNotification.js в ваш html-файл. Они не говорят о файле config.xml в учебнике, это дало мне некоторую ошибку обратного вызова javascript: ошибки класса не найдены... Если кто-то столкнется с той же проблемой... - person Raphael; 29.01.2013
comment
Рафаэль, спасибо большое! попробую по вашей инструкции. Когда у меня снова будет время... - person ʕ ᵔᴥᵔ ʔ; 02.02.2013
comment
... и Вы действительно ответили на мои вопросы - person ʕ ᵔᴥᵔ ʔ; 02.02.2013
comment
Я пробовал это пару раз, и я должен упустить что-то смехотворно простое. Я продолжаю получать java.lang.ClassCastException: com.mydomain.myapp/com.mydomain.myapp.MainApplication cannot be cast to android.app.Activity ... есть идеи, что я могу упустить? - person Jason M. Batchelor; 02.04.2013
comment
@ mori57 У меня тоже было такое. Решение состояло в том, чтобы удалить атрибут android:name из элемента приложения в манифесте. Теперь мое приложение создается/работает нормально и даже регистрируется в UA, но по какой-то причине все еще не получает push-уведомления. - person jackocnr; 04.09.2013
comment
Я знаю, что в конце концов мы запустили это, но я не могу вспомнить, было ли это из-за того, что мы обновились до более новой версии или вернулись к более старой версии. Некоторое время последняя библиотека Cordova была несовместима с последней библиотекой UA, что вызывало у нас бесконечную путаницу. В конце концов, однако, мы так и не выпустили программное обеспечение, и оно было передано третьей стороне для использования в качестве нативного приложения. - person Jason M. Batchelor; 04.09.2013
comment
@ mori57 mori57, если вам интересно, мы в конечном итоге заработали с Phonegap 3 и последней библиотекой UA. - person jackocnr; 06.10.2013