我開發推送通知的iPhone應用程序,並且當我在本地主機上運行php文件時遇到了錯誤。我已經正確創建了證書.pem文件。然後當我測試我的本地主機上的應用程序時,會顯示警告。PHP上的推送通知錯誤(iOS上的簡單推送通知)
警告:stream_socket_client()[function.stream插槽客戶端]:無法設置/應用程序的私有密鑰文件'/Applications/XAMPP/xamppfiles/htdocs/PushNotificationProject/ck.pem」/XAMPP/xamppfiles/htdocs中/ PushNotificationProject/simplepush.php第21行
警告:stream_socket_client()[function.stream插槽客戶端]:無法創建/應用程序的SSL手柄/ XAMPP/xamppfiles/htdocs中/ PushNotificationProject /simplepush.php on line 21
Warning:stream_socket_client()[functio n.stream-插座客戶]:無法使加密在/Applications/XAMPP/xamppfiles/htdocs/PushNotificationProject/simplepush.php第21行
警告:stream_socket_client()[function.stream插座-客戶]:無法連接到第21行的/Applications/XAMPP/xamppfiles/htdocs/PushNotificationProject/simplepush.php中的ssl://gateway.sandbox.push.apple.com:2195(未知錯誤) 未能連接:0
我得到這個錯誤。什麼可能是這個錯誤的原因?
這是我的PHP代碼。
<?php
// Put your device token here (without spaces):
$deviceToken = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
// Put your private key's passphrase here:
$passphrase = 'xxxxxxxxxx';
// Put your alert message here:
$message = 'My first push notification!';
////////////////////////////////////////////////////////////////////////////////
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
// Open a connection to the APNS server
$fp = stream_socket_client('ssl://gateway.sandbox.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',
'badge' => '1'
);
// 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);
?>
請幫我解決這個錯誤。
你好@Tapas帕爾。謝謝你提醒我。我沒有使用我的SSL證書,也許我忘了它。我已經下載了名爲:aps_development.cer的文件作爲默認文件名。接下來我應該做什麼? – Jarich
我認爲你已經下載了錯誤的一個SSL證書擴展名是.pem不是.cer –
我可以在哪裏生成SSL證書?我在證書類別下生成它。 – Jarich