如何在Cordova/Phonegap Android应用中实现Parse.com推送通知?

10

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

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

事实上,我已经解决了这个问题,但是我将完整的解决方案放在这里,因为我不得不使用各种碎片化的解决方案和论坛来找到答案,而且我认为Cordova/Phonegap和Parse是一种越来越流行的组合,并且有很多类似问题的人。

2个回答

11

我曾提出了许多类似的问题,并进行了大量的谷歌搜索,从各种地方拼凑出了一个解决方案。

我使用命令行通过 Cordova 3.5.0构建了我的应用程序。我相信这些步骤也能够适用于 Phonegap 3.5.0,以及较早版本的 Cordova/Phonegap 只要它是 post 3 (CLI)。 我正在使用来自 Google 的 Eclipse 和 ADT 工具

这个方法在 Phonegap Build 上行不通,因为您必须编辑 Android 项目中的 Java 和 XML 文件

对于那些不知道的人,Phonegap 是 Adobe 的 Cordova 分发版,非常相似,但增加了一些附加功能,主要供 Phonegap Build 使用。

对于本文,你可以在以下步骤中将 Cordova 替换为 Phonegap。在使用 Cordova CLI 创建项目后,需要完成所有这些步骤。

Cordova/Parse 插件

我使用了以下插件将 Parse 和 Cordova 连接起来。有多个版本的插件,已经被 fork 出去几次了,但是 Github 用户 benjie 版本的插件为您提供了最多的自动化支持,最小化了您必须亲手修改源代码的需求。 安装说明可以在该 Github 页面找到:

更新 Activity

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

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

在文件中添加此导入语句,它可以放置在其他导入语句之后:

import com.parse.ParseAnalytics;

然后在onCreate方法的结尾添加以下内容,以便在用户从PN打开应用程序时在Parse中进行跟踪

ParseAnalytics.trackAppOpened(getIntent());

扩展应用程序

这部分内容来自于旧的Parse帮助论坛,花费了我最长的时间来解决。

如果您将应用程序保留在当前状态,您可以接收推送通知。实际上,您应该测试一下以确保到目前为止做得正确。

但是,如果您强制关闭应用程序(例如,在Galaxy S2上按住主页按钮并滑动应用程序),则会停止应用程序接收推送通知。

我认为这是因为通过强制关闭应用程序,包括用于 PNs 的监听器在内,您在杀死应用程序的每个方面。

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

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

1:在Eclipse的com.company.myappsrc部分中,在Example.java旁边添加一个名为ExampleApplication.java的新文件。该文件需要根据您的项目进行以下更新(例如,您的包和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();
    }
}

2:更新您的AndroidManifest.xml文件,以使<application>标签具有以下属性,以及它已经拥有的属性:

<uses-library android:name="org.apache.http.legacy" android:required="false" />
android:name="com.company.myapp.ExampleApplication"

摘要

完成这些步骤后,您应该能够向您的Android应用程序发送推送通知。

总结一下:

  • 安装Phonegap / Parse插件
  • 更新主活动类
  • 扩展主应用程序类

这个过程可能适用于非Eclipse项目,大部分步骤将保持几乎相同,如果有任何反馈关于Android Studio或在没有IDE的情况下构建,则我们可以更新此答案以反映出来。


非常有用的信息。您如何处理接收推送通知?您是否使用 Cordova 推送通知插件? - Caleb Sandfort
Cordova/Parse插件的部分内容,请参考https://github.com/benjie/phonegap-parse-plugin。 - Pete

0

是的,这就是我在指南中使用的插件,但我展示的是整个过程,而不仅仅是插件,因为它并不像简单地包含插件那样简单。 - Pete

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接