Ich kann keine Benachrichtigung an APNS senden, um meinen Pass in Apple Wallet zu aktualisieren.
Ich versuche, eine Benachrichtigung an APNS zu senden, um meinen Pass in der Apple Wallet-App zu aktualisieren. Gemäßdieses Dokumen, wir müssen nur die Kennung des Übergabetyps und das Push-Token an APNs senden. Dann kümmern sie sich um den Rest.
$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);
Es wird kein Fehler zurückgegeben, aber es scheint nicht zu funktionieren. Was mache ich falsch? Bitte helfen Sie.