Tôi đã cố gắng chuyển sang cái mới API nhà cung cấp APN.
Trước khi di chuyển, tôi thường sử dụng tập lệnh này để gửi thông báo đẩy thử nghiệm tới thiết bị thử nghiệm của mình.
<?php
// Đặt mã thông báo thiết bị của bạn ở đây (không có dấu cách):
$deviceToken = 'b5fa6af3eb6482ffa5d8551a0dcca76a780dcfc9662fbc7163a56d0973de8a9f';
// Đặt cụm mật khẩu của khóa riêng của bạn tại đây:
$passphrase = 'pushchat';
// Đặt thông báo cảnh báo của bạn ở đây:
$message = 'Xin chào!';
///////////////////////////////////////////////// //////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Mở kết nối đến máy chủ APNS
$fp = stream_socket_client(
'ssl://api.sandbox.push.apple.com:443', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
nếu (!$fp)
exit("Không kết nối được: $err $errstr". PHP_EOL);
echo 'Đã kết nối với APNS' . PHP_EOL;
// Tạo thân payload
$body['aps'] = mảng(
'cảnh báo' => $tin nhắn,
'âm thanh' => 'mặc định'
);
// Mã hóa payload dưới dạng JSON
$payload = json_encode($body);
// Xây dựng thông báo nhị phân
$msg = chr(0) . gói('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . tải trọng $;
// Gửi nó đến máy chủ
$result = fwrite($fp, $msg, strlen($msg));
nếu (!$kết quả)
echo 'Tin nhắn chưa được gửi' . PHP_EOL;
khác
echo 'Tin nhắn được gửi thành công' . PHP_EOL;
// Đóng kết nối đến máy chủ
fclose($fp);
Dựa theo Gửi yêu cầu thông báo tới APN, bây giờ có yêu cầu trường tiêu đề
Thích phương pháp
và con đường
.
Khi tôi sao chép và dán Tiêu đề từ Gửi yêu cầu thông báo tới APN phản hồi của thiết bị đầu cuối là Lỗi phân tích cú pháp PHP: lỗi cú pháp, mã thông báo không mong muốn ":" trong /Users/Desktop/thư mục đẩy đơn giản/simplepush.php trên dòng 6
<?php
TIÊU ĐỀ
- END_STREAM
+ END_HEADERS
:phương thức = BÀI ĐĂNG
: lược đồ = https
:path = /3/device/EXAMPLETOKEN
máy chủ = api.sandbox.push.apple.com
apns-id = eabae54-14a8-11e5-b60b-1697f925ec7b
apns-push-type = cảnh báo
apns-hết hạn = 0
ưu tiên apns = 10
DỮ LIỆU
+ END_STREAM
{ "aps" : { "alert" : "Xin chào" } }
// Đặt mã thông báo thiết bị của bạn ở đây (không có dấu cách):
$deviceToken = 'VÍ DỤ'; // Đặt cụm mật khẩu của khóa riêng của bạn tại đây:
$passphrase = 'pushchat';
// Đặt thông báo cảnh báo của bạn ở đây:
$message = 'Xin chào!';
///////////////////////////////////////////////// /////////////////. /////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Mở kết nối đến máy chủ APNS
$fp = stream_socket_client(
'ssl://api.sandbox.push.apple.com:443', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
nếu (!$fp)
exit("Không kết nối được: $err $errstr". PHP_EOL);
echo 'Đã kết nối với APNS' . PHP_EOL;
// Tạo thân payload
$body['aps'] = mảng(
'cảnh báo' => $tin nhắn,
'âm thanh' => 'mặc định'
);
// Mã hóa payload dưới dạng JSON
$payload = json_encode($body);
// Xây dựng thông báo nhị phân
$msg = chr(0) . gói('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . tải trọng $;
// Gửi nó đến máy chủ
$result = fwrite($fp, $msg, strlen($msg));
nếu (!$kết quả)
echo 'Tin nhắn chưa được gửi' . PHP_EOL;
khác
echo 'Tin nhắn được gửi thành công' . PHP_EOL;
// Đóng kết nối đến máy chủ
fclose($fp);
Cách chính xác để triển khai các trường tiêu đề này với tập lệnh này để nó có thể gửi thông báo đẩy thử nghiệm là gì?