プッシュ通知のトリガー

パートナーによってトリガーされる通知

メッセージを追加して通知する

背景

ユーザーがパスを追加した後、パスに関連するメッセージを送信して、ユーザーに通知したい場合があります。message_typeTEXT_AND_NOTIFY Add Message API リクエストを使用すると、次のようになります。

  1. メッセージ」アイテムが「パスの裏面」(別名「詳細テンプレート」)に追加され、パスを保存したユーザーにプッシュ通知が送信されます。
  2. ユーザーが通知をタップすると、Google ウォレットがパスの前面(カードビュー)に開き、画面上部に [メッセージを表示] ボタンを含む吹き出しが表示されます。
  3. 吹き出しをクリックすると、パスの裏面に移動し、新しい未読メッセージがハイライト表示されます。

通知付きメッセージをユーザーに送信する際の考慮事項

  • メッセージに関連するプッシュ通知を受け取るには、パスの通知を有効にする必要があります。
  • メッセージには、ウェブサイトまたはアプリの URI を含めることができます。ハイパーリンクは、パスに関連するウェブサイトまたはアプリである必要があります。パスに関連しないリンクにユーザーを誘導することは、利用規定に違反します。
  • プッシュ通知をトリガーするメッセージは、24 時間に最大 3 件まで送信できます。ユーザーにスパムを送信していると Google が判断した場合、プッシュ通知の配信割り当てが制限されることがあります。
  • ロック画面に表示されるプッシュ通知は、Google ウォレットによって制御されます。
  • UPDATE メソッドまたは PATCH メソッドを使用すると、通常のクラス エンドポイントまたはオブジェクト エンドポイントを使用してメッセージ データを編集または削除できます。

統合の手順

AddMessage API を使用して追加された新しい発行者のメッセージをユーザーに通知する場合は、新しいテキストを含む MessageMessageTypeTEXT ではなく TEXT_AND_NOTIFY になるように、AddMessageRequest を更新する必要があります。

Passes クラスでメッセージを追加して通知する JSON リクエストの例

  
  "id": ISSUER_ID.CLASS_ID",
  "message":
    {
        "header":"My Class message header",
        "body": "My Class message body with a <a href="https://wallet.google">Hyperlink<\a>",
        "id": "message_id",
        "message_type": "TEXT_AND_NOTIFY"
    },
  

パス オブジェクトにメッセージを追加して通知するための JSON リクエストの例

  
  "id": OBJECT_ID",
  "classId": "ISSUER_ID.CLASS_ID",
  "message":
    {
        "header":"My Object message header",
        "body": "My Object message body with a <a href="http://play.google.com/store/apps/details?id=com.google.android.apps.maps">Hyperlink<\a>",
        "id": "message_id",
        "message_type": "TEXT_AND_NOTIFY"
    },
  

パスクラスのメッセージを追加して通知する Response の例

  // The updated resource
      {
      "kind": "walletobjects#walletObjectMessage",
      "header": "My Object message header",
      "body": "My Object message body with a <a href="http://play.google.com/store/apps/details?id=com.google.android.apps.maps">Hyperlink<\a>",
      "id": "message_id",
      "messageType": "textAndNotify"
    },
  

例外処理

4 回以上通知しようとすると、QuotaExceededException レスポンスが返されます。パスのさらなる更新は、統合手順で説明したように、「TEXT_AND_NOTIFY」ではなく「TEXT」を使用して設定できます。

Update Field and Notify(フィールドを更新して通知)

背景

ユーザーがパスを追加した後、特定のフィールドを更新したときにプッシュ通知をトリガーすることがあります。通知はユーザーのロック画面に表示され、パスの更新があることを知らせます。この通知は、UPDATE API メソッドと PATCH API メソッドを使用して以下で定義された特定のフィールドのサブセットに対してのみトリガーされます。パスを更新する API 呼び出しが行われると、次の処理が行われます。

  1. プッシュ通知がトリガーされ、ユーザーのロック画面に表示されて、パスの更新が通知されます。
  2. ユーザーが通知をタップすると、Google ウォレットがパスの前面(カードビュー)に開き、画面上部に [更新を確認] ボタンが表示されます。
  3. ボタンをクリックすると、更新によって変更されたフィールドを確認できる画面が表示されます。

フィールド更新通知を送信する際の考慮事項

  • 更新に関するプッシュ通知を受け取るには、パスの通知を有効にする必要があります。
  • 24 時間以内にプッシュ通知をトリガーする更新を送信できるのは最大 3 回です。ユーザーにスパム行為を行っていると Google が判断した場合、プッシュ通知の配信割り当てが制限されることがあります。
  • ロック画面に表示されるプッシュ通知は、Google ウォレットによって制御されます。
  • notifyPreference フィールドは、このリクエストでのみ有効な一時的なフィールドです。今後、リクエストで通知をトリガーする場合は、クラスまたはオブジェクトのリクエストでこのフィールドをリセットする必要があります。

統合の手順

これらの通知をトリガーするには、既存の UPDATE 呼び出しまたは PATCH 呼び出しを使用して、notifyPreference を指定する必要があります。クラスまたはオブジェクトのフィールドを更新するときに、クラスまたはオブジェクトのリクエストに新しいフィールド notifyPreference を追加して、通知をトリガーできます。

