2017-05-08 2 views
0

Ich versuche, App mit Xamarin Form zu erstellen, die Benachrichtigung sowohl Vordergrund als auch Hintergrund auf Android erhalten kann. Für den Vordergrund funktioniert es gut. Ich erstelle Firebase-Dienst, um die Benachrichtigung im Vordergrund zu behandeln. Ich finde jedoch nicht die Art und Weise, wie Hintergrundbenachrichtigungen funktionieren.Für Xamarin Android kann ich keine Hintergrundbenachrichtigung für Klickereignis verarbeiten

Zuerst versuche ich Manifest zu aktualisieren, um dieses Ereignis zu unterstützen. enter image description here

Zweitens füge ich etwas Code zu meiner splashactivity hinzu, um Hintergrundbenachrichtigung zu behandeln.

Als nächstes verwende ich den folgenden PHP-Code, um eine Benachrichtigung an den Firebase-Server zu senden. enter image description here

Auf meinem Gerät kann ich die obige Benachrichtigung sehen. enter image description here

Ich tippe auf Benachrichtigung, um meine App zu öffnen. Es ist jedoch nichts passiert und das Geräteprotokoll gibt mir keine Vorstellung davon, was vor sich geht.

enter image description here

Gibt es in meinem Code falsch?

Danke,

+0

Mögliches Duplikat von [Vorgehensweise bei der Benachrichtigung bei einer App im Hintergrund in Firebase] (http://stackoverflow.com/questions/37711082/how-to-handle-notification-when-app-in-background-in-firebase) – X3Btel

+1

Bitte verwenden Sie keine Bilder für Code/Text: https://meta.stackoverflow.com/questions/285551/why-not-to-upload-images-of-code-on-so-when-asking-a- Frage – SushiHangover

+0

@ X3Btel Meine Frage dreht sich alles um Xamarin nicht native Android. Einige Dinge sind ganz anders. –

Antwort

1

von Firebase Dokumentation Genommen:

Handle Benachrichtigung Nachrichten in einer backgrounded App Wenn Ihre App im Hintergrund ist, leitet Android-Benachrichtigungen in der Taskleiste. Ein Benutzer, der auf die Benachrichtigung klickt, öffnet standardmäßig den App Launcher. Dies umfasst Nachrichten, die sowohl Benachrichtigungs- als auch Datennutzdaten enthalten (und alle Nachrichten, die von der Benachrichtigungskonsole gesendet werden). In diesen Fällen wird die Benachrichtigung an die Systemablage des Geräts gesendet, und die Datennutzlast wird in den Extras mit der Absicht Ihrer Startaktivität geliefert.

Ich konnte dies Custom Data mit der FCM Nutzlast lösen und dann in MainActivity OnCreate durch das Senden() -Methode:

var someValue = Intent.GetStringExtra("YourKey"); 
// if result not null then handle how you like... 

In meinem Fall habe ich den Benutzer auf die umleiten wollte Anzeigen der Benachrichtigung ist für.

Update:

Es gibt eine weitere Möglichkeit, dies zu umgehen.

Aufschalten OnMessageReceived Methode ...

[Service] 
[IntentFilter(new[] { "com.google.firebase.MESSAGING_EVENT" })] 
public class MyFirebaseMessagingService : FirebaseMessagingService 
{ 
    public override void OnMessageReceived(RemoteMessage message) 
    { 
     SendNotification(message?.Data); 
    } 

    void SendNotification(IDictionary<string, string> data) 
    { 
     // handle your data that got passed 
    } 
} 

Und anstatt diese in Ihrem Beispiel zu tun:

{ 
    "noticiation" : { 
     "title" : "Test 456", 
     "text" : "Otra 123123" 
    } 
} 

Pass Daten statt:

{ 
    "data" : { 
     "title" : "Test 456", 
     "text" : "Otra 123123" 
    } 
} 

OnMessageReceived wird nun beide genannt werden wenn Ihre App im Hintergrund ist und im Vordergrund.

Beachten Sie, dass diese Methode bedeutet, dass Sie die Konsole in Firebase nicht verwenden können, um Nachrichten zu senden, da es, wie ich weiß, "Benachrichtigung" in der Nutzlast enthält.

Verwandte Themen