2014-04-12 197 views
0

我已經啓動了解析到我的應用程序,然後我從他們的網站推了一個通知,並且出於某種原因,我沒有得到它。 雖然它在網站上顯示的狀態是「不」,但我不明白。 然後我看着logcat上,也許在我的代碼中的東西不好。 然後它顯示我需要確保我在The Manifest上有一些權限......然後我仔細查看了它,但仍然沒有發現什麼是\ missing \ missing。 如何更改/再次檢查以獲取推送通知?Android解析不會推送通知

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): [email protected] 264 
04-13 00:09:28.849: E/Watchdog(2964): [email protected] 265 
04-13 00:09:58.854: E/Watchdog(2964): [email protected] 266 
04-13 00:10:28.849: E/Watchdog(2964): [email protected] 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): [email protected] 268 
04-13 00:11:28.854: E/Watchdog(2964): [email protected] 269 
+0

犯規此'機器人:名字=「com.parse.tutorials。 pushnotifications.permission.C2D_MESSAGE「'必須使用你的」nir.rauc.mapstutori「包? – Stan

+0

我在他們的網站上看到這樣保留它。現在檢查它。 –

+0

嘗試改變自己的包反正 – Stan

回答

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

仍然無法正常工作。我編輯了我的Android清單,請檢查它。 –

+0

但仍然有刪除推送通知。使「nir.rauc.mapstutori.permission.C2D_MESSAGE」 – Stan

+0

刪除它,仍然無法正常工作。再次更新清單..上帝我沮喪從它 –

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

這裏是我的清單:

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