1

この投稿はセットアップに非常に役立ちますが、パスがインストールされているiPhoneでプッシュ通知が届くのはまだわかりません。

Passkit-push-notification-not-working-with-urban-airship

私はAppleの開発サーバーにプッシュする都市飛行船のサイトにアプリをセットアップしました。携帯電話にパスをインストールし、上記の投稿で見つけた次のコマンドを実行します。

airship = urbanairship.Airship(_UrbanAirshipPassbookKey, _UrbanAirshipPassbookMasterSecret) 
airship.push({'aps': {'alert': 'Go.'}}, device_tokens=tokens)

次に、XcodeのiPhoneコンソールウィンドウにこのプッシュの確認が表示されます。

Received push for topic pass.xxx.xxx: {
    ...
    aps =  {
        banner = "Hello";
    };

次に、iPhoneは更新タグをパスタイプIDとデバイスライブラリIDとともにWebサービスに送り返します。この時点で、Webサービスは変更されたパスのリストを送り返すことになっています。ただし、代わりに次のエラーメッセージが表示されます。

<Warning>: Web service error for pass.mypasstype.id (http://192.168.30.209:8000): Response to 'What changed?' request included 1 serial numbers but the lastUpdated tag (2013-02-11T17:25:25) remained the same.

なぜこれが起こっているのか誰かが知っていますか?プッシュ通知をデバイスに表示するには、パスのフィールドを実際に変更する必要がありますか?

4

1 に答える 1

2

あなたの質問に対する簡単な答えは「はい」です。プッシュ通知を表示するには、パスのフィールドを変更する必要があります。これは、アプリプッシュとは異なり、Passbookプッシュペイロードが通知の内容を決定しないためです。

パスブックプッシュメッセージの目的は、Webサービスに更新されたコンテンツを含む新しいパスがあることをデバイスに警告することです。アラートテキストは、新しいパスの内容によってのみ決定されます。プッシュペイロードのコンテンツはすべて無視されます。Appleは、空のJSONディクショナリを使用したプッシュ通知をアドバイスしています。

プッシュが送信されると、次のチェーンがトリガーされます。

  • デバイスはプッシュを受信し、passTypeIdentifierandlastUpadtedタグを使用してWebサービスにクエリを実行します
  • Webサービスは、タグpassTypeIdentifier以降に変更されたすべてのパスのシリアルのリストを提供しますlastUpdated
  • デバイスはシリアルを受信し、新しいパスごとに新しい.pkpassバンドルを送信するようにWebサービスに要求します
  • Webサービスは新しい.pkpassバンドルを送信します
  • デバイスは.pkpassバンドルを受け取り、変更がないか古いパスと照合します
  • changeMessage次の基準が満たされている場合、デバイスはキー で提供される通知を表示します。
    • 値が変更されました
    • にはchangeMessage%@文字列が含まれます

%@文字列が存在しない場合、パスには通知が表示されPass Changedます。changeMessage変更された値のキーが存在しない場合、メッセージは表示されません。

于 2013-02-13T01:37:12.093 に答える