尝试运行parse.com推送通知应用程序时,应用程序崩溃

时间:2015-06-19 03:31:35

标签: java android xml parse-platform push-notification

每当我运行它时,我的解析推送通知应用程序似乎都会崩溃。我仔细检查以确保权限是正确的,我的build.gradle也是正确的。我为Parse应用程序创建了一个Java类(我添加到src文件夹中)。以下是Parse应用程序,我的Android Manifest和build.gradle文件的代码。

BUILD.GRADLE文件

having

PARSEAPP.JAVA

buildscript {
repositories {
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:1.2.3'
}
}
apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
    applicationId "com.example.anish.parseexample"
    minSdkVersion 19
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:21.0.3'
    compile files('libs/Parse-1.9.2.jar')
}

的AndroidManifest.xml

 package com.example.anish.parseexample;

 import android.app.Application;

 import com.parse.Parse;
 import com.parse.PushService;

 public class ParseApp extends Application {
 @Override
 public void onCreate() {
    super.onCreate();
    Parse.initialize(this, "APP_ID_KEY_WAS_HERE", "CLIENT_ID_KEY_WAS_HERE");
    PushService.setDefaultPushCallback(this, MainActivity.class);
}
}

<?xml version="1.0" encoding="utf-8"?>

logcat的

<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="ANDROID.PERMISSION.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="ANDROID.PERMISSION.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="com.google.android.c2de.permission.RECEIVE"/>

<permission android:protectionLevel="signature" android:name="com.example.ani.parseexample.ParseApp.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.example.ani.parseexample.ParseApp.permission.C2D_MESSAGE"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:name=".ParseApp">
    <activity
        android:name=".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>
</application>

<service android:name="com.parse.PushService"/>
<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"/>
        <category android:name="com.example.ani.parseexample.ParseApp"/>
    </intent-filter>
</receiver>

</manifest>

如果logcat中缺少某些信息,请告诉我。我正在使用手机来运行应用程序,它会提供有关系统中其他正在运行的进程的许多错误消息。我已将Parse-1.9.2.jar文件夹转换为库,如果这有帮助的话。我也在https://parse.com/apps/quickstart#parse_push/android/native/existing尝试了解析示例,但这也没有奏效。有人可以帮忙吗?

此致

阿尼

1 个答案:

答案 0 :(得分:0)

首先

<uses-permission android:name="com.google.android.c2de.permission.RECEIVE"/>

应该是:

<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>

c2dm不是c2de

此外,在某些地方您使用的是com.example.anish,而在其他地方则使用com.example.ani。您应确保与清单/ gradle中定义的包一致。

permissionuses-permission和广播接收器中,您应该保持一致。在您的情况下,您的设置应该更像:

<!-- lowercase these 2 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/
<!-- end lowercase -->
...
<permission android:protectionLevel="signature" android:name="com.example.anish.parseexample.permission.C2D_MESSAGE"/>
<uses-permission android:name="com.example.anish.parseexample.permission.C2D_MESSAGE"/>
...
<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"/>
        <category android:name="com.example.ani.parseexample"/>
    </intent-filter>
</receiver>

我从未使用过parse.com,但上述内容是基于我对google cloud messaging setup的理解。