パスが Passbook に追加されると、iPhone または iPod は webServiceURL を呼び出して、デバイス ID とプッシュ トークンを通知します。これらが何であるかを知る方法はないため、デバイス ID とプッシュ トークンの両方をキャッチできるように Web サーバーを設定する必要があります。
デバイス ID は URL の一部として送信され、トークンは JSON オブジェクトとしてポストされます。
https://192.168.1.105:8888/passesWebserver/....
Web サーバーで、からのすべてのトラフィックを書き込むように書き換えルールを設定する必要がありますhttps://192.168.1.105:8888/passesWebserver/index.php
(これを行う方法については、Google または SO を検索してください)。
次に、次のような index.php を設定します。
// Transfer Request URL into array
$request = explode("/", substr(@$_SERVER['REQUEST_URI'], 1));
/**
* Register Device
*
* POST request to version/devices/<deviceLibraryIdentifier>/registrations/<passTypeIdentifier>/<serialNumber>
* Request will contain an Authorisation header with the value <ApplePass authenticationToken>, where
* authenticationToken equals the authenticationToken in the original voucher payload.
*/
if (strtoupper($_SERVER['REQUEST_METHOD']) === "POST"
&& isset($_SERVER['HTTP_AUTHORIZATION'])
&& strpos($_SERVER['HTTP_AUTHORIZATION'], 'ApplePass') === 0
&& $request[2] === "devices"
&& $request[4] === "registrations") {
$auth_key = str_replace('ApplePass ', '', $_SERVER['HTTP_AUTHORIZATION']);
$device_id = $request[3];
$pass_id = $request[5];
$serial = $request[6];
// Catch the JSON post and decode it
$dt = @file_get_contents('php://input');
$device_token = json_decode($dt);
$device_token = $device_token->pushToken;
if (!$device_token) die('No Token Found'); // Token wasn't found
// Add code to check the Auth Token against the serial number and add the
// device details to your database so you can use them later to push updates
// to the pass. This code should return a 200, 201 or other response depending
// on whether the auth is valid and the device is registered already or not
exit;
}
// Add other conditions to check for unregister, get serials, refresh and log.