Android Parse没有得到推送通知

时间:2014-04-12 19:51:53

标签: android parsing crash push

我已经将Parse发布到我的应用程序中,然后我从他们的网站推送了一个notfication,并且由于某种原因我没有得到它。 虽然它在网站上显示状态是“不”,但我不明白。 然后我看了一下logcat,也许我的代码中的东西不好。 然后它告诉我,我需要确保我在The Manifest上有一些许可...然后我查看了它仍然没有发现什么遗漏\错误。 有什么要改变/再次检查以获得推送通知?

MainActivity

   package nir.rauc.mapstutori;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import com.parse.Parse;
import com.parse.ParseAnalytics;
import com.parse.ParseObject;
import com.parse.PushService;

public class MainActivity extends Activity {
    GoogleMap map;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Parse
        Parse.initialize(this, "DontRightitonstackoverflow",
                "DontRightitonstackoverflow");
        ParseObject testObject = new ParseObject("TestObject");
        testObject.put("Hello", "What's up my nigga");
        testObject.saveInBackground();
        PushService.setDefaultPushCallback(this, Pictures.class);
        ParseAnalytics.trackAppOpened(getIntent());
        // Google Maps things

        GoogleMap map = ((MapFragment) getFragmentManager().findFragmentById(
                R.id.map)).getMap();

        LatLng rent = new LatLng(31.732703, 35.182333);

        map.setMyLocationEnabled(true);
        map.moveCamera(CameraUpdateFactory.newLatLngZoom(rent, 13));

        map.addMarker(new MarkerOptions().title("for Rent").draggable(true)
                .snippet("Click for more info.").position(rent));
        map.setOnMarkerClickListener(new OnMarkerClickListener() {

            @Override
            public boolean onMarkerClick(Marker marker) {
                Intent intent = new Intent(MainActivity.this, Details.class);
                startActivity(intent);
                return true;
            }
        });
        ;
    }
}

我的清单:

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

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="18" />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />

    <permission
        android:name="nir.rauc.mapstutoris.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="nir.rauc.mapstutori.permission.C2D_MESSAGE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:largeHeap="true"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <activity
            android:name="nir.rauc.mapstutori.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>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyBpdh2ViLlc-UvlGBNaiFBZTZNOWpJBDyc" />

        <activity
            android:name="nir.rauc.mapstutori.Details"
            android:label="@string/title_activity_details" >
        </activity>
        <activity
            android:name="nir.rauc.mapstutori.Pictures"
            android:label="something" >
        </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.google.android.gcm.GCMBroadcastReceiver"
            android:permission="com.google.android.c2dm.permission.SEND" >
            <intent-filter>

                <!-- Receives the actual messages. -->
                <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                <!-- Receives the registration id. -->
                <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

                <category android:name="nir.rauc.mapstutori" />
            </intent-filter>
        </receiver>
    </application>

</manifest>

