APNS PHP JSON有效负载结构

时间:2015-10-19 10:25:00

标签: php json nested apple-push-notifications

我通过PHP脚本发送推送通知以连接到APNS服务器。当我使用下面的有效载荷结构时,一切正常。

$body['aps'] = array(
    'alert' => $message,
    'badge' => $badge,
    'sound' => 'default'

    );

$payload = json_encode($body);

但是,我需要在'提醒中添加更多参数。元素以及想要添加更多自定义参数。我的方法如下,但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变量添加到Payload,我想知道我在第二种方法中添加它的方式是对还是错。

基本上,我需要在PHP

中创建一个JSON对象,如下所示
{
    "aps" : {
        "alert" : {
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
            "action-loc-key" : "PLAY"
        },
        "badge" : 5,
    },
    "acme1" : "bar",
    "acme2" : [ "bang",  "whiz" ]
}

2 个答案:

答案 0 :(得分:4)

在" date"之后你错过了双引号。属性:

"date:"'.$date1.'"

......应该......

"date":"'.$date1.'"

我建议首先将有效负载放在一起作为PHP对象/数组(就像你的原始示例一样),因为很多更容易看到该格式的结构而不是巨型连接串。 E.g。

$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);

答案 1 :(得分:2)

$send_data = 
array(
        'aps' => 
        array
        (
            'status_code'=>200,
            'alert'=>$message,
            'sound' => 'default',
            'notification_type'=>'DoctorPendingRequest',
            'request_id'=>$request_id
        )
);

将$ send_data传递给有效负载。