Intereting Posts
«Оптимизация» доступа к курсорам в Android: позиции и имена столбцов Android FFmpegMediaPlayer Error (0, 0) во время воспроизведения? Откройте последнюю закрытую вкладку в Android Studio Как снести общие, бесконечные наблюдаемые с задержкой после того, как последний абонент отказался от подписки Изменить конфигурацию Что означают номера сборки в телефоне Android. Как они формируются. Указывают ли они на какой-то смысл, который я не могу понять? Android – создайте LinearLayout, который содержит прокручиваемый ListView Не удалось завершить сеанс установки … Подписи несовместимы – Android Accountmanager.addAccount () vs Accountmanager.addAccountExplicitly () FragmentPagerAdapter не удаляет элементы (фрагменты) правильно Ошибка приложения при использовании функции SherlockFragmentActivity Обновить ListView после операции удаления Любой эквивалент раскадровки iOS для разработки Android? Выбор цвета выбора позиции строки Recyclerview Android webview: Как изменить текст заголовка javaScript-заголовка в веб-обозревателе Android?

Push-уведомление не получает андроид

В моем приложении я пытаюсь получить уведомление с сервера, но я не получаю сообщения. Некоторое время у меня есть это исключение (но не все время):

E/com.parse.ManifestInfo﹕ 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: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name="com.test.parsepushnotification.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.test.parsepushnotification.permission.C2D_MESSAGE" /> Also, please make sure that these services and broadcast receivers are declared as children of the <application> element: <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.test.parsepushnotification" /> </intent-filter> </receiver> E/com.parse.PushService﹕ 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: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name="com.test.parsepushnotification.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.test.parsepushnotification.permission.C2D_MESSAGE" /> Also, please make sure that these services and broadcast receivers are declared as children of the <application> element: <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.test.parsepushnotification" /> </intent-filter> </receiver> To enable PPNS support, please make sure that these permissions are declared as children of the root <manifest> element: <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> Also, please make sure that these services and broadcast receivers are declared as children of the <application> element: <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> 

Но я получаю его не все время. Код: Приложение:

 public class TestApplication extends Application { @Override public void onCreate() { super.onCreate(); // Enable Local Datastore. Parse.enableLocalDatastore(this); Parse.initialize(this, appKey, clientKey); ParsePush.subscribeInBackground("", new SaveCallback() { @Override public void done(ParseException e) { if (e == null) { Log.d("com.parse.push", "successfully subscribed to the broadcast channel."); } else { Log.e("com.parse.push", "failed to subscribe for push", e); } } }); ParseUser.enableAutomaticUser(); ParseACL defaultACL = new ParseACL(); // Optionally enable public read access. // defaultACL.setPublicReadAccess(true); ParseACL.setDefaultACL(defaultACL, true); } } 

Все время SaveCallback return «успешно подписался на широковещательный канал». Даже если я получу исключение, о котором я говорил выше.

манифест

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.test.parsepushnotification" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name="com.test.parsepushnotification.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.test.parsepushnotification.permission.C2D_MESSAGE" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:name=".TestApplication" android:theme="@style/AppTheme" > <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> <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.test.parsepushnotification.PushReceiver" 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.test.parsepushnotification" /> </intent-filter> </receiver> <receiver android:name="com.parse.ParsePushBroadcastReceiver" 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> <meta-data android:name="com.parse.push.notification_icon" android:resource="@drawable/ic_launcher"/> </application> </manifest> 

MainActivity.java

 public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { ParseAnalytics.trackAppOpenedInBackground(getIntent()); super.onCreate(savedInstanceState); setContentView(R.layout.activit); } } 

PushReceiver.java

 public class PushReceiver extends BroadcastReceiver { private static final String TAG = "PushReceiver"; @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "Message accept"); showNotification(); } } 

Заранее благодарю за любую помощь.

Из этого манифеста,
<receiver android:name="com.test.parsepushnotification.PushReceiver" android:permission="com.google.android.c2dm.permission.SEND"> ,
Упоминается в Quick Start | Разбирайте как
<receiver android:name="com.parse.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND"> ,
Измененное имя пакета может вызвать проблему с идентификацией со стороны Parse.

Спасибо, что сообщили нам, что это сработало.