我的Logcat错误:

  04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): Cannot use GCM for push because the app manifest is missing some required declarations. Please make sure that these permissions are declared as children of the root <manifest> element:
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <uses-permission android:name="android.permission.INTERNET" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <uses-permission android:name="android.permission.VIBRATE" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <uses-permission android:name="android.permission.WAKE_LOCK" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <uses-permission android:name="android.permission.GET_ACCOUNTS" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <permission android:name="nir.rauc.mapstutori.permission.C2D_MESSAGE" android:protectionLevel="signature" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <uses-permission android:name="nir.rauc.mapstutori.permission.C2D_MESSAGE" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): Also, please make sure that these services and broadcast receivers are declared as children of the <application> element:
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <service android:name="com.parse.PushService" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): <receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802):   <intent-filter>
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802):     <action android:name="com.google.android.c2dm.intent.RECEIVE" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802):     <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802):     <category android:name="nir.rauc.mapstutori" />
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802):   </intent-filter>
04-13 00:08:38.129: E/com.parse.ManifestInfo(2802): </receiver>
04-13 00:08:38.129: E/com.parse.PushService(2802): Tried to use push, but this app is not configured for push due to: Push is not configured for this app because the app manifest is missing required declarations. Please add the following declarations to your app manifest to support either GCM or PPNS for push (or both). To enable GCM support, please make sure that these permissions are declared as children of the root <manifest> element:
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.INTERNET" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.VIBRATE" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.WAKE_LOCK" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.GET_ACCOUNTS" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <permission android:name="nir.rauc.mapstutori.permission.C2D_MESSAGE" android:protectionLevel="signature" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="nir.rauc.mapstutori.permission.C2D_MESSAGE" />
04-13 00:08:38.129: E/com.parse.PushService(2802): Also, please make sure that these services and broadcast receivers are declared as children of the <application> element:
04-13 00:08:38.129: E/com.parse.PushService(2802): <service android:name="com.parse.PushService" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND">
04-13 00:08:38.129: E/com.parse.PushService(2802):   <intent-filter>
04-13 00:08:38.129: E/com.parse.PushService(2802):     <action android:name="com.google.android.c2dm.intent.RECEIVE" />
04-13 00:08:38.129: E/com.parse.PushService(2802):     <action android:name="com.google.android.c2dm.intent.REGISTRATION" />
04-13 00:08:38.129: E/com.parse.PushService(2802):     <category android:name="nir.rauc.mapstutori" />
04-13 00:08:38.129: E/com.parse.PushService(2802):   </intent-filter>
04-13 00:08:38.129: E/com.parse.PushService(2802): </receiver>
04-13 00:08:38.129: E/com.parse.PushService(2802): To enable PPNS support, please make sure that these permissions are declared as children of the root <manifest> element:
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.INTERNET" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.VIBRATE" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <uses-permission android:name="android.permission.WAKE_LOCK" />
04-13 00:08:38.129: E/com.parse.PushService(2802): Also, please make sure that these services and broadcast receivers are declared as children of the <application> element:
04-13 00:08:38.129: E/com.parse.PushService(2802): <service android:name="com.parse.PushService" />
04-13 00:08:38.129: E/com.parse.PushService(2802): <receiver android:name="com.parse.ParseBroadcastReceiver">
04-13 00:08:38.129: E/com.parse.PushService(2802):   <intent-filter>
04-13 00:08:38.129: E/com.parse.PushService(2802):     <action android:name="android.intent.action.BOOT_COMPLETED" />
04-13 00:08:38.129: E/com.parse.PushService(2802):     <action android:name="android.intent.action.USER_PRESENT" />
04-13 00:08:38.129: E/com.parse.PushService(2802):   </intent-filter>
04-13 00:08:38.129: E/com.parse.PushService(2802): </receiver>
04-13 00:08:38.509: E/SELinux(2907): selinux_android_seapp_context_reload: seapp_contexts file is loaded from /data/security/spota/seapp_contexts
04-13 00:08:38.604: E/EnterpriseContainerManager(2964): ContainerPolicy Service is not yet ready!!!
04-13 00:08:38.699: E/SELinux(2922): selinux_android_seapp_context_reload: seapp_contexts file is loaded from /data/security/spota/seapp_contexts
04-13 00:08:38.859: E/SELinux(2935): selinux_android_seapp_context_reload: seapp_contexts file is loaded from /data/security/spota/seapp_contexts
04-13 00:08:39.109: E/SELinux(2980): selinux_android_seapp_context_reload: seapp_contexts file is loaded from /data/security/spota/seapp_contexts
04-13 00:08:40.054: E/APKPackageMonitor(7355): Some unrelated APK installed
04-13 00:08:40.554: E/app2sd(2223): GET ROOT = false
04-13 00:08:40.569: E/app2sd(2223): GET ROOT = false
04-13 00:08:50.254: E/WifiWatchdogStateMachine.QualitySocketHandler(2964): No http request!
04-13 00:08:58.849: E/Watchdog(2964): !@Sync 264
04-13 00:09:28.849: E/Watchdog(2964): !@Sync 265
04-13 00:09:58.854: E/Watchdog(2964): !@Sync 266
04-13 00:10:28.849: E/Watchdog(2964): !@Sync 267
04-13 00:10:46.289: E/AudioResampler(2499): Unsupported sample format, 1 bits, 2 channels
04-13 00:10:58.854: E/Watchdog(2964): !@Sync 268
04-13 00:11:28.854: E/Watchdog(2964): !@Sync 269

