Я отправляю уведомление только с данными из протокола HTTP Firebase Cloud Messaging. Я могу видеть, что уведомление поступает правильно в методе обратного вызова onMessageReceived FirebaseMessagingService в моем приложении Android. Проблема в том, что я не могу генерировать уведомления отсюда. Я написал код для создания уведомлений, но уведомления не появляются в области уведомлений моего телефона.
Ниже мой код:
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
String data = remoteMessage.getData().toString();
Log.d("<<<>>>", "MyFirebaseMessagingService > onMessageReceived > data : " + data);
String title = remoteMessage.getData().get("title");
String body = remoteMessage.getData().get("body");
showNotification(title, body);
}
private void showNotification(String title, String body) {
Log.d("<<<>>>", "MyFirebaseMessagingService > showNotification() called !");
Log.d("<<<>>>", "title : " + title);
Log.d("<<<>>>", "body : " + body);
Intent intent = new Intent(this, SplashScreenActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, "NewsVault_Notification_Channel")
.setSmallIcon(R.drawable.firebase_notification_icon)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0, notificationBuilder.build());
}
}
Ниже мой вывод Logcat:
D/<<<>>>: MyFirebaseMessagingService > onMessageReceived > data :
{channel_id=NewsVault_Notification_Channel, priority=high, body=Test body, key_1=Value for key_1,
key_2=Value for key_2, title=Test title, content_available=true}
D/<<<>>>: MyFirebaseMessagingService > showNotification() called !
D/<<<>>>: title : Test title
D/<<<>>>: body : Test body
Я добавил следующие вещи в файл манифеста:
<service
android:name=".Services.MyFirebaseMessagingService"
android:exported="false">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<meta-data
android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="NewsVault_Notification_Channel" />