Intereting Posts
Как сделать прокручиваемую вкладку в Android? Как установить свойства по умолчанию в сборке AOSP? Как создать полукруглое изображение в Android Использование MergeAdapter; Поиск способа определения типа данных элемента списка в методе ListActivity onListItemClicked Отключить метод ввода EditText, но держать курсор миганием Как переключаться между передней и задней камерами при использовании MediaRecorder android Как изменить шрифт заголовка ActionBar при использовании AppCompat Меню Android ICS Options с изображениями Action_image_capture перезагружает приложение Нулевой указатель в getApplicationContext () Логика для использования нескольких веб-просмотров в TabLayout для решения проблемы памяти Android Studio 1.4 Проблемы рендеринга в новом шаблоне ящика Почему агент пользователя отправляется как «Apache-HttpClient / UNAVAILABLE (java 1.4)» Отправка и получение сообщений с помощью Smack Api для Android PARSE: Push Notifications «deviceToken» не определено

GcmBroadcastReceiver не запускается на Android 4.0.3

Я реализовал GCM в своем приложении, следуя этому официальному учебнику . Но мои пользователи под Android 4.0.3 сообщили мне, что уведомления не работают. Я узнал, что onReceive из моего GcmBroadcastReceiver extends BroadcastReceiver не был уволен. Вот мой манифест.

  <!-- GCM --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <uses-permission android:name="android.permission.VIBRATE" /> <permission android:name="com.myapp.gcm.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.myapp.gcm.permission.C2D_MESSAGE" /> <application ... > <!-- GCM --> <receiver android:name="com.myapp.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.myapp" /> </intent-filter> </receiver> 

Что я делаю не так?

Имя основного приложения вашего приложения com.nyapp.gcm или com.myapp?

В разрешающей части манифеста вы используете com.myapp.gcm, а в категории фильтра намерения получателя вы используете com.myapp.

В обоих местах вы должны иметь тот же пакет, который является основным пакетом вашего приложения.

В вашем фильтре отсутствует действие «com.google.android.c2dm.intent.REGISTRATION», без которого ваше приложение не сможет получить регистрационный идентификатор. Добавьте в свой фильтр намерений следующее:

Action android: name = "com.google.android.c2dm.intent.REGISTRATION"

 <!-- GCM --> <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="YOUR_APP_PACKAGE_NAME" /> </intent-filter> </receiver> 

Недопустимые разрешения файла манифеста Проверка регистрации BroadcastReceiver в файле манифеста