2 个答案:

答案 0 :(得分:0)

你的清单应该是:

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

            <uses-feature
                android:glEsVersion="0x00020000"
                android:required="true" />

            <uses-sdk
                android:minSdkVersion="11"
                android:targetSdkVersion="18" />

            <uses-permission android:name="android.permission.INTERNET" />
            <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
            <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
            <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
            <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
            <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
            <uses-permission android:name="android.permission.WAKE_LOCK" />
            <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
            <uses-permission android:name="android.permission.VIBRATE" />
            <uses-permission android:name="android.permission.GET_ACCOUNTS" />

    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <permission android:name="nir.rauc.mapstutori.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    <uses-permission android:name="nir.rauc.mapstutori.permission.C2D_MESSAGE" />

            <application
                android:allowBackup="true"
                android:icon="@drawable/ic_launcher"
                android:label="@string/app_name"
                android:largeHeap="true"
                android:theme="@style/AppTheme" >
                <meta-data
                    android:name="com.google.android.gms.version"
                    android:value="@integer/google_play_services_version" />

                <activity
                    android:name="nir.rauc.mapstutori.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>

                <meta-data
                    android:name="com.google.android.maps.v2.API_KEY"
                    android:value="AIzaSyBpdh2ViLlc-UvlGBNaiFBZTZNOWpJBDyc" />

                <activity
                    android:name="nir.rauc.mapstutori.Details"
                    android:label="@string/title_activity_details" >
                </activity>
                <activity
                    android:name="nir.rauc.mapstutori.Pictures"
                    android:label="something" >
                </activity>

                <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="nir.rauc.mapstutori" />
   </intent-filter>
 </receiver>

                <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>

            </application>

        </manifest>

答案 1 :(得分:0)

Parse.initialize(this, "DontRightitonstackoverflow",
                "DontRightitonstackoverflow");

应该在MyApplication.class中 还添加到清单:

   <application
    android:name=".MyApplication"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.FullScreen" >

这是My Manifest:

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

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="21" />

    <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" />
    <uses-permission android:name="com.parse.anywall.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
      <uses-permission android:name="com.parse.anywall.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <!--
     The following permission is not required to use
     Google Maps Android API v2, but is recommended.
    -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

    <!--
  IMPORTANT: Change "YOUR_PACK_NAME.permission.C2D_MESSAGE" in the lines below
  to match your app's package name + ".permission.C2D_MESSAGE".

    -->
    <permission
        android:name="YOUR_PACK_NAME.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />

    <uses-permission android:name="YOUR_PACK_NAME.permission.C2D_MESSAGE" />

    <application
        android:name=".Application"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/Theme.FullScreen" >

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

          <meta-data android:name="com.google.android.gms.version" 
            android:value="@integer/google_play_services_version" />
        <activity
            android:name=".SampleActivity"
             android:screenOrientation="portrait"
            android:label="@string/app_name" >
        </activity>

        <service android:name="com.parse.PushService" />

        <receiver android:name=".MyBroadcastReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.USER_PRESENT" />
            </intent-filter>
        </receiver>
        <receiver
            android:name=".MyReceiver"
            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 "YOUR_PACK_NAME" to match your app's package name. -->
                <category android:name="YOUR_PACK_NAME" />
            </intent-filter>
        </receiver>

        <activity
            android:name=".PostActivity"
             android:screenOrientation="portrait"
            android:label="@string/title_activity_post" >
        </activity>
        <activity
            android:name=".AdminBrowserActivity"
             android:screenOrientation="portrait"
            android:label="@string/title_activity_admin_browser" >
        </activity>
    </application>

</manifest>