我已经将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
答案 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>