2017-05-31 3 views
0

Wir haben einen Django-Backend-Server, der pyfcm verwendet, um Benachrichtigungen über Firebase Cloud Messaging (FCM) zu liefern. Ich habe gerade auf die heute veröffentlichte Version 1.3.0 aktualisiert. Ich möchte eine Benachrichtigung mit den Parametern loc-key und loc-args senden, damit sie in der Sprache angezeigt werden kann, die der Benutzer auf seinem Telefon verwendet. Die Benachrichtigung erreicht das Gerät, vibriert und gibt den Standardton für eine neue Benachrichtigung aus, wird jedoch nicht angezeigt. Es passiert einfach nichts außer dem Klang und der Vibration.Lokalisierte Benachrichtigungen iOS 10 mit FCM

Dies ist die Nutzlast vom Server generiert, die an den fcm Endpunkt gesendet wird:

{ 
    "notification": { 
     "loc-args": ["Demo (@demo)"], 
     "loc-key": "notification-follow", 
     "sound": "Default" 
    }, 
    "priority": "high", 
    "to": "..." 
} 

Auf der Clientseite, das ist, was durch das Telefon empfangen wird:

[ 
    AnyHashable("gcm.message_id"):0:1496257581534217 %f910cc44f910cc44, 
    AnyHashable("aps"):{ 
     category = profile; 
    sound = Default; 
    }, 
    AnyHashable("gcm.notification.alert"):{ 
     "title-loc-key":" notification-follow", 
     "title-loc-args":[ 
     "Demo (@demo)" 
     ] 
    } 
] 

Gibt es Was muss ich tun, bevor die Nachricht angezeigt wird? Das Senden der Nachricht ohne loc-key und loc-args aber mit message-body zeigt die Benachrichtigung auf dem Gerät. Vielleicht ist die Nutzlast falsch? Wie soll es aussehen, was ich will? Der Schlüssel, notification-follow in diesem Fall, ist in den Localizable.strings Dateien in jeder verfügbaren Sprache aufgeführt und übersetzt.

+0

Ich denke, das 'loc- *' Zeug muss in das 'aps' Wörterbuch gehen, aber warum macht fcm das nicht? –

Antwort

0

Ok, Problem gelöst. Es war pyFCM. Ich dachte, es wäre ein Fehler mit dieser Bibliothek, also pseudofixiert der Entwickler es. Aber es hat richtig funktioniert, und jetzt funktioniert es nicht mehr. Der Trick besteht darin, body_loc_args ein Array zu geben, sonst gibt es Ihnen einen InvalidParameters Fehler.

Verwandte Themen