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-key
, loc-args
对,并在设备上进行本地化。
虽然我还没有validation哪一个iOS默认是如果body
和loc-key
都出现在alert
字典中,我想它会select一个而忽略另一个。 有人可以访问工作推送通知开发设置可以validation哪一个。
最终,可以从文档中推断出, body
和loc-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的值。