www.91084.com

GVKun编程网logo

如何在Cordova / Phonegap Android应用中使用Parse.com推送通知?(cordova 消息推送)

10

这篇文章主要围绕如何在Cordova/PhonegapAndroid应用中使用Parse.com推送通知?和cordova消息推送展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何在Cordov

这篇文章主要围绕如何在Cordova / Phonegap Android应用中使用Parse.com推送通知?cordova 消息推送展开,旨在为您提供一份详细的参考资料。我们将全面介绍如何在Cordova / Phonegap Android应用中使用Parse.com推送通知?的优缺点,解答cordova 消息推送的相关问题,同时也会为您带来AJAX请求Cordova / PhoneGap 2.1.0 Android应用程序中的自签名HTTPS资源、Android parse.com无法接收推送通知、android – Apache Cordova和PhoneGap有什么区别?、android – Cordova / PhoneGap 9补丁启动画面的实用方法。

本文目录一览:

如何在Cordova / Phonegap Android应用中使用Parse.com推送通知?(cordova 消息推送)

如何在Cordova / Phonegap Android应用中使用Parse.com推送通知?(cordova 消息推送)

如何使用Parse.com将推送通知发送到我的Cordova 3.5.0 Android应用程序。

大多数帖子似乎涵盖了我问题的某些方面,但没有涵盖全部范围(Parse / Android或Phonegap / Parse)

我实际上已经解决了这个问题,但由于需要使用各种零散的解决方案和论坛来找到答案,因此我将完整的解决方案放在此处,而且我认为Cordova /
Phonegap和Parse的组合越来越流行,而且似乎很多有类似问题的人。

答案1

小编典典

我问过许多与此类似的问题,并做了很多谷歌搜索,而且我设法从各个地方拼凑出一个解决方案。

我已经通过命令行使用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的构建有任何反馈,那么我们可以更新此答案以反映这一点。

AJAX请求Cordova / PhoneGap 2.1.0 Android应用程序中的自签名HTTPS资源

AJAX请求Cordova / PhoneGap 2.1.0 Android应用程序中的自签名HTTPS资源

我正在尝试实现Chris发现 here提供的解决方法,允许PhoneGap / Cordova构建的Android应用程序向具有自签名SSL证书的服务器发出AJAX HTTPS请求.我正在使用PhoneGap / Cordova 2.1.0,而Chris正在使用1.7.0.我可以毫无问题地创建MyWebViewClient类.但是,当我添加这行代码时……

this.setWebViewClient(this.appView,new MyWebViewClient(this));

…到M​​ainActivity类’重写的init()方法,我收到此错误:

The method setWebViewClient(CordovaWebView,MyWebViewClient) is undefined for the type MainActivity

这是MyWebViewClient.java的代码:

package [packagename];

import android.net.http.SslError;
import android.webkit.SslErrorHandler;
import android.webkit.WebView;
import org.apache.cordova.CordovaWebViewClient;
import org.apache.cordova.DroidGap;

public class MyWebViewClient extends CordovaWebViewClient {

    public class MyWebViewClient(DroidGap ctx) {
        super(ctx);
    }

    @Override
    public void onReceivedSslError(WebView view,SslErrorHandler handler,SslError error) {
        handler.proceed();
    }
}

这是我的MainActivity.java代码:

package [packagename];

import android.os.Bundle;
import org.apache.cordova.*;

public class MainActivity extends DroidGap {

    @Override
    public void init() {
        super.init();
        this.setWebViewClient(this.appView,new MyWebViewClient(this)); // Error occurs here
    }

    @Override
    public void onCreate(bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setBooleanProperty("keeprunning",false);
        super.loadUrl("file:///android_asset/www/index.html");
    }
}

我没有足够的声誉,否则我会对Chris的回答发表评论.此外,我不是在寻找一个jQuery解决方案(我已经知道我可以进行$.ajax()调用来避免这个问题,但我试图将jQuery从我的应用程序中删除).

有任何想法吗?非常感谢您的帮助!

编辑:请在回复之前查看我的评论.

解决方法

这可以在以后的Cordova版本中修复如下(我正在使用2.2).如上所述,它在onPageStarted()失败 – 这是因为它期望一个appView,它是null,因此你得到一个NullPointerException.设置appView似乎解决了它,例如

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.init();

    CordovaWebViewClient webViewClient = new CustomWebViewClient(this);
    webViewClient.setWebView(this.appView);
    this.appView.setWebViewClient(webViewClient);

    super.loadUrl("file:///android_asset/www/index.html");

}

请注意,还需要super.init()

Android parse.com无法接收推送通知

Android parse.com无法接收推送通知

我无法使用parse.com服务接收推送通知.
我用快速指南试图解决我的问题.我试图使用这个指定名称的频道和“”作为频道名称.我也找到了 Cannot receive push notifications in Android with trigger.io and parse.com
我成功将对象发送到parse.com,并订阅通知(至少我可以在parse.com上的Databrowser中看到我的应用)

public class ParseStarterProjectActivity extends Activity {

     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

         setContentView(R.layout.main);

