2

Ich verwende Firebase Cloud Messaging zum Senden von Daten Nutzlast und Anzeige von Benachrichtigungen in meinem Android und iOS apps. Ich integriere das in meine iOS App und bin vor einer kuriosen Sache.FCM Unterschiede zwischen Android und iOS über Datennachrichten

  • Kurzgeschichte:

Mein Benachrichtigungs-Server nur Datennachricht senden (ich meine JSON-Nachrichten „Daten“ -Feld und ohne „Benachrichtigung“ Feld enthalten). In meiner Android App ist das kein Problem, da ich die Nachricht auch dann erhalte, wenn sich meine App im Hintergrund in meiner Service Implementierung befindet und ich manuell eine Benachrichtigung erstelle, die ich zeige. Aber wie kann ich im iOS-Fall eine Nachricht erhalten, wenn meine App im Hintergrund läuft, um dasselbe zu tun? Ich meine, wenn ich meiner Anfrage ein "Benachrichtigungsfeld" hinzufüge, sehe ich die Benachrichtigung auf meinem Bildschirm (wenn die App im Hintergrund ist) und ich kann Daten (im Feld "Daten") nach einem Klick abrufen, wenn meine App in ist Vordergrund.

Aber kann ich Daten haben, wenn meine App im Hintergrund ist, um eine Benachrichtigung manuell anzuzeigen?

  • Wichtige Präzision:

Der Inhalt der angezeigten Meldung App Seite gebaut werden soll und nicht die Server-Seite, da der Server nicht genügend Informationen hat, deshalb kann ich nicht senden "notification" -Feld in meiner Payload-Nachricht.

Dank

EDIT: ich lösen (teilweise) dieses Problem this link verwenden. In Kürze aktivierte ich beide Hintergrund holen und Remote-Benachrichtigungen unter Hintergrundmodi (und content_available : true in der Nutzlast hinzugefügt). Dann kann ich Daten verarbeiten, die in didReceiveRemoteNotification: empfangen werden. Aber jetzt ist es immer noch eins: Wie funktioniert es, wenn meine App getötet wird?

EDIT 2: Ich fand etwas, das das Ding sein könnte: that. Das Ändern der Payload einer Remote-Benachrichtigung bedeutet, dass eingehende Benachrichtigungen behandelt werden, bevor sie angezeigt werden. Ich werde es versuchen.

EDIT 3: Firebase unterstützt nicht die wandelbar-Inhalt Schlüssel erforderlich meine Lösung gefunden bei EDIT 2 arbeiten zu machen. Diskussion darüber ist here. Also ... Irgendeine Idee?

+1

Hallo FCM unterstützt jetzt den Mutable-Content-Schlüssel. Wenn Sie das Feld mutable_content in Ihrer FCM-Anfrage auf true setzen. Sie können Benachrichtigungsnachrichten abfangen, bevor sie dem Benutzer auf iOS 10 und höher angezeigt werden. –

+0

Danke für Ihre Arbeit und für Informationen. Aber warum dauert diese Veröffentlichung so lange (seit iOS10)? – N0un

Antwort

0

Am 16.02.14 fügte Firebase die Konformität mit dem Schlüssel "mutable-content" hinzu. Das löste mein Problem und, ich denke, viele Probleme.

Persönliche Denken:

halte ich für 6 Monate zu spät für diese Funktion wirklich zu viel. Ich hoffe, dass zukünftige Releases mit iOS (und Android) Releases auf dem neuesten Stand sein werden.

0

Ich glaube nicht, dass es möglich ist, die "Stock" -Benachrichtigung auf iOS vom Code aus zu aktivieren, genauso wie Sie es auf Android mit NotificationBuilder tun.

Die einzige verfügbare Option ist die Verwendung hybrider Nachrichten mit Benachrichtigungs- und Datennutzlasten.

Überprüfen Sie ihre doc für weitere Informationen zu hybriden Nachrichten.

+0

Tatsächlich besteht das Problem mit hybriden Nachrichten darin, dass die angezeigte Benachrichtigung serverseitig aufgebaut ist. Ich will es Client (App) Seite gebaut werden ... – N0un

+0

Ich habe meinen Beitrag bearbeitet. Es ist immer noch ein Fall, wo es nicht funktioniert: wenn meine App getötet wird (nicht genügend Speicher) – N0un

Verwandte Themen