当前位置: 首页 > 面试题库 >

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

戚阳文
2023-03-14
问题内容

如何使用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页面上可以找到安装说明:

  • https://github.com/benjie/phonegap-parse-plugin(不再维护-尝试其他fork

更新活动

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

在您的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

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

1:添加一个名为新的文件ExampleApplication.java旁边您Example.javacom.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插件
  • 更新主活动类
  • 扩展主应用程序类

这可能可以转移到非日食项目,大多数步骤将几乎保持不变,并且如果有人对Android
Studio或没有IDE的构建有任何反馈,那么我们可以更新此答案以反映这一点。



 类似资料:
  • 我正在尝试使用parse.com推送通知服务向我的iOS应用添加推送通知,但我遇到了一些问题,我的一些设备没有收到通知。 当前代码 这似乎在某些设备上起作用(在同事的iPhone5上测试过--起作用了,在我老板的iPhone6上测试过--不起作用) 第43行: 警告2: /users/ds/code/rp-ios/rp/appdelegate.swift:44:25:iOS 8.0中不推荐使用“R

  • 问题内容: 我正在做一个聊天应用程序。在应用程序中,我必须使用parand andorid sdk的推送通知进行聊天。我成功地在不同用户之间生成了推送通知。但无法接收推送并将其数据添加到列表视图中。这是最原始文件的代码 和我的自定义收件人的代码 从Java代码中,我像这样发送推: 请告诉我使用接收器接收数据的地方是错误的,当我接受推送意味着进一步前进的逻辑或想法时该怎么办。提前致谢 问题答案: 这

  • 问题内容: 这是我的使用PARSE发送推送消息的应用程序代码 上面的代码在哪里传递我的请求参数(正文)?如何将我的请求构建为JSON格式?在此先感谢您。请帮助我解决此问题。 问题答案: 使用.net中的parse运行波纹管代码以进行推送通知。

  • 我知道这个问题已经问过很多次了,但是我仍然无法从parse.com获得推送通知 推送通知正在从parse.com成功发送,但我的应用程序没有接收到它们。 大多数人用这个解决了他们的问题:我不能在应用程序中接收来自对我不起作用的Parse bt的推送通知。 我也试过Android--不能接收来自parse.com的推送。 有些人建议改变包的名称,我做了,甚至做了一个新的应用程序,但没有帮助。 这是我

  • 问题内容: 我一直在构建一个简单的应用程序来学习angular.js。到目前为止,我已经将MEAN堆栈中的所有内容连接在一起,并且能够从Mongo中保存和检索数据。 该应用程序本质上是一个待办事项列表。用户可以创建一个项目,并在项目内部创建带有“待办事项”的“卡片”,然后可以从一个州转移到另一个州(“积压”,“进行中”,“完成”等)。 我希望能够将通知推送给所有已连接的人员,以告知其应用程序需要刷

  • 我有一个使用Xamarin.Forms的应用程序,针对IOS,Android和WP 8。 我的应用中需要推送通知功能。 我看过<code>pushsharp</code>演示,它似乎很有前途。但我看到的所有代码都是针对每个平台分别编写的。 我希望这件事能在法庭上进行。Forms项目,在App.cs中的某个地方,这样我就不需要重复注册设备的代码,也不需要处理应该如何处理推送通知。 任何帮助都将不胜感