APNS PHP JSON 载荷结构
APNS PHP JSON Payload structure
我正在通过 PHP 脚本发送推送通知以连接到 APNS 服务器。当我使用以下有效载荷结构时,一切正常。
$body['aps'] = array(
'alert' => $message,
'badge' => $badge,
'sound' => 'default'
);
$payload = json_encode($body);
但是,我需要向 'alert' 元素添加更多参数,并且想要添加更多自定义参数。我的做法如下,但是APNS不接受JSON。是我在PHP中的JSON创建方法有问题吗?
$payload='{
"aps": {
"alert":{
"title": "'.$message.'",
"body":"'.$notif_desc.'"
},
"badge":"'.$badge.'",
"sound": "default"
},
"type": "notification",
"id":"'.$lastid.'",
"date:"'.$date1.'"
}';
基本上,我有两个问题。第二种方法错了吗?如果是这样,请告诉我一个为 APNS 服务器创建嵌套 JSON 有效负载的有效方法。第二个问题,我需要在Payload中添加自定义PHP变量,我想知道我在第二种方法中添加的方式是否正确。
基本上,我需要在 PHP
中创建一个 JSON 对象,如下所示
{
"aps" : {
"alert" : {
"title" : "Game Request",
"body" : "Bob wants to play poker",
"action-loc-key" : "PLAY"
},
"badge" : 5,
},
"acme1" : "bar",
"acme2" : [ "bang", "whiz" ]
}
$send_data =
array(
'aps' =>
array
(
'status_code'=>200,
'alert'=>$message,
'sound' => 'default',
'notification_type'=>'DoctorPendingRequest',
'request_id'=>$request_id
)
);
将 $send_data 传递给负载。
您在 "date" 属性:
后缺少双引号
"date:"'.$date1.'"
...应该...
"date":"'.$date1.'"
我建议首先将有效载荷放在一起作为 PHP object/array(就像你原来的例子),因为它 更 更容易看到该格式的结构而不是巨大的连接字符串。例如
$payload['aps'] = array(
'alert' => array(
'title' => $title,
'body' => $body,
'action-loc-key' => 'PLAY'
),
'badge' => $badge,
'sound' => 'default'
);
$payload['acme1'] = 'bar';
$payload['acme2'] = array(
'bang',
'whiz'
);
$payload = json_encode($body);
我正在通过 PHP 脚本发送推送通知以连接到 APNS 服务器。当我使用以下有效载荷结构时,一切正常。
$body['aps'] = array(
'alert' => $message,
'badge' => $badge,
'sound' => 'default'
);
$payload = json_encode($body);
但是,我需要向 'alert' 元素添加更多参数,并且想要添加更多自定义参数。我的做法如下,但是APNS不接受JSON。是我在PHP中的JSON创建方法有问题吗?
$payload='{
"aps": {
"alert":{
"title": "'.$message.'",
"body":"'.$notif_desc.'"
},
"badge":"'.$badge.'",
"sound": "default"
},
"type": "notification",
"id":"'.$lastid.'",
"date:"'.$date1.'"
}';
基本上,我有两个问题。第二种方法错了吗?如果是这样,请告诉我一个为 APNS 服务器创建嵌套 JSON 有效负载的有效方法。第二个问题,我需要在Payload中添加自定义PHP变量,我想知道我在第二种方法中添加的方式是否正确。
基本上,我需要在 PHP
中创建一个 JSON 对象,如下所示{
"aps" : {
"alert" : {
"title" : "Game Request",
"body" : "Bob wants to play poker",
"action-loc-key" : "PLAY"
},
"badge" : 5,
},
"acme1" : "bar",
"acme2" : [ "bang", "whiz" ]
}
$send_data =
array(
'aps' =>
array
(
'status_code'=>200,
'alert'=>$message,
'sound' => 'default',
'notification_type'=>'DoctorPendingRequest',
'request_id'=>$request_id
)
);
将 $send_data 传递给负载。
您在 "date" 属性:
后缺少双引号"date:"'.$date1.'"
...应该...
"date":"'.$date1.'"
我建议首先将有效载荷放在一起作为 PHP object/array(就像你原来的例子),因为它 更 更容易看到该格式的结构而不是巨大的连接字符串。例如
$payload['aps'] = array(
'alert' => array(
'title' => $title,
'body' => $body,
'action-loc-key' => 'PLAY'
),
'badge' => $badge,
'sound' => 'default'
);
$payload['acme1'] = 'bar';
$payload['acme2'] = array(
'bang',
'whiz'
);
$payload = json_encode($body);