Intereting Posts
Как решить INSTALL_FAILED_DEXOPT эту ошибку? Android v21 Theme.Appcompat цветной акцент игнорируется, никаких дополнений в диалоговом окне Голосовая команда стекла в ближайшем матче из данного списка Остановить EditText от получения фокуса при запуске Activity Как изменить стиль выбора номера в андроиде? Сгенерированный класс для Component of Dagger 2 не найден в compileTestJava плагина Java Gradle Как реализовать вкладки теперь, когда TabActivity устарела Как я могу прикрепить сертификат с помощью Square OKHTTP? Портер-Дафф: различное поведение для разных форм? Масштабирование Bitmapfont в LibGDX Как играть видео vimeo с помощью iframe в веб-обзоре? При использовании TalkBack, какой предпочтительный способ предупредить пользователя, когда содержимое TextView изменилось? Eclipse Emulator не отвечает Центрирование фонового изображения на Android Файл res / drawable / abc_ic_ab_back_material.xml из ресурса ресурса ID # 0x7f020016

Уведомление о облачных сообщениях Firebase, которое не получено устройством

У меня возникла проблема с облачными сообщениями FireBase, в которых я получаю токен с устройства и отправляю тест уведомления через консоль уведомлений Google Firebase, однако уведомление никогда не регистрируется и не переносится на виртуальное устройство Android. Документация для FCM – это почти тот код, который у меня ниже, и еще немного, что вам еще нужно сделать, чтобы получать push-уведомления, работающие с firebase. Я просмотрел всю информацию о настройке (дополнения build.gradle, Установка сервисов Google Play и т. Д.), Как указано в документации, но все равно не генерируют сообщения. Я получаю одноразовую ошибку сразу после нажатия уведомления, в котором говорится, что «I / FA: Диспетчер тегов не найден и, следовательно, не будет использоваться», но это единственные данные, которые выводятся, и я не нашел ничего, связанного с тегом Требования к диспетчеру и FCM в googles. Что не так с кодом, что я не получаю push-уведомления к logcat или устройству? Пожалуйста, дайте мне знать любую дополнительную информацию, которая будет полезна. Благодарю.

NotificationGenie.java

public class NotificationGenie extends FirebaseMessagingService { private static final String TAG = "Firebase_MSG"; @Override public void onMessageReceived(RemoteMessage remoteMessage) { // TODO(developer): Handle FCM messages here. // If the application is in the foreground handle both data and notification messages here. // Also if you intend on generating your own notifications as a result of a received FCM // message, here is where that should be initiated. See sendNotification method below. sendNotification(remoteMessage.getNotification().getBody()); Log.d(TAG, "From: " + remoteMessage.getFrom()); Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody()); } private void sendNotification(String messageBody) { Intent intent = new Intent(this, PostLoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT); Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.tf2spyprofile) .setContentTitle("FCM Message") .setContentText(messageBody) .setAutoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); } } 

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.test.movile_android"> <!-- To auto-complete the email text field in the login form with the user's emails --> <uses-permission android:name="android.permission.GET_ACCOUNTS" /> <uses-permission android:name="android.permission.READ_PROFILE" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".LoginActivity" android:label="@string/title_activity_login"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".DashBoardActivity" android:label="@string/title_activity_dash_board" android:theme="@style/AppTheme.NoActionBar"> </activity> <activity android:name=".NewOrderActivity" android:label="@string/title_activity_dash_board" android:theme="@style/AppTheme.NoActionBar"> </activity> <activity android:name=".PostLoginActivity" android:label="@string/title_activity_dash_board" android:theme="@style/AppTheme.NoActionBar"> </activity> </application> <service android:name=".NotificationGenie"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> 

Solutions Collecting From Web of "Уведомление о облачных сообщениях Firebase, которое не получено устройством"

Вы разместили свою службу за пределами тега приложения. Измените дно на это.

 <service android:name=".NotificationGenie"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> </application> 

У меня была та же проблема, и она решена путем определения включенного, экспортированного в true в моей службе

  <service android:name=".MyFirebaseMessagingService" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> 

«Вы также должны иметь в виду, что для приема сообщений, отправленных из Firebase Console, приложение должно быть в фоновом режиме, а не запускаться ни одним из них». — Согласно комментарию @ Laurent Russier.

Я никогда не получал сообщения от Firebase, пока я не положил свое приложение в фоновом режиме.

Вызовите super.OnMessageReceived() в методе Overriden. Это сработало для меня! В заключение!

Я столкнулся с той же проблемой облачных сообщений Firebase, которые не были получены устройством.

В моем случае имя пакета, определенное в Firebase Console Project, отличалось от того, которое определено в Manifest & Gradle моего Android-проекта.

В результате я получил токен правильно, но никаких сообщений вообще не было.

Чтобы суммировать, необходимо, чтобы имя пакета Firebase Console и Manifest & Gradle совпадали.

Вы также должны иметь в виду, что для приема сообщений, отправленных из Firebase Console, приложение должно быть в фоновом режиме, а не запускаться ни скрытым.

Я столкнулся с одной и той же проблемой, но у меня все еще были мусора в моем манифесте от старого GCM. Когда я принял следующее разрешение из моего манифеста, он исправил ошибку. com.google.android.c2dm.permission.RECEIVE

У меня была аналогичная проблема, но в моем случае у меня отсутствовал плагин google-services из моей сборки Gradle (я добавлял Firebase к существующему проекту).

Я добавил в свой root build.gradle :

 classpath 'com.google.gms:google-services:3.1.0' 

И следующее к концу моего app build.gradle :

 apply plugin: 'com.google.gms.google-services' 

Затем мне пришлось загрузить файл google-services.json из Firebase Console (первоначально импортировавшего существующий проект Google Cloud) и скопировать его в каталог app .

Если вы только что добавили FCM в существующее приложение, onTokenRefresh() НЕ будет вызываться. Я запустил его, удалив приложение и снова установив его.

Вам нужно следовать ниже кода манифеста (должен быть Сервис в манифесте)

  <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="soapusingretrofitvolley.firebase"> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".MyFirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> <service android:name=".MyFirebaseInstanceIDService"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service> </application> </manifest> 
 private void sendNotification(String message) { Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); int requestCode = 0; PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT); Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.URI_COLUMN_INDEX); NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.mipmap.ic_launcher) .setContentText(message) .setColor(getResources().getColor(R.color.colorPrimaryDark)) .setSmallIcon(R.mipmap.ic_launcher) .setContentTitle("FCM Message") .setContentText("hello").setLargeIcon(((BitmapDrawable) getResources().getDrawable(R.drawable.dog)).getBitmap()) .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(((BitmapDrawable) getResources().getDrawable(R.drawable.dog)).getBitmap())) .setAutoCancel(true) .setSound(sound) .setContentIntent(pendingIntent); NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0, noBuilder.build()); 

Когда вы копируете токен своего устройства, он может копировать пробел, дважды проверьте, что вы скопировали правильный токен

Может быть, из-за подключения я изменил соединение с Ethernet на беспроводную, он работал, ничего не делая