Как мне получить оповещения Parse.com Push, работающие в Android-приложении Cordova/Phonegap?

Как я могу использовать Parse.com для отправки Push-уведомлений в приложение для Android Cordova 3.5.0.

Большинство сообщений, похоже, затрагивают некоторые аспекты моей проблемы, но не полный диапазон (Parse/Android или Phonegap/Parse)

Я действительно решил это, но я поставил здесь полное решение, потому что мне пришлось использовать различные фрагментированные решения и форумы, чтобы найти ответ, и я думаю, что Cordova/Phonegap и Parse находятся в более популярной комбинации, и, похоже, много людей с подобными проблемами.

Ответ 1

Я задал множество вопросов, подобных этому, и сделал много поисковых запросов, и мне удалось собрать решение из разных мест.

Я создал свое приложение с помощью Cordova 3.5.0 через командную строку. Я считаю, что эти шаги будут работать так же хорошо с Phonegap 3.5.0 и, возможно, более ранними версиями обоих до тех пор, пока это сообщение 3 (CLI). Я использую Eclipse и инструменты ADT из Google

Это не работает с Phonegap Build, поскольку вам нужно редактировать файлы Java и XML в проекте Android.

Для тех, кто не знает, Phonegap - это дистрибутив Adobe Cordova, и он очень похож, но имеет некоторые дополнительные функции сверху, в основном для сборки Phonegap. Я думаю.

Для целей этого сообщения вы можете поменять местами Кордову на Phonegap, по крайней мере, на следующих шагах. Вам нужно будет сделать все эти шаги после создания проекта с помощью CLI Cordova

Кордова/Плагин для разбора

Я использовал следующий плагин для подключения Parse и Cordova. Существует несколько версий плагина, которые были разветвлены несколько раз, но версия от пользователя Github для пользователя benjie делает для вас большую часть автоматизации, сводя к минимуму необходимость заражения ваших рук исходным кодом. Инструкции по установке находятся на странице Github:

Обновление активности

Теперь вам нужно будет начать редактирование исходного кода.

Найдите основной класс активности для вашего приложения, в разделе src навигатора Eclipse он будет находиться в вашем основном пакете, что-то вроде com.company.myapp, а затем файл Example.java (Предположим, что это ваше имя проекта). Он будет создан для вас Кордовой.

В файле добавьте этот импорт, он может просто пойти после остальных операторов импорта:

import com.parse.ParseAnalytics;

И затем в конце метода onCreate добавьте это, чтобы отслеживать в Parse, когда пользователь открывает приложение из PN

ParseAnalytics.trackAppOpened(getIntent());

Расширение приложения

Эта последняя часть, которую я получил от старых справочных форумов по синтаксическому анализу, заняла у меня самое длинное время для решения.

Если вы покинете приложение, как сейчас, вы можете получать Push-уведомления. На самом деле вы должны проверить это, чтобы убедиться, что вы сделали это правильно до сих пор.

... но если вы закроете приложение (например, на Galaxy S2 нажмите и удерживайте кнопку "домой" ), вы перестанете прикладывать уведомления к Push Push.

Я считаю, что это потому, что вы убиваете все аспекты приложения, заставляя его закрываться, включая слушателя для PN.

Используя следующие сообщения, мне удалось заставить приложение получать PN файлы после принудительного закрытия:

Фактическое решение для меня состояло в том, чтобы выполнить следующие два шага:

1: добавьте новый файл с именем ExampleApplication.java рядом с вашим Example.java в com.company.myapp в разделе src в Eclipse. Файл нуждается в следующем содержимом, обновленном соответственно для вашего проекта (например, вашего пакета и ключей анализа):

package com.company.myapp;

import android.app.Application;
import android.content.Context;

import com.parse.Parse;
import com.parse.ParseInstallation;
import com.parse.PushService;

import com.company.myapp.Example;

public class ExampleApplication extends Application 
{
    private static ExampleApplication instance = new ExampleApplication();

    public ExampleApplication() {
        instance = this;
    }

    public static Context getContext() {
        return instance;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        // register device for parse
        Parse.initialize(this, "APP_KEY", "CLIENT_KEY");
        PushService.setDefaultPushCallback(this, Example.class);
        ParseInstallation.getCurrentInstallation().saveInBackground();
    }
}

2: обновите свой AndroidManifest.xml, чтобы тэг <application> имел следующее свойство, наряду с уже имеющимся:

android:name="com.company.myapp.ExampleApplication"

Резюме

Как только вы это сделаете, вы сможете отправлять уведомления в приложение Android.

Подводя итог:

  • Установите плагин Phonegap/Parse
  • Обновить основной класс активности
  • Расширить основной класс приложения

Вероятно, это переносится в проекты, отличные от eclipse, большинство шагов будет почти идентичным, и если у кого-то есть какая-либо обратная связь относительно Android Studio или здания без IDE, мы могли бы обновить этот ответ, чтобы это отразить.