这篇文章主要围绕如何在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 消息推送)
- 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 消息推送)
如何使用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.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插件
- 更新主活动类
- 扩展主应用程序类
这可能可以转移到非日食项目,大多数步骤将几乎保持不变,并且如果有人对Android
Studio或没有IDE的构建有任何反馈,那么我们可以更新此答案以反映这一点。
AJAX请求Cordova / PhoneGap 2.1.0 Android应用程序中的自签名HTTPS资源
this.setWebViewClient(this.appView,new MyWebViewClient(this));
…到MainActivity类’重写的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从我的应用程序中删除).
有任何想法吗?非常感谢您的帮助!
编辑:请在回复之前查看我的评论.
解决方法
@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无法接收推送通知
我用快速指南试图解决我的问题.我试图使用这个指定名称的频道和“”作为频道名称.我也找到了 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
我真的想收到通知.我究竟做错了什么?
解决方法
android – Apache Cordova和PhoneGap有什么区别?
但我对安装程序非常困惑.
首先,我在我的Windows 7 32位系统中安装了nodejs.
然后我从phonegap网站上运行命令.这是链接http://phonegap.com/install/
我能够创建一个项目.
但我面临一个错误,无法启动模拟器.(我设置了环境变量.)
然后我经历了几个网站,他们说要运行以下命令.
C:> npm install -g cordova
如果我运行任何进一步的命令,它要求我安装Apache ANT.
但很多人都说我的手机和手机芯都是一样的.
所以我有点困惑,因为我必须要求我的上级在我的办公室PC上下载和安装软件.
请建议我任何给我这个程序的网站.
解决方法
科尔多瓦首先发布了一个版本,通常会发布手机版.
两者之间的主要区别在于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补丁启动画面
<preference name="SplashScreen" value="splash" /> <preference name="SplashScreenDelay" value="5000" />
还有什么需要设置吗?还有其他线索吗?提前致谢!
解决方法
主要问题是大多数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补丁启动画面的相关知识,请在本站搜索。
本文标签: