FCM - только «отображать» push-уведомления, когда приложение находится в фоновом режиме - PullRequest
0 голосов
/ 21 сентября 2018

В настоящее время в моем приложении Xamarin отправляются и принимаются push-уведомления.Когда я отправляю push-уведомление, диалоговое окно пиковых значений отображается, когда приложение находится на переднем плане, а также на заднем плане.Я пытаюсь только визуально отображать push-уведомления, когда приложение находится в фоновом режиме.Когда пользователь находится на переднем плане, уведомление просто проскальзывает в HUD и не отображается.

Вот мой код:

Xamarin Android

[Service]
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })]
public class FCMMessagingService : FirebaseMessagingService
{
    const string TAG = "MyFirebaseMsgService";
    public override void OnMessageReceived(RemoteMessage message)
    {
        try
        {
            var _message = message.GetNotification().Body;
            var _title = message.GetNotification().Title;
            MainActivity.SendNotification(_title, _message);
        }
        catch (Exception e)
        {
            //Was NotificationType null? this should never be null anyways
        }
    }
}

API - AndroidПолезная нагрузка

    return new JObject(
           new JObject(
                   new JProperty("notification",
                       new JObject(
                           new JProperty("body", message),
                           new JProperty("title", title),
                           new JProperty("icon","toasticon"), 
                           new JProperty("user", fromId != null ? fromId.ToString() : "")
                        )
                    ),
                   new JProperty("data",
                        new JObject(
                            new JProperty("notificationtype", notificationType)
                            )
                   )
                )
       ).ToString();

1 Ответ

0 голосов
/ 21 сентября 2018

Если вы выполнили настройку firebase для xamarin android

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

Как сделатьсделать это?

Вот как

В настройке у вас будет класс, унаследованный от FirebaseMessagingService

В этом классе будет фрагмент кода, похожего на этот ():

 var pendingIntent = PendingIntent.GetActivity(this,
                                              MainActivity.NOTIFICATION_ID,
                                              intent,
                                              PendingIntentFlags.OneShot);

var notificationBuilder = new  NotificationCompat.Builder(this, MainActivity.CHANNEL_ID)
                          .SetSmallIcon(Resource.Drawable.ic_stat_ic_notification)
                          .SetContentTitle("FCM Message")
                          .SetContentText(messageBody)
                          .SetAutoCancel(true)
                          .SetContentIntent(pendingIntent);

 var notificationManager = NotificationManagerCompat.From(this);
 notificationManager.Notify(MainActivity.NOTIFICATION_ID, 
 notificationBuilder.Build());

Этот фрагмент кода отправляет уведомление в трей Android, когда на переднем плане и, следовательно, если вы комментируетев этом случае вы получите желаемый результат.

Удачи!

В случае возврата запросов.

...