В моем приложении для Android мне нужно обрабатывать получение push-уведомлений Firebase, чтобы я мог управлять их идентификаторами (чтобы все уведомления отображались, а не заменяли друг друга) и чтобы я мог отображать значок приложения (устанавливая его с помощьюэлемент метаданных в манифесте Android не работает.)
Я создал службу обмена сообщениями для обработки входящих сообщений:
[Service (Name = "com.rpr.mobile.droid.LocalyticsFirebaseMessagingService")]
[IntentFilter (new[] { "com.google.firebase.MESSAGING_EVENT" })]
public class LocalyticsFirebaseMessagingService : FirebaseMessagingService {
private static int notificationId = 0;
public override void OnMessageReceived (RemoteMessage message) {
if (!message.Data.ContainsKey ("ll")) {
base.OnMessageReceived (message);
} else {
var body = message.GetNotification ().Body;
if (!String.IsNullOrEmpty (body)) {
var mainIntent = new Intent (this, typeof (IntentActivity));
var deepLinkUrl = "";
if (message.Data.TryGetValue ("ll_deep_link_url", out deepLinkUrl))
mainIntent.SetData (Android.Net.Uri.Parse (deepLinkUrl));
var launchIntent = PendingIntent.GetActivity (this, 1, mainIntent, PendingIntentFlags.UpdateCurrent);
var builder = new NotificationCompat.Builder (this)
.SetSmallIcon (Resource.Drawable.logo_blue_small)
.SetContentTitle (GetString (Resource.String.application_name))
.SetContentText (body)
.SetStyle (new NotificationCompat.BigTextStyle ().BigText (body))
.SetContentIntent (launchIntent)
.SetDefaults (-1)
.SetAutoCancel (true);
var notificationManager = NotificationManagerCompat.From (this);
notificationManager.Notify (notificationId++, builder.Build ());
}
}
}
}
И я определил это в приложениираздел моего манифеста Android:
<service android:name="com.rpr.mobile.droid.LocalyticsFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
Однако, когда я получаю push-уведомление, этот код никогда не вызывается, даже когда приложение находится на переднем плане.У меня был похожий код, который отлично работал для push-уведомлений GCM, но мне не повезло с Firebase.Чего мне не хватает?