La structure suivante avec body et loc-args dans la même charge utile de notification est-elle valide?

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.