如何使用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和Google的ADT工具
这不适用于Phonegap Build,因为您必须在Android项目中编辑Java和XML文件
对于那些不知道的人,Phonegap是Adobe发行的Cordova,非常相似,但是最上面还有一些附加功能,主要是我认为适用于Phonegap Build。
出于本文的目的,至少在以下步骤中,您可以将Cordova换成Phonegap。使用Cordova CLI创建项目后,您需要执行所有这些步骤。
Cordova / Parse插件
我使用以下插件来连接Parse和Cordova。该插件有多个版本,已经被分叉了几次,但是Github用户 benjie 的版本为您提供了最大程度的自动化,从而最大程度地减少了对源代码的 麻烦 。在Github页面上可以找到安装说明:
更新活动
您现在需要开始编辑源代码。
在您的Eclipse导航器的 src 部分中找到应用程序的主Activity类,它将位于 com.company.myapp之 类的主包中,然后是该Example.java文件(假设 Example 是您的项目名称)。它会由Cordova为您生成。
Example.java
在文件中添加此导入,它可以紧跟其余的导入语句:
import com.parse.ParseAnalytics;
然后在onCreate方法末尾添加此代码,以在用户从PN打开应用程序时跟踪Parse
onCreate
ParseAnalytics.trackAppOpened(getIntent());
扩展应用程序
这是我从旧的Parse帮助论坛中获得的最后一部分,它使我花费了最长的时间来解决问题。
如果您离开应用程序当前状态,则可以接收推送通知。实际上,您应该对它进行测试,以确保到目前为止已正确完成。
…但是, 如果您强行关闭应用程序(例如,在Galaxy S2上按住主屏幕按钮,然后将应用程序滑开),则该应用程序将无法接收推送通知。
我相信这是因为您通过强制关闭应用程序(包括PN的侦听器)来杀死应用程序的各个方面。
使用以下帖子,我在强制关闭应用程序后设法让该应用程序接收PN:
对我来说,实际的解决方案是执行以下两个步骤:
1:添加一个名为新的文件ExampleApplication.java旁边您Example.java在 com.company.myapp 在 SRC Eclipse中的部分。该文件需要以下内容,并针对您的项目进行了相应更新(例如,包和Parse键):
ExampleApplication.java
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>标记具有以下属性以及已拥有的属性:
<application>
android:name="com.company.myapp.ExampleApplication"
摘要
完成此操作后,您应该可以将通知推送到Android应用程序。
总结一下:
这可能可以转移到非日食项目,大多数步骤将几乎保持不变,并且如果有人对Android Studio或没有IDE的构建有任何反馈,那么我们可以更新此答案以反映这一点。