          PushService.subscribe(this,"push",TestParse.class);
          PushService.setDefaultPushCallback(this,TestParse.class);

     }
}


 public class ParseApplication extends Application {

      @Override
      public void onCreate() {
       super.onCreate();
       Parse.initialize(this,my_id,my_client_key);
      }  

}

public class TestParse extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.parse);
    }
}

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.parse.starter"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="17" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:name="ParseApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <service android:name="com.parse.PushService" />

        <receiver android:name="com.parse.ParsebroadcastReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_PRESENT" />
            </intent-filter>
        </receiver>

        <activity
            android:name=".ParseStarterProjectActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".TestParse"
            android:label="@string/app_name" />
    </application>

</manifest>

最近我注意到LogCat错误:

02-21 18:17:45.381: ERROR/Trace(8952): error opening trace file: No such file or directory (2)

02-21 18:17:48.534: ERROR/com.parse.PushService(8888): unkNown host

 我真的想收到通知.我究竟做错了什么?

解决方法

在这里解雇员工.为了处理我们的推送服务增加的负载,我们增加了服务push.parse.com的机器数量.当DNS解析返回这么多服务器时,一些ISP开始出现问题.上周五下午,我们推出了一个自定义DNS服务器,解决了第三方DNS解决方案的这些问题.这应该不再是一个问题.

android – Apache Cordova和PhoneGap有什么区别?

android – Apache Cordova和PhoneGap有什么区别?

嗨,我需要开发一个简单的应用程序,它是在kitkat版本的 android中运行的混合.由于可以使用PhoneGap 3.3,我一直在尝试安装它.

但我对安装程序非常困惑.

首先,我在我的Windows 7 32位系统中安装了nodejs.

然后我从phonegap网站上运行命令.这是链接http://phonegap.com/install/
我能够创建一个项目.
但我面临一个错误,无法启动模拟器.(我设置了环境变量.)

然后我经历了几个网站,他们说要运行以下命令.

C:> npm install -g cordova

如果我运行任何进一步的命令,它要求我安装Apache ANT.

但很多人都说我的手机和手机芯都是一样的.

所以我有点困惑,因为我必须要求我的上级在我的办公室PC上下载和安装软件.

请建议我任何给我这个程序的网站.

解决方法

Phonegap和cordova使用几乎相同的存储库,但它们不一样.Phonegap构建在cordova之上.

科尔多瓦首先发布了一个版本,通常会发布手机版.

两者之间的主要区别在于phonegap允许您在线构建应用程序
https://build.phonegap.com/

两者都有非常不同的文档

这是cordova http://cordova.apache.org/docs/en/3.0.0/guide_cli_index.md.html的链接

并链接到phonegap http://docs.phonegap.com/en/3.0.0/guide_cli_index.md.html

如果您注意到纪录片中的phonegap插件中的链接,您会注意到phonegap使用了cordova的插件

Phonegap不断追赶cordova.我有点偏向cordova.我建议你决定哪个更适合你

android – Cordova / PhoneGap 9补丁启动画面

android – Cordova / PhoneGap 9补丁启动画面

我有一个9补丁图片(splash.9.png)我想用作我的Cordova(3.4.0)应用程序启动画面.如果我从 Eclipse运行(Cordova) Android项目,一切都按照预期的那样,即出现闪屏,只有可拉伸的区域被拉伸.但是,如果我使用命令行界面运行应用程序,整个启动屏幕将被拉伸/变形,就好像Cordova不会将其视为9补丁图像,而是作为常规.png.我在config.xml中指定了以下内容:

<preference name="SplashScreen" value="splash" />
<preference name="SplashScreenDelay" value="5000" />

还有什么需要设置吗?还有其他线索吗?提前致谢!

解决方法

好的,答案与你的9patch图像的弹性区域有一切关系.我通过ping github问题找到了答案.用户将我发送到另一个讨论,其中有人破解了它.

主要问题是大多数9patch教程解释了如何拉伸按钮,但没有详细说明如何使图像居中.

在讨论的一半时间内查找绿色/蓝色/红色图像.

http://community.phonegap.com/nitobi/topics/stretched_9_patch_splash_screens_android

回归副本:
http://web.archive.org/web/20160405060404/http://community.phonegap.com/nitobi/topics/stretched_9_patch_splash_screens_android

我的关键是看边缘.很难看到(至少对我而言),但是你几乎找不到沿着边缘的黑色标记来定义弹性区域.顶部有2个小区域(绿色),左边有2个小(绿色),底部有一个长(蓝色),右边有一个长(蓝色).

另外,提供了一些XML以允许在垂直和水平方向上使用单个图像.

因此,我发现这一个图像(与查看线条一样难)比9patch的工作方式更好,而不是我观看的所有教程.

今天关于如何在Cordova / Phonegap Android应用中使用Parse.com推送通知?cordova 消息推送的讲解已经结束,谢谢您的阅读,如果想了解更多关于AJAX请求Cordova / PhoneGap 2.1.0 Android应用程序中的自签名HTTPS资源、Android parse.com无法接收推送通知、android – Apache Cordova和PhoneGap有什么区别?、android – Cordova / PhoneGap 9补丁启动画面的相关知识,请在本站搜索。

本文标签: