如何使用Parse.com将推送通知发送到我的Cordova 3.5.0 Android应用程序.
大多数帖子似乎涵盖了我的问题的某些方面,但不是全范围(Parse/Android或Phonegap/Parse)
我实际上已经解决了这个问题,但我在这里提出了完整的解决方案,因为我必须使用各种支离破碎的解决方案和论坛才能找到答案,而且我认为Cordova/Phonegap和Parse的组合越来越受欢迎,而且似乎成为很多有类似问题的人.
我已经问了很多与此相似的问题并且进行了大量的谷歌搜索,我已经成功地将来自不同地方的解决方案拼凑起来.
我通过命令行使用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页面上找到:
https://github.com/benjie/phonegap-parse-plugin(不再维护 - 尝试不同的分支)
更新活动
您现在需要开始编辑源代码.
找到你的应用程序的主要Activity类,在Eclipse导航器的src部分中它将在你的主程序包中,比如com.company.myapp然后是Example.java
文件(假设Example是你的项目名称).它将由Cordova为您生成.
在文件中添加此导入,它可以在其余的import语句之后执行:
import com.parse.ParseAnalytics;
然后在onCreate
方法结束时添加此项,以便在用户从PN打开应用程序时跟踪Parse
ParseAnalytics.trackAppOpened(getIntent());
扩展应用程序
我从旧的Parse帮助论坛获得了最后一部分,并且花了我最长的时间来解决.
如果您将应用程序保留为当前状态,则可以接收推送通知.事实上,你应该测试一下,以确保你到目前为止已经做到了.
...但是如果你强行关闭应用程序(例如在Galaxy S2上按住主页按钮,然后轻扫应用程序),就会阻止应用程序接收推送通知.
我相信这是因为你通过迫使它关闭来杀死应用程序的各个方面,包括PN的监听器.
使用以下帖子我设法让应用程序在强制关闭后接收PN:
https://www.parse.com/questions/push-notification-in-android-while-app-closed
https://www.parse.com/questions/cannot-send-push-to-android-after-app-is-closed-until-screen-unlock
对我来说,实际的解决方案是执行以下两个步骤:
1:添加一个名为新的文件ExampleApplication.java
旁边您Example.java
在com.company.myapp在SRC 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(); } }
2:更新您的AndroidManifest.xml,以便您<application>
标记具有以下属性,以及它已有的属性:
android:name="com.company.myapp.ExampleApplication"
摘要
完成后,您应该能够将通知推送到Android应用程序.
总结一下:
安装Phonegap/Parse插件
更新主Activity类
扩展主Application类
这可能转移到非日食项目,大多数步骤将保持几乎相同,如果任何人有关于Android Studio的任何反馈或没有IDE的建设,那么我们可以更新此答案以反映这一点.