3

Also habe ich nur FCM in meiner Xamarin.Forms Android App mit this guide implementiert. Alles funktioniert ganz gut, die Benachrichtigungen kommen an, sie spielen einen Ton, haben ein Icon usw. Dann wollte ich meiner Benachrichtigung eine Aktion hinzufügen, sie muss eine bestimmte Seite in meiner App öffnen.Handle Android Push-Benachrichtigungen Aktionen in Xamarin.Forms

Und das war mein Problem kommt in, Xamarin.Forms setzt alle Android-Inhalte in einer einzigen Aktivität. Das bedeutet, dass beim Öffnen einer bestimmten Seite das gesamte OnCreate der MainActivity erneut geladen wird (und auch die LoadApplication).

Meine Mitteilung

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); 

FCM Payload

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

Also meine Frage ist, wie man eine Xamarin.Forms Seite zu öffnen, ohne die gesamte App auf Android Nachladen?

Antwort

1

Die behoben erwies sich als ziemlich einfach.

Anstelle von ActivityFlags.ClearTop und ActivityFlags.NewTaskActivityFlags.SingleTop verwenden.

Dann in Ihrer MainActivity.cs überschreiben die OnNewIntent-Methode.

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

    ProcessPushNotification(intent); 
} 
+0

könnten Sie bitte mehr erklären, wo Ihre SPS-Seite? Wie öffnet sich Ihr Code plc-Seite? Ich denke, dass dieser Code Sie zur aktuellen Startseite führt, wissen Sie, wie ich eine bestimmte Seite öffnen kann? –