如何使用Parse.com向我的Cordova 3.5.0 Android应用程序发送推送通知。
大多数帖子似乎只涵盖了我问题的某些方面,但不是全部(Parse/Android或Phonegap/Parse)。
事实上,我已经解决了这个问题,但是我将完整的解决方案放在这里,因为我不得不使用各种碎片化的解决方案和论坛来找到答案,而且我认为Cordova/Phonegap和Parse是一种越来越流行的组合,并且有很多类似问题的人。
如何使用Parse.com向我的Cordova 3.5.0 Android应用程序发送推送通知。
大多数帖子似乎只涵盖了我问题的某些方面,但不是全部(Parse/Android或Phonegap/Parse)。
事实上,我已经解决了这个问题,但是我将完整的解决方案放在这里,因为我不得不使用各种碎片化的解决方案和论坛来找到答案,而且我认为Cordova/Phonegap和Parse是一种越来越流行的组合,并且有很多类似问题的人。
我曾提出了许多类似的问题,并进行了大量的谷歌搜索,从各种地方拼凑出了一个解决方案。
我使用命令行通过 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.myapp的src部分中,在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应用程序发送推送通知。
总结一下:
这个过程可能适用于非Eclipse项目,大部分步骤将保持几乎相同,如果有任何反馈关于Android Studio或在没有IDE的情况下构建,则我们可以更新此答案以反映出来。
这个插件在我的应用程序中运行良好。