1
我試圖將通知推送至APNS以更新Apple Wallet應用程序中的通行證。根據this document,我們只需要將傳遞類型標識符和推送令牌發送給APN。然後他們會照顧其餘的。無法將通知推送至APNS以更新Apple Wallet中的通行證
$apnsHost = 'gateway.push.apple.com';
$apnsPort = 2195;
$apnsCert = base_path('app/config/passbook/certificates.pem');
$payload = ['aps' => []];
$payload = json_encode($payload);
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
stream_context_set_option($streamContext, 'ssl', 'passphrase', 'xxxxxx');
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
if(!$apns) {
Logger::logError(1, "Passbook push notification error", ['serial_number' => $serialNumber, 'pass_type_id' => $passIdentify]);
return "Failed to connect (stream_socket_client): $error $errorString";
} else {
foreach($push_tokens as $idx => $push_token) {
$msg = chr(0) . pack('n', 32) . pack('H*', $push_token) . pack('n', strlen($payload)) . $payload;
fwrite($apns, $msg);
}
}
@socket_close($apns);
fclose($apns);
沒有錯誤返回,但它似乎不起作用。我做錯了什麼?請幫忙。
你肯定沒有返回錯誤?正如我所看到的,你只是寫信給socket而不是閱讀。您正嘗試將通知發送給正在生產的應用程序。您是否設法在使用沙箱網關進行開發時嚮應用發送通知?另外,可能有一些類似的問題可以幫助你。 http://stackoverflow.com/questions/26865331/stream-socket-client-unable-to-connect-to-ssl-gateway-sandbox-push-apple-co – astrocrack
對不起,我沒有解釋清楚。我正在嘗試將通知推送給APNS以更新Apple Wallet應用程序中的通行證。根據[本文檔](https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/PassKit_PG/Updating.html#//apple_ref/doc/uid/TP40012195-CH5-SW1),我們只需要將通行證類型標識符和推送令牌發送給APN。然後他們會照顧其餘的。 –
你使用什麼證書? – PassKit