我如何使用 Parse.com 将推送通知发送到我的 Cordova 3.5.0 Android 应用。
大多数帖子似乎涵盖了我的问题的某些方面,但不是全部(Parse/Android 或 Phonegap/Parse)
我实际上已经解决了这个问题,但我将完整的解决方案放在这里是因为我不得不使用各种零散的解决方案和论坛来找到答案,而且我认为 Cordova/Phonegap 和 Parse 在越来越流行的组合,似乎有很多人有类似的问题。
最佳答案
我问了很多与此类似的问题,并进行了大量谷歌搜索,我设法从各个地方拼凑出一个解决方案。
我已经通过命令行使用 Cordova 3.5.0 构建了我的应用程序。我相信这些步骤与 Phonegap 3.5.0 以及两者的早期版本一样适用,只要它是 post 3 (CLI)。我正在使用 Eclipse 和 Google 的 ADT 工具
这不适用于 Phonegap Build,因为您必须在 Android 项目中编辑 Java 和 XML 文件
对于那些不知道的人,Phonegap 是 Adobe 的 Cordova 发行版,非常相似,但在顶部有一些额外的功能,我认为主要用于 Phonegap Build。
为了本文的目的,您可以将 Cordova 换成 Phonegap,至少在以下步骤中是这样。使用 Cordova CLI 创建项目后,您需要执行所有这些步骤
Cordova/Parse 插件
我使用了以下插件来连接 Parse 和 Cordova。该插件有多个版本,它已经 fork 了几次,但是 Github 用户 benjie 的版本为您完成了最多的自动化,最大限度地减少了您动手操作的需要源代码。安装说明可在 Github 页面上找到:
- https://github.com/benjie/phonegap-parse-plugin (不再维护 - 尝试不同的分支)
更新 Activity
您现在需要开始编辑源代码。
在 Eclipse 导航器的 src 部分找到您的应用程序的主要 Activity 类,它将位于您的主包中,类似于 com.company.myapp然后是 Example.java
文件(假设 Example 是您的项目名称)。它将由 Cordova 为您生成。
在文件中添加这个导入,它可以紧跟在其余的导入语句之后:
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
我的实际解决方案是执行以下 2 个步骤:
1: 添加一个名为 ExampleApplication.java
的新文件在你的旁边 Example.java
在 Eclipse 的 src 部分的 com.company.myapp 中。该文件需要以下内容,并针对您的项目进行相应更新(例如您的包和解析 key ):
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 类
- 扩展主应用程序类
这可能可以转移到非 Eclipse 项目,大部分步骤将保持几乎相同,如果有人对 Android Studio 或在没有 IDE 的情况下构建有任何反馈,那么我们可以更新此答案以反射(reflect)这一点。
关于java - 如何让 Parse.com 推送通知在 Cordova/Phonegap Android 应用程序中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25038694/