Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 以下结构中的body和loc args在同一通知有效负载中有效吗?_Ios_Push Notification_Apple Push Notifications - Fatal编程技术网

Ios 以下结构中的body和loc args在同一通知有效负载中有效吗?

Ios 以下结构中的body和loc args在同一通知有效负载中有效吗?,ios,push-notification,apple-push-notifications,Ios,Push Notification,Apple Push Notifications,如果在同一有效负载中有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,并在可本地化字符

如果在同一有效负载中有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,并在可本地化字符串中使用以下键值:

"general"="%@";

有两个选项可以本地化推送通知中嵌入的警报消息。一种是在服务器上进行本地化,并将本地化消息作为警报键的字符串值发送。例如:

{警告:本地化的句子。}

或者,如果您还希望设置启动映像和/或让警报的“查看”按钮读取除“查看”以外的内容,则可以使用字典替换警报的字符串值。在这种情况下,字符串值应该是字典中body的值。例如:

{'alert': {'body:A本地化句子,action loc key:…,launch image:…' }}

警告:如果字典中只有body键,请不要使用字典。而是将body的值设置为alert的字符串值

另一个选项是使用loc密钥、loc args对,并在设备上进行本地化

虽然我还没有验证如果警报字典中同时存在body和loc键,iOS默认为哪一个,但我猜它会选择其中一个而忽略另一个。有权访问正在运行的推送通知开发人员安装程序的人可以验证是哪一个


最终,我们可以从中推断,body和loc键应该在异或关系中使用。一个或另一个,但不是两个。

有两个选项可以定位嵌入推送通知中的警报消息。一种是在服务器上进行本地化,并将本地化消息作为警报键的字符串值发送。例如:

{警告:本地化的句子。}

或者,如果您还希望设置启动映像和/或让警报的“查看”按钮读取除“查看”以外的内容,则可以使用字典替换警报的字符串值。在这种情况下,字符串值应该是字典中body的值。例如:

{'alert': {'body:A本地化句子,action loc key:…,launch image:…' }}

警告:如果字典中只有body键,请不要使用字典。而是将body的值设置为alert的字符串值

另一个选项是使用loc密钥、loc args对,并在设备上进行本地化

虽然我还没有验证如果警报字典中同时存在body和loc键,iOS默认为哪一个,但我猜它会选择其中一个而忽略另一个。有权访问正在运行的推送通知开发人员安装程序的人可以验证是哪一个


最终,我们可以从中推断,body和loc键应该在异或关系中使用。一个或另一个,但不是两个。

我做了几个测试

例如发送

{
    "aps": {
        "alert": {
            "body": "hello world!",
            "loc-args": ["andy", "my text"],
            "loc-key": "comment"
        }
    },
    "sound": "default",
    "extras": {}
}
在我的设备上,loc文件中有一个字符串,如下所示:

"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密钥,并且我收到的通知是

does_not_exist
正如卡丹在回答中所说:

最终,可以从文档中推断body和loc键应该 在排他性关系中使用。不是一个就是另一个,但是 不是两者都有

大宗报价


根据,如果钥匙丢失,则使用钥匙。这就是为什么“身体”总是被忽略的原因,它不是一个就是另一个。

我做了几个测试

例如发送

{
    "aps": {
        "alert": {
            "body": "hello world!",
            "loc-args": ["andy", "my text"],
            "loc-key": "comment"
        }
    },
    "sound": "default",
    "extras": {}
}
在我的设备上,loc文件中有一个字符串,如下所示:

"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密钥,并且我收到的通知是

does_not_exist
正如卡丹在回答中所说:

最终,可以从文档中推断body和loc键应该 在排他性关系中使用。不是一个就是另一个,但是 不是两者都有

大宗报价


根据,如果钥匙丢失,则使用钥匙。这就是为什么“身体”总是被忽略,或者是一个,或者是另一个。

我还没有50岁,所以我不能发表评论,只能跟进@kadam答案,仅供将来访问此问题的人参考

虽然我还没有验证如果警报字典中同时存在body和loc键,iOS默认为哪一个,但我猜它会选择其中一个而忽略另一个。有权访问正在运行的推送通知开发人员安装程序的人可以验证是哪一个


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

我还没有50岁,所以我不能发表评论,只能继续@kadam answer,仅供将来参考 谁来访问这个问题

虽然我还没有验证如果警报字典中同时存在body和loc键,iOS默认为哪一个,但我猜它会选择其中一个而忽略另一个。有权访问正在运行的推送通知开发人员安装程序的人可以验证是哪一个


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

您应该将其作为注释添加到@kadam的答案中,而不是作为自己的答案发布。您应该将其作为注释添加到@kadam的答案中,而不是作为自己的答案发布。