我已经将Parse启动到我的应用程序中,然后从theyr'e网站上推送了通知,由于某种原因,我没有收到通知。
尽管它在网站上显示状态为“无”,但我不明白。
然后我看了一下logcat,也许我的代码中的某些内容不好。
然后它告诉我,我需要确保对Manifest拥有一定的权限...然后我查看了一下,仍然没有发现缺少的内容/错误的内容。
进行什么更改/再次检查以获得推送通知?

主要 Activity

   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

最佳答案

您的清单应类似于:

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

关于android - Android Parse没有收到推送通知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23035352/

10-09 06:52
查看更多