如何在Cordova/Phonegap Android应用程序中使用Parse.com推送通知?

Pet*_*ete 10 java eclipse android cordova parse-platform

如何使用Parse.com将推送通知发送到我的Cordova 3.5.0 Android应用程序.

大多数帖子似乎涵盖了我的问题的某些方面,但不是全范围(Parse/Android或Phonegap/Parse)

我实际上已经解决了这个问题,但我在这里提出了完整的解决方案,因为我必须使用各种支离破碎的解决方案和论坛才能找到答案,而且我认为Cordova/Phonegap和Parse的组合越来越受欢迎,而且似乎成为很多有类似问题的人.

Pet*_*ete 11

我已经问了很多与此相似的问题并且进行了大量的谷歌搜索,我已经成功地将来自不同地方的解决方案拼凑起来.

我通过命令行使用Cordova 3.5.0构建了我的应用程序.我相信这些步骤与Phonegap 3.5.0以及两者的早期版本一样,只要它的第3篇(CLI).我正在使用Eclipse和谷歌的ADT工具

这不适用于Phonegap Build,因为您必须编辑Android项目中的Java和XML文件

对于那些不知道的人,Phonegap是Adobe的Cordova发行版,非常相似,但在顶部有一些额外的功能,主要用于我认为的Phonegap Build.

出于本文的目的,您可以将Cordova换成Phonegap,至少在以下步骤中.使用Cordova CLI创建项目后,您需要执行所有这些步骤

Cordova/Parse插件

我使用以下插件连接Parse和Cordova.该插件有多个版本,它已被分叉几次,但Github用户benjie版本的版本为您提供了最大程度的自动化,最大限度地减少了使用源代码弄脏的需要.安装说明可在Github页面上找到:

更新活动

您现在需要开始编辑源代码.

找到你的应用程序的主要Activity类,在Eclipse导航器的src部分中它将在你的主程序包中,比如com.company.myapp然后是Example.java文件(假设Example是你的项目名称).它将由Cordova为您生成.

在文件中添加此导入,它可以在其余的import语句之后执行:

import com.parse.ParseAnalytics;
Run Code Online (Sandbox Code Playgroud)

然后在onCreate方法结束时添加此项,以便在用户从PN打开应用程序时跟踪Parse

ParseAnalytics.trackAppOpened(getIntent());
Run Code Online (Sandbox Code Playgroud)

扩展应用程序

我从旧的Parse帮助论坛获得了最后一部分,并且花了我最长的时间来解决.

如果您将应用程序保留为当前状态,则可以接收推送通知.事实上,你应该测试一下,以确保你到目前为止已经做到了.

...但是如果你强行关闭应用程序(例如在Galaxy S2上按住主页按钮,然后轻扫应用程序),就会阻止应用程序接收推送通知.

我相信这是因为你通过迫使它关闭来杀死应用程序的各个方面,包括PN的监听器.

使用以下帖子我设法让应用程序在强制关闭后接收PN:

对我来说,实际的解决方案是执行以下两个步骤:

1:添加一个名为新的文件ExampleApplication.java旁边您Example.javacom.company.myappSRC Eclipse中的部分.该文件需要以下内容,并根据您的项目进行相应更新(例如您的包和Parse密钥):

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

2:更新您的AndroidManifest.xml,以便您<application>标记具有以下属性,以及它已有的属性:

android:name="com.company.myapp.ExampleApplication"
Run Code Online (Sandbox Code Playgroud)

摘要

完成后,您应该能够将通知推送到Android应用程序.

总结一下:

  • 安装Phonegap/Parse插件
  • 更新主Activity类
  • 扩展主Application类

这可能转移到非日食项目,大多数步骤将保持几乎相同,如果任何人有关于Android Studio的任何反馈或没有IDE的建设,那么我们可以更新此答案以反映这一点.