Với ứng dụng của tôi trên App Store, thông báo đẩy không hoạt động. Với ứng dụng của tôi trong Phát triển, thông báo đẩy đang hoạt động.Thông báo đẩy của Apple không hoạt động trong sản xuất
Tôi đoán tôi nên thử nghiệm thông qua triển khai Ad Hoc. Dù sao, đây là những gì tôi biết ...
App ID
ID App của tôi là com.MyName.My-App
Nó có Đẩy Thông báo kích hoạt cho phát triển và phân phối
APN Certificates
Tôi có cả chứng chỉ Phát triển và Phân phối. Đó là Quận tôi quan tâm.
Nó có tên com.MyName.My-App
xuất sang PEM
tôi đã chọn cả Cert và khóa bí mật, và xuất khẩu nó, như sau:
và được bảo vệ bằng mật khẩu nó.
sau đó tôi chạy
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
cung cấp mật khẩu, và nhận được thành công pushcert.pem
đầu ra.
Tải App
tôi xóa bởi phía máy chủ thẻ thiết bị cho điện thoại của tôi, tôi tải về ứng dụng của tôi từ cửa hàng ứng dụng, mở nó ra và chấp nhận Notifications Push, và sau đó đăng nhập vào máy chủ của tôi để kiểm tra thiết bị thẻ của tôi . Tôi có mã thông báo thiết bị sản xuất của mình ngay bây giờ. Tôi chạy tập lệnh php đơn giản này (hoạt động khi tôi cung cấp mã thông báo thiết bị phát triển) nhưng không thành công với mã thông báo thiết bị sản xuất của mình.
<?php
// Put your device token here (without spaces):
$deviceToken = 'myProductionDeviceTokenInHere';
// Put your private key's passphrase here:
$passphrase = 'myPasswordIsInHere';
// Put your alert message here:
$message = 'Test';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'pushcert.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
stream_context_set_option($ctx, 'ssl', 'cafile', 'entrust_2048_ca.cer');
// Open a connection to the APNS server
$fp = stream_socket_client(
'ssl://gateway.push.apple.com:2195', $err,
$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);
echo 'Connected to APNS' . PHP_EOL;
// Create the payload body
$body['aps'] = array(
'alert' => $message,
'sound' => 'default'
);
// Encode the payload as JSON
$payload = json_encode($body);
// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;
// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));
if (!$result)
echo 'Message not delivered' . PHP_EOL;
else
echo 'Message successfully delivered' . PHP_EOL;
// Close the connection to the server
fclose($fp);
Tại sao nó không thành công? Nó hoạt động với mã thông báo thiết bị phát triển của tôi, chứ không phải mã thông báo thiết bị sản xuất của tôi. Tôi đã không làm một cái gì đó một cách chính xác?
bạn hãy thử tạo adhoc với chứng chỉ hiện tại để thông báo đẩy? Có thể bổ sung của bạn trên giấy chứng nhận khác biệt sử dụng cửa hàng. –
Xin chào! Bạn đã thử giải pháp của tôi chưa? –
@JulianE. Chưa phải tôi sẽ có cơ hội trong những ngày lễ trong vài ngày tới để cho nó đi. –