PHP CURL - Apple 推送通知服务器
PHP CURL - Apple push notification servers
我正在编写代码以使用 PHP Laravel 向 Apple 推送通知服务器 (APN) 发送通知。它在文档中说它需要 HTTP/ HPACK header 压缩。
我试过使用 cURL
$cURLConnection = curl_init();
if(strcmp(env('APP_ENV'), 'production') == 0) {
curl_setopt($cURLConnection, CURLOPT_URL, 'api.push.apple.com:443');
} else {
curl_setopt($cURLConnection, CURLOPT_URL, 'api.development.push.apple.com:443');
}
curl_setopt_array($cURLConnection, [
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_HTTP_VERSION =>CURL_HTTP_VERSION_2_0,
]);
curl_setopt($cURLConnection, CURLOPT_HTTPHEADER, array(
'path: /3/device/<devicetoken>',
'authorization: bearer ' . $token,
'Content-Type: application/json'
));
curl_setopt($cURLConnection, CURLOPT_POSTFIELDS, $postRequest);
curl_setopt ($cURLConnection, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
$apiResponse = curl_exec($cURLConnection);
但 APNS 服务器总是返回 'Empty reply from server'
我看到一些可能有问题的地方。
尝试添加以下内容以实际将您的请求变成 POST 请求。
curl_setopt($c, CURLOPT_POST, 1);
您的 'path' 也应该是主 URL 的一部分,而不是作为 header 添加。
curl_setopt($c, CURLOPT_URL, "https://api.push.apple.com:443/3/device/<devicetoken>");
我正在编写代码以使用 PHP Laravel 向 Apple 推送通知服务器 (APN) 发送通知。它在文档中说它需要 HTTP/ HPACK header 压缩。
我试过使用 cURL
$cURLConnection = curl_init();
if(strcmp(env('APP_ENV'), 'production') == 0) {
curl_setopt($cURLConnection, CURLOPT_URL, 'api.push.apple.com:443');
} else {
curl_setopt($cURLConnection, CURLOPT_URL, 'api.development.push.apple.com:443');
}
curl_setopt_array($cURLConnection, [
CURLOPT_RETURNTRANSFER =>true,
CURLOPT_HTTP_VERSION =>CURL_HTTP_VERSION_2_0,
]);
curl_setopt($cURLConnection, CURLOPT_HTTPHEADER, array(
'path: /3/device/<devicetoken>',
'authorization: bearer ' . $token,
'Content-Type: application/json'
));
curl_setopt($cURLConnection, CURLOPT_POSTFIELDS, $postRequest);
curl_setopt ($cURLConnection, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
$apiResponse = curl_exec($cURLConnection);
但 APNS 服务器总是返回 'Empty reply from server'
我看到一些可能有问题的地方。
尝试添加以下内容以实际将您的请求变成 POST 请求。
curl_setopt($c, CURLOPT_POST, 1);
您的 'path' 也应该是主 URL 的一部分,而不是作为 header 添加。
curl_setopt($c, CURLOPT_URL, "https://api.push.apple.com:443/3/device/<devicetoken>");