2

APNS にプッシュ通知を送信して、Apple Wallet アプリでパスを更新しようとしています。このドキュメントによると、パス タイプ識別子とプッシュ トークンを APNs に送信するだけで済みます。その後、彼らは残りの世話をします。

$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);

エラーは返されませんが、機能していないようです。私は何を間違っていますか?助けてください。

4

1 に答える 1