android azure android-activity xamarin.android xamarin.forms

Gestiona las acciones de notificaciones push de Android en Xamarin.Forms



azure android-activity (1)

Así que acabo de implementar FCM en mi aplicación Android Xamarin.Forms con esta guía . Todo funciona bastante bien, las notificaciones llegan, reproducen un sonido, tienen un ícono, etc. Luego, quería agregar una acción a mi notificación, tiene que abrir una determinada página en mi aplicación.

Y ese es mi problema, Xamarin.Forms pone todo el contenido de Android en una sola actividad. Lo que significa que abrir una página determinada hace que toda la OnCreate de MainActivity se cargue nuevamente (y LoadApplication también).

Mi notificación

var notificationIntent = new Intent(this, typeof(MainActivity)); notificationIntent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.NewTask); notificationIntent.PutExtras(intent.Extras); var pendingIntent = PendingIntent.GetActivity(this, 0, notificationIntent, PendingIntentFlags.UpdateCurrent); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .SetSmallIcon(Resource.Drawable.icon) .SetStyle(new NotificationCompat.BigTextStyle().BigText(text)) .SetContentIntent(pendingIntent) .SetAutoCancel(true) .SetPriority((int)NotificationPriority.Max) .SetVibrate(new long[] { 0, 250, 100, 250, 0 }) .SetLights(Color.Red, 1, 250) .SetContentTitle("Eindexamen") .SetContentText(text);

Carga útil de FCM

{"data":{"message":"Notification Hub test notification", "action":"open-exam", "exam-id":"F50FC23C-B4EE-E611-80C3-000D3A218F79"}}

Entonces mi pregunta es, ¿cómo abrir una página de Xamarin.Forms sin volver a cargar toda la aplicación en Android?


Lo fijo resultó ser bastante fácil.

En lugar de utilizar ActivityFlags.ClearTop y ActivityFlags.NewTask use ActivityFlags.SingleTop .

Luego en su MainActivity.cs anule el método OnNewIntent.

protected override void OnNewIntent(Intent intent) { base.OnNewIntent(intent); ProcessPushNotification(intent); }