Я отправляю 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 в полезную нагрузку.