りんご通帳サービスで遊んでいます。すべてのデバイスで非常に奇妙な動作をします。APNS 経由でデバイスにプッシュを送信して、特定のパスの更新があることを知らせると、更新は行われますが、デバイスのロック画面には通知が表示されません。
現在、PHP-Webservice と APNS の間の通信全体をログに記録しています。私はいつもheadre 200で答え、要求された答えです。(1st Serials; 2nd Pass.pkpass) デバイスは通帳アプリで確認できるように更新を行いますが、既に述べたように、ロック画面に通知が表示されません。この記事で説明されているように、デバイスが正しくセットアップされている:リンク
APNS リクエストは次のように行います。
public function sendePushNotification($passTypeID, $debug = true)
{
// Zertifikat vorhanden ?
$certFullPath = dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . "api/cert/ck.pem";
if (file_exists($certFullPath))
{
/**
* Payload vorbereiten
*/
$message = 'PASSDROP UPDATE';
$body = array();
$body['aps'] = array('alert' => $message);
/**
* Host bestimmen
*/
$apnsHost = "gateway.push.apple.com"; // Development Umgbung
/**
* Stream erstellen
*/
$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert', $certFullPath);
$fp = stream_socket_client('ssl://' . $apnsHost . ':2195', $err, $errstr, 2, STREAM_CLIENT_CONNECT, $ctx);
if (!$fp)
{
echo "Fehler beim APNS: " . $err . " / ". $errstr. "\n";
return false;
}
/**
* Payload versenden
*/
$payload = json_encode($body);
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '', $this->token)) . pack("n",strlen($payload)) . $payload;
}
else
{
throw new Exception("Zertifikat-Bundle " . $certFullPath . " existiert nicht !!!");
}
}
私が知る限り、Passbook で Pass をプッシュするとき、Apple はペイロードを読み取りません。
次に何を試すことができるか、誰かが私にヒントを持っていますか? pass.json ファイルに何か必要ですか?