Intereting Posts

APNS PHP JSON Структура полезной нагрузки

Я отправляю push-уведомления через скрипт PHP для подключения к серверу APNS. Все работает нормально, когда я использую нижнюю структуру полезной нагрузки.

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

Однако мне нужно добавить дополнительные параметры в элемент «alert», а также добавить дополнительные пользовательские параметры. То, как я это делаю, выглядит следующим образом, но APNS не принимает JSON. Это проблема с моим методом создания JSON в PHP?

 $payload='{ "aps": { "alert":{ "title": "'.$message.'", "body":"'.$notif_desc.'" }, "badge":"'.$badge.'", "sound": "default" }, "type": "notification", "id":"'.$lastid.'", "date:"'.$date1.'" }'; 

Так что в основном у меня есть два вопроса. Второй метод неправильный? Если это так, пожалуйста, покажите мне действительный метод создания вложенной полезной нагрузки JSON для сервера APNS. Второй вопрос: мне нужно добавить пользовательские переменные PHP в полезную нагрузку, я хочу знать, правильно или неправильно ли я добавил его во втором методе.

в основном, мне нужно создать объект JSON, как показано ниже в PHP

 { "aps" : { "alert" : { "title" : "Game Request", "body" : "Bob wants to play poker", "action-loc-key" : "PLAY" }, "badge" : 5, }, "acme1" : "bar", "acme2" : [ "bang", "whiz" ] } 

После свойства «date» у вас отсутствует двойная кавычка:

 "date:"'.$date1.'" 

… должно быть…

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

Я бы рекомендовал сначала объединить полезную нагрузку в качестве объекта / массива PHP (например, ваш оригинальный пример), так как гораздо проще увидеть структуру в этом формате, а не гигантскую конкатенированную строку. Например

 $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); 
 $send_data = array( 'aps' => array ( 'status_code'=>200, 'alert'=>$message, 'sound' => 'default', 'notification_type'=>'DoctorPendingRequest', 'request_id'=>$request_id ) ); 

Передаёт $ send_data в полезную нагрузку.