ฉันพยายามย้ายไปที่ใหม่ API ผู้ให้บริการ APN.
ก่อนการย้าย ฉันเคยใช้สคริปต์นี้เพื่อส่งการแจ้งเตือนแบบพุชทดสอบไปยังอุปกรณ์ทดสอบของฉัน
<?php
// ใส่โทเค็นอุปกรณ์ของคุณที่นี่ (ไม่มีช่องว่าง):
$deviceToken = 'b5fa6af3eb6482ffa5d8551a0dcca76a780dcfc9662fbc7163a56d0973de8a9f';
// ใส่ข้อความรหัสผ่านของคีย์ส่วนตัวของคุณที่นี่:
$passphrase = 'พุชแชท';
// ใส่ข้อความแจ้งเตือนของคุณที่นี่:
$message = 'สวัสดี!';
//////////////////////////////////////////////////////// /////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'ข้อความรหัสผ่าน', $ข้อความรหัสผ่าน);
// เปิดการเชื่อมต่อกับเซิร์ฟเวอร์ APNS
$fp = stream_socket_client(
'ssl://api.sandbox.push.apple.com:443', $ผิดพลาด,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
ถ้า (!$fp)
exit("ไม่สามารถเชื่อมต่อ: $err $errstr" . PHP_EOL);
echo 'เชื่อมต่อกับ APNS' แล้ว PHP_EOL;
// สร้างเนื้อความเพย์โหลด
$body['aps'] = อาร์เรย์(
'alert' => $ข้อความ
'เสียง' => 'ค่าเริ่มต้น'
);
// เข้ารหัสเพย์โหลดเป็น JSON
$payload = json_encode($body);
// สร้างการแจ้งเตือนไบนารี
$msg = chr(0) . แพ็ค('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $น้ำหนักบรรทุก;
// ส่งไปยังเซิร์ฟเวอร์
$result = fwrite($fp, $msg, strlen($msg));
ถ้า (!$ ผล)
echo 'ส่งข้อความไม่ได้' PHP_EOL;
อื่น
echo 'ส่งข้อความสำเร็จ' PHP_EOL;
// ปิดการเชื่อมต่อกับเซิร์ฟเวอร์
fclose($fp);
ตาม การส่งคำขอการแจ้งเตือนไปยัง APNตอนนี้มีความจำเป็น ฟิลด์ส่วนหัว
ชอบ กระบวนการ
และ เส้นทาง
.
เมื่อฉันคัดลอกและวางส่วนหัวจาก การส่งคำขอการแจ้งเตือนไปยัง APN การตอบสนองของเทอร์มินัลคือ ข้อผิดพลาดในการแยกวิเคราะห์ PHP: ข้อผิดพลาดทางไวยากรณ์, โทเค็นที่ไม่คาดคิด ":" ใน /Users/Desktop/simple push folder/simplepush.php ในบรรทัดที่ 6
<?php
ส่วนหัว
- END_STREAM
+ END_HEADERS
: วิธีการ = โพสต์
:scheme = https
:path = /3/device/EXAMPLETOKEN
โฮสต์ = api.sandbox.push.apple.com
apns-id = eabeae54-14a8-11e5-b60b-1697f925ec7b
apns-push-type = แจ้งเตือน
apns-หมดอายุ = 0
apns-priority = 10
ข้อมูล
+ END_STREAM
{ "aps" : { "alert" : "สวัสดี" } }
// ใส่โทเค็นอุปกรณ์ของคุณที่นี่ (ไม่มีช่องว่าง):
$deviceToken = 'ตัวอย่าง'; // ใส่ข้อความรหัสผ่านของคีย์ส่วนตัวของคุณที่นี่:
$passphrase = 'พุชแชท';
// ใส่ข้อความแจ้งเตือนของคุณที่นี่:
$message = 'สวัสดี!';
//////////////////////////////////////////////////////// /////////////////. /////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'ข้อความรหัสผ่าน', $ข้อความรหัสผ่าน);
// เปิดการเชื่อมต่อกับเซิร์ฟเวอร์ APNS
$fp = stream_socket_client(
'ssl://api.sandbox.push.apple.com:443', $ผิดพลาด,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
ถ้า (!$fp)
exit("ไม่สามารถเชื่อมต่อ: $err $errstr" . PHP_EOL);
echo 'เชื่อมต่อกับ APNS' แล้ว PHP_EOL;
// สร้างเนื้อความเพย์โหลด
$body['aps'] = อาร์เรย์(
'alert' => $ข้อความ
'เสียง' => 'ค่าเริ่มต้น'
);
// เข้ารหัสเพย์โหลดเป็น JSON
$payload = json_encode($body);
// สร้างการแจ้งเตือนไบนารี
$msg = chr(0) . แพ็ค('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $น้ำหนักบรรทุก;
// ส่งไปยังเซิร์ฟเวอร์
$result = fwrite($fp, $msg, strlen($msg));
ถ้า (!$ ผล)
echo 'ส่งข้อความไม่ได้' PHP_EOL;
อื่น
echo 'ส่งข้อความสำเร็จ' PHP_EOL;
// ปิดการเชื่อมต่อกับเซิร์ฟเวอร์
fclose($fp);
วิธีที่ถูกต้องในการใช้ฟิลด์ส่วนหัวเหล่านี้กับสคริปต์นี้เพื่อให้สามารถส่งการแจ้งเตือนแบบพุชทดสอบได้คืออะไร