Intereting Posts

Уведомления GCM push не работают, если приложение закрыто на некоторых устройствах

Я выполнил руководство по настройке GCM Google и их пример в Github для создания приложения, которое получает уведомления.

Когда это работает:

  • Приложение открыто (все устройства)
  • Приложение в фоновом режиме (все устройства)
  • Приложение закрыто (все кроме одного)

Телефон, который не работает:

  • Huawei P8 lite
  • Android 5.1
  • Службы Google Play 8.3.01

Этот телефон работает нормально, он может получать сообщения WhatsApp или любой другой вид, даже если пользователь убивает приложение.

Я боюсь, что это может произойти во многих других устройствах, которые я не тестировал. Поэтому я хочу показать код, чтобы увидеть, есть ли какие-либо проблемы.

Здесь мой AndroidManifest.xml :

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.presentation" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- Keeps the processor from sleeping when a message is received. --> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- This app has permission to register and receive data message. --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" /> <permission android:name="com.example.presentation.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.example.presentation.permission.C2D_MESSAGE" /> <application android:name=".AndroidApplication" android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <receiver android:name="com.google.android.gms.gcm.GcmReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> <category android:name="com.example.presentation" /> <!-- If you want to support pre-4.4 KitKat devices. --> <action android:name="com.google.android.c2dm.intent.REGISTRATION" /> </intent-filter> </receiver> <service android:name="com.example.data.gcm.RegistrationIntentService" android:exported="false" /> <service android:name="com.example.data.gcm.MyGcmListenerService" android:exported="false" > <intent-filter> <action android:name="com.google.android.c2dm.intent.RECEIVE" /> </intent-filter> </service> <service android:name="com.example.data.gcm.MyInstanceIDListenerService" android:exported="false"> <intent-filter> <action android:name="com.google.android.gms.iid.InstanceID"/> </intent-filter> </service> </application> </manifest> 

Добавлена ​​эта зависимость на уровне проекта build.gradle :

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:1.3.0' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4' classpath 'com.google.gms:google-services:1.4.0-beta3' } } 

Добавлена ​​эта зависимость в build.gradle уровне build.gradle :

 compile "com.google.android.gms:play-services-gcm:8.1.0" 

И классы Java одинаковы для примера Github .

Почему это устройство не работает, когда пользователь закрывает приложение, но работает на всех других устройствах, которые я тестировал?

Solutions Collecting From Web of "Уведомления GCM push не работают, если приложение закрыто на некоторых устройствах"

Это «ошибка / особенность» устройств Huawei.

Android – GCM – не получать push-уведомления на фоне

После того, как вы убили приложение на xiaomi, huawei, эти телефоны отменили регистрацию широковещательных приемников, услуг приложения.

В случае уведомления ваш приемник передачи GCM получает незарегистрированные файлы в случае убийства>, что, вероятно, является причиной этого.

Пользователь должен добавить ваше приложение в список времени в диспетчере батарей

https://www.forbes.com/sites/bensin/2016/07/04/push-notifications-not-coming-through-to-your-huawei-phone-heres-how-to-fix-it/#578f42bd1ccc

Протестировано на Huawei Gra-L09 с Android 5.0.1

Редакция:

Вы можете предупредить пользователя и запустить Менеджер защищенных приложений.

«Защищенные приложения» на телефонах Huawei и способы их устранения

Теперь дни, Xiaomi и LeEcho и некоторые новые пользовательские ОС для целей безопасности отключает уведомление для каждого приложения. Выполните следующие действия, чтобы получать сообщения в фоновом режиме, как только они покидают приложение, используя очиститель.

Settings -> Permissions (Just add your app here and done).