Est-ce que la notification de charge utile suivante causerait des problèmes si vous aviez body et loc-args et loc-key dans la même charge utile?
{"aps":{"alert":{"body" : "Bob wants to play poker", "loc-key":"general","loc-args":["Test DEFAULT."]},"badge":1,"sound":"default"}}
La raison pour laquelle je l'ai mis en place comme ça. Est-ce que je ne suis pas sûr si la notification pour avoir juste un corps dedans serait manipuler pendant l'application, ainsi elle emploierait loc-args localisé avec le key-valus suivant dans la string localisable:
"general"="%@";
Il existe deux options pour localiser un message d'alerte incorporé dans une notification push. La première consiste à se localiser sur le server et à envoyer le message localisé en tant que valeur de string de la key d' alert
. Par exemple:
{"alert": "A localized sentence."}
En option, si vous souhaitez également définir l'image de lancement et / ou que le button d'affichage de l'alerte lit quelque chose d'autre que "Afficher", vous remplacez la valeur de string de l' alert
par un dictionary. Dans ce cas, la valeur de la string doit être la valeur du body
dans le dictionary. Par exemple:
{'alert': {'body: "A localized sentence.", action-loc-key: "...", launch-image: "..."' }}
Les documents avertissent que si vous avez seulement la key de body
dans le dictionary, n'utilisez pas un dictionary. Au lieu de cela, définissez la valeur de body
comme valeur de string de alert
.
L'autre option consiste à utiliser la loc-key
, la paire loc-args
et la localization sur le périphérique.
Bien que je n'ai pas vérifié lequel est par défaut iOS si les deux body
et loc-key
sont présents dans le dictionary d' alert
, je suppose qu'il en choisira un et ignorera l'autre. Quelqu'un ayant access à un programme de développement de notifications push fonctionnant peut vérifier lequel.
En fin de count, on peut déduire des docs que body
et loc-key
devraient être utilisés dans une exclusivité ou une relation. L'un ou l'autre, mais pas les deux.
J'ai fait plusieurs tests.
Par exemple l'envoi
{ "aps": { "alert": { "body": "hello world!", "loc-args": ["andy", "my text"], "loc-key": "comment" } }, "sound": "default", "extras": {} }
Sur mon appareil, j'ai une string dans le file loc qui ressemble à:
"comment" = "%@ has comment %@";
Donc la notification que je reçois est:
Andy has comment my text
Maintenant, j'ai envoyé une nouvelle notification comme ceci:
{ "aps": { "alert": { "body": "hello world!", "loc-args": ["andy", "my text"], "loc-key": "does_not_exist" } }, "sound": "default", "extras": {} }
avec une key de localization qui n'existe pas, et la notification que je reçois est
does_not_exist
alors que kadam a dit dans sa réponse:
En fin de count, on peut déduire des docs que body et loc-key devraient être utilisés dans une exclusivité ou une relation. L'un ou l'autre, mais pas les deux.
Blockquote
Selon ce post , si la key est manquante, la key est utilisée. C'est pourquoi le «corps» est toujours ignoré et est soit un ou l'autre.
Je n'ai pas encore 50 ans, donc je ne peux pas commenter, mais suivre la réponse @kadam, juste pour reference future à ceux qui vont visiter cette question.
Bien que je n'ai pas vérifié lequel est par défaut iOS si les deux body et loc-key sont présents dans le dictionary d'alerte, je suppose qu'il en choisira un et ignorera l'autre. Quelqu'un ayant access à un programme de développement de notifications push fonctionnant peut vérifier lequel.
Je l'ai essayé et il vaut par défaut la valeur de loc-key s'il a une valeur sur l'application elle-même. Si aucun alors il utilise la valeur du corps.