【发布时间】:2015-03-03 18:08:50
【问题描述】:
当我在我的 Android 手机上测试 Parse Push 时,只要应用程序运行,推送通知就会出现。
如果应用程序关闭:我只收到一条消息说<App name> has stopped. - 我没有收到任何推送 - 但仍然收到停止通知弹出窗口。我已逐步遵循 Parse 中的快速入门指南。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.ostsia.ostsia">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!--
IMPORTANT: Change "com.parse.starter.permission.C2D_MESSAGE" in the lines below
to match your app's package name + ".permission.C2D_MESSAGE".
-->
<permission android:protectionLevel="signature"
android:name="org.ostsia.ostsia.permission.C2D_MESSAGE" />
<uses-permission android:name="org.ostsia.ostsia.permission.C2D_MESSAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ostsia"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="org.ostsia.ostsia.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<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>
<receiver android:name="com.parse.ParsePushBroadcastReceiver"
android:exported="false">
<intent-filter>
<action android:name="com.parse.push.intent.RECEIVE" />
<action android:name="com.parse.push.intent.DELETE" />
<action android:name="com.parse.push.intent.OPEN" />
</intent-filter>
</receiver>
<receiver android:name="com.parse.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<!--
IMPORTANT: Change "com.parse.starter" to match your app's package name.
-->
<category android:name="org.ostsia.ostsia" />
</intent-filter>
</receiver>
</application>
</manifest>
03-03 21:27:10.829 31149-31149/org.ostsia.ostsia E/com.parse.PushService﹕ The Parse push service cannot start because Parse.initialize has not yet been called. If you call Parse.initialize from an Activity's onCreate, that call should instead be in the Application.onCreate. Be sure your Application class is registered in your AndroidManifest.xml with the android:name property of your <application> tag.
03-03 21:27:10.829 31149-31149/org.ostsia.ostsia D/AndroidRuntime﹕ Shutting down VM
03-03 21:27:10.839 31149-31149/org.ostsia.ostsia E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: org.ostsia.ostsia, PID: 31149
java.lang.RuntimeException: Unable to start service com.parse.PushService@4d17bf6 with Intent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10 pkg=org.ostsia.ostsia cmp=org.ostsia.ostsia/com.parse.PushService (has extras) }: java.lang.RuntimeException: applicationContext is null. You must call Parse.initialize(context, applicationId, clientKey) before using the Parse library.
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3278)
at android.app.ActivityThread.access$2200(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1520)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5834)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
Caused by: java.lang.RuntimeException: applicationContext is null. You must call Parse.initialize(context, applicationId, clientKey) before using the Parse library.
at com.parse.Parse.checkContext(Parse.java:451)
at com.parse.Parse.getApplicationContext(Parse.java:219)
at com.parse.ManifestInfo.getContext(ManifestInfo.java:322)
at com.parse.ManifestInfo.getPackageName(ManifestInfo.java:326)
at com.parse.ManifestInfo.getIntentReceivers(ManifestInfo.java:131)
at com.parse.ManifestInfo.hasIntentReceiver(ManifestInfo.java:123)
at com.parse.ManifestInfo.getPushUsesBroadcastReceivers(ManifestInfo.java:174)
at com.parse.PushService.wipeRoutingAndUpgradePushStateIfNeeded(PushService.java:454)
at com.parse.PushService.onStartCommand(PushService.java:435)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3261)
at android.app.ActivityThread.access$2200(ActivityThread.java:172)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1520)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5834)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
03-03 21:27:12.599 31149-31149/org.ostsia.ostsia I/Process﹕ Sending signal. PID: 31149 SIG: 9
【问题讨论】:
-
接收器中可能存在一些错误,因此当您收到通知时应用程序崩溃。尝试获取一些日志
-
是的,请查看更新后的帖子。
-
你检查了吗?
applicationContext is null. You must call Parse.initialize(context, applicationId, clientKey) before using the Parse library. -
这就是我的文件现在的样子; public class MainActivity extends Activity { /** 首次创建活动时调用。 */ WebView 网页; @Override public void onCreate(Bundle savedInstanceState) { Parse.initialize(this, "XXXX", "XXXX");该行是否应该在“ WebView web;”之下/之上?
-
你绝对不应该在 MainActivity 中初始化解析,在 applicaton 类中进行
标签: android parse-platform push-notification