クラスで更新と通知を行う JSON リクエストの例

    …
    "dateTime":
        {
            "kind": "walletobjects#eventDateTime",
            "doorsOpen": "2024-09-23T19:20:50.00"
        },
    "multipleDevicesAndHoldersAllowedStatus": "multipleHolders",
    "notifyPreference": "notifyOnUpdate",
    …
  

notifyPreferencenotifyOnUpdate に設定すると、更新されたフィールドが現在サポートされている場合に通知がトリガーされます。

サポートされるフィールド

FlightObject
  • boardingAndSeatingInfo.seatNumber
  • boardingAndSeatingInfo.seatAssignment

Nearby による通知

この機能では、通知を有効にして Google ウォレット アプリに正確な位置情報への常時アクセスを許可しているユーザーに対して、現在地に関連するパスを保存したことを知らせるプッシュ通知が表示されます。

統合の手順

使用方法

この機能を使用するには、クラスとオブジェクトにロケーションを追加する必要があります。クラスごとに最大 10 個、オブジェクトごとに最大 10 個のロケーションを追加できます。クラスまたはオブジェクトの定義で MerchantLocations を使用します。これらのロケーションは、insertpatchupdate メソッドを使用するときに追加できます。

クラスまたはオブジェクトに位置情報を追加すると、ユーザーが近くにいるときに Google からユーザーに通知が送信されます。通知が送信されるまでにユーザーがどの程度近くにいる必要があるか、どの程度の時間そのエリアに滞在する必要があるかは、Google が決定します。通知のテキストも Google が管理します。

MerchantLocations が設定された LoyaltyClass の例:
{
  "kind": "walletobjects#loyaltyClass",
  "programLogo": {
  "kind": "walletobjects#image",
  "sourceUri": {
    "uri":
    ...
  }
  },
  "localizedProgramName": {
    "kind": "walletobjects#localizedString",
    "defaultValue": {
      "kind": "walletobjects#translatedString",
      "language": "en",
      "value": "Program Name",
    }
  },
  "id": Id1234,
  "version": "1",
  "allowMultipleUsersPerObject": true,
  "reviewStatus": "underReview",
  "enableSmartTap": false,
  "localizedIssuerName": {
    "kind": "walletobjects#localizedString",
    "defaultValue": {
      "kind": "walletobjects#translatedString",
      "language": "en",
      "value": "Issuer Name"
    }
  },
  "multipleDevicesAndHoldersAllowedStatus": "multipleHolders",
  "merchantLocations": [
    {
      "latitude": 37.79020867928078,
      "longitude": -122.39004
    },
    {
      "latitude": 37.42587,
      "longitude": -122.08620
    },
  ]
}

期待される動作

ユーザーが指定された MerchantLocation のいずれかにいる場合、パスに関する固定通知が表示される必要があります。通知をクリックすると、Google ウォレットでパスが開きます。ユーザーはスワイプ ジェスチャーで通知を閉じることができます。ユーザーがその場所を離れると、通知は消えます。

Google ウォレットによってトリガーされる自動通知

予定の通知

Google ウォレットから、フライトの 3 時間前にユーザーに通知が送信されます。フライトの時間は class.localScheduledDepartureDateTime で定義されます。

この通知を受け取るには、通知を有効にする必要があります。これを確認するには、[設定] > [通知] の順に移動し、[パスに関する最新情報] がオンになっているかを確認します。

通知は通知エリアに表示されます。 ロック画面の通知を有効にした場合は、ロック画面にも表示されます。

通知は以下のような形式になっています。この形式は変更できません。

  Boarding pass for your flight to class.destination.airportIataCode
  

通知をタップしてデバイスのロックを解除すると、Google ウォレット アプリにパスが表示されます。

複数のパスがある場合は、一番早く利用できるパスだけ表示されます。また、複数の搭乗券をグループ化して追加している場合、グループ内の 1 つのパスのみが表示されます。このパスをタップして、左右にスワイプすると、グループ内の他のパスを表示できます。

通知は固定され、ユーザーが開いても自動的には閉じません。class.localScheduledDepartureDateTime の 60 分後に自動的に閉じます。

フライト情報の更新の通知

フライトの特定のフィールドが変更されると、搭乗券を追加しているユーザーのデバイスにプッシュ通知が送信されます。これは特定の条件が満たされた場合にのみ発生します。

ターミナルと搭乗ゲート

class.origin.terminal または class.origin.gate が変更され、次の条件が満たされると、フィールドが変更されたという通知が送信されます。

  • class.localScheduledDepartureDateTime まで 3 時間未満である。

通知の形式は、「Sample Airlines によってゲートが A1 に変更されました」のようになります。この形式は変更できません。

搭乗時間と出発時間

class.localBoardingDateTime または class.localEstimatedOrActualDepartureDateTime が変更され、次の条件が満たされると、フィールドが変更されたという通知が送信されます。

  • class.localScheduledDepartureDateTime まで 24 時間未満である。
  • 時間の変更が 10 分以上である。

通知の形式は、「Sample Airlines が搭乗時間を午後 6:00 に更新しました。」のようになります。この形式または言語はカスタマイズできません。