body和loc-args在同一个通知载荷中的结构是否有效?

如果在相同的有效载荷中有body和loc-args和loc-key,下面的有效载荷通知是否会导致任何问题?

{"aps":{"alert":{"body" : "Bob wants to play poker", "loc-key":"general","loc-args":["Test DEFAULT."]},"badge":1,"sound":"default"}} 

我有这样的原因。 是我不知道如果通知只是有一个身体将在应用程序中处理,所以它会使用本地化的loc-args与本地化的string中的以下键值:

 "general"="%@"; 

有两个选项可以将推送通知中embedded的警报消息本地化。 一种方法是在服务器上进行本地化,并将本地化消息作为alert密钥的string值发送。 例如:

{"alert": "A localized sentence."}

或者,如果您还想设置启动图像和/或让警报的视图button读取“视图”以外的内容,则可以用字典replacealert的string值。 在这种情况下,string值应该是字典中的body的值。 例如:

{'alert': {'body: "A localized sentence.", action-loc-key: "...", launch-image: "..."' }}

文档警告如果你只有字典中的body键,不要使用字典。 而是将body的值设置为alert的string值。

另一种select是使用loc-keyloc-args对,并在设备上进行本地化。

虽然我还没有validation哪一个iOS默认是如果bodyloc-key都出现在alert字典中,我想它会select一个而忽略另一个。 有人可以访问工作推送通知开发设置可以validation哪一个。

最终,可以从文档中推断出, bodyloc-key应该被用在排他或关系中。 无论是一个或另一个,但不是两个。

我做了几个testing。

例如发送

 { "aps": { "alert": { "body": "hello world!", "loc-args": ["andy", "my text"], "loc-key": "comment" } }, "sound": "default", "extras": {} } 

在我的设备上,我在loc文件中有一个string,如下所示:

 "comment" = "%@ has comment %@"; 

所以我收到的通知是:

 Andy has comment my text 

现在我发送了一个像这样的新通知:

  { "aps": { "alert": { "body": "hello world!", "loc-args": ["andy", "my text"], "loc-key": "does_not_exist" } }, "sound": "default", "extras": {} } 

用一个不存在的loc-key,而我收到的通知是

 does_not_exist 

所以卡达姆在回答中说:

最终,可以从文档中推断出,body和loc-key应该被用在排他或关系中。 无论是一个或另一个,但不是两个。

大段引用

根据这个post ,如果钥匙丢失,钥匙被使用。 这就是为什么“身体”总是被忽视,是一个或其他。

我还没有50,所以我不能评论,但在@ kadam回答后续行动,只是为了将来访问这个问题的人将来的参考。

虽然我还没有validation哪一个iOS默认是如果body和loc-key都出现在alert字典中,我想它会select一个而忽略另一个。 有人可以访问工作推送通知开发设置可以validation哪一个。

我已经尝试过了,如果它在应用程序本身上有一个值,它默认为loc-key的值。 如果没有,那么它使用body的值。