搭乗券テンプレート

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

次のツールを使用して搭乗券をカスタマイズします。また、以下のコード スニペットを参照してください。

搭乗券はテンプレートのレンダリングをサポートしています。テンプレートが定義されていない場合は、デフォルトのテンプレートが使用されます。

テンプレートの定義

パス テンプレートはクラスレベルで定義され、クラスに関連付けられたオブジェクトを表示するために使用されます。このテンプレートでは、パスのさまざまなセクションに表示するフィールドを定義します。

テンプレートは次のセクションに分かれています。

Android

テンプレートの概要

ウェブ

テンプレートの概要

カードタイトル

Android

カードタイトルの要素
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    または class.localizedIssuerName
    または class.issuerName
  3. class.flightHeader.carrier.carrierIataCode
    または class.flightHeader.carrier.carrierIcaoCode
    class.flightHeader.flightNumber
  4. 空港の都市(class.origin.airportIataCode から派生)
    または class.origin.airportNameOverride
  5. class.origin.airportIataCode
  6. 空港の都市(class.destination.airportIataCode から派生)
    または class.destination.airportNameOverride
  7. class.destination.airportIataCode
  8. object.hexBackgroundColor
    または class.hexBackgroundColor

ウェブ

カードタイトルの要素
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    または class.localizedIssuerName
    または class.issuerName
  3. class.flightHeader.carrier.carrierIataCode
    または class.flightHeader.carrier.carrierIcaoCode
    class.flightHeader.flightNumber
  4. 空港の都市(class.origin.airportIataCode から派生)
    または class.origin.airportNameOverride
  5. class.origin.airportIataCode
  6. 空港の都市(class.destination.airportIataCode から派生)
    または class.destination.airportNameOverride
  7. class.destination.airportIataCode
  8. object.hexBackgroundColor
    または class.hexBackgroundColor

カードタイトル セクションには、航空会社のロゴと名前、フライトの概要が表示されます。これら 3 つの要素はすべて必須であり、入力に使用されるフィールド参照も位置も変更できません。

class.origin.airportNameOverride または class.detination.airportNameOverride が設定されていない場合、空港の都市名がそれぞれ class.origin.airportIataCodeclass.destination.airportIataCode の IATA コードに関連付けられた都市名になります。

カード テンプレート

Android

テンプレートの概要

ウェブ

テンプレートの概要

カード テンプレート セクションは、追加行を表示するために使用されます。これらの行には、テキストベースの構造化データ フィールドまたはテキスト モジュール フィールドを含めることができます。

class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[] リストで、オブジェクトの数を定義する行数を指定できます。このリストには少なくとも 1 つの要素が必要ですが、最大 2 つの要素を使用することをおすすめします。各要素は、次のいずれかのタイプでなければなりません。

  • oneItem。1 つのアイテムを受け入れます。
    • item
  • twoItems。次の 2 つのアイテムを受け取ります。
    • startItem
    • endItem
  • threeItems。次の 3 つのアイテムを受け入れます。
    • startItem
    • middleItem
    • endItem

各アイテムは、単一のフィールド セレクタ(.firstValue)、2 つのフィールド セレクタ(.firstValue.secondValue)、または事前定義アイテム(.predefinedItem)のいずれかとして定義できます。選択したフィールドの値とそれぞれのラベルが表示されます。2 つのフィールド セレクタを定義すると、選択したフィールドの値が「/」で区切られて表示されます。選択したフィールドのラベルについても同様です。事前定義されたアイテムは、より複雑なレンダリングの定義に使用されます。

次のコードサンプルは、カード テンプレートのカード行セクションをオーバーライドして 2 行を指定する方法を示しています。各行には、6 つのクラスレベルの textModuleData カスタム フィールドとそのヘッダーをラベルとして参照する 3 つの項目があります。

Python

 {
   ... //Rest of class
   "textModulesData": [
        {
            "header": "Label 1",
            "body": "Some info 1",
            "id": "myfield1"
        },
        {
            "header": "Label 2",
            "body": "Some info 2",
            "id": "myfield2"
        },
        {
            "header": "Label 3",
            "body": "Some info 3",
            "id": "myfield3"
        },
        {
            "header": "Label 4",
            "body": "Some info 4",
            "id": "myfield4"
        },
        {
            "header": "Label 5",
            "body": "Some info 5",
            "id": "myfield5"
        },
        {
            "header": "Label 6",
            "body": "Some info 6",
            "id": "myfield6"
        }
    ],
   "classTemplateInfo": {
        "cardTemplateOverride": {
            "cardRowTemplateInfos": [{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield1']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield2']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield3']"
                            }]
                        }
                    },
                }
            },{
                "threeItems": {
                    "startItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield4']"
                            }]
                        }
                    },
                    "middleItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield5']"
                            }]
                        }
                    },
                    "endItem": {
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.textModulesData['myfield6']"
                            }]
                        }
                    },
                }
            }]
        }
    }
}
    

Java

// Rest of class
  .setTextModulesData((new ArrayList<TextModuleData>() {
    {
      add((new TextModuleData()).setHeader("Label 1")
        .setBody("Some info 1")
        .setId("myfield1"));
      add((new TextModuleData()).setHeader("Label 2")
        .setBody("Some info 1")
        .setId("myfield2"));
      add((new TextModuleData()).setHeader("Label 3")
        .setBody("Some info 3")
        .setId("myfield3"));
      add((new TextModuleData()).setHeader("Label 4")
        .setBody("Some info 4")
        .setId("myfield4"));
      add((new TextModuleData()).setHeader("Label 5")
        .setBody("Some info 5")
        .setId("myfield5"));
      add((new TextModuleData()).setHeader("Label 6")
        .setBody("Some info 5")
        .setId("myfield6"));
    }
  }))
  .setClassTemplateInfo((new ClassTemplateInfo())
    .setCardTemplateOverride((new CardTemplateOverride())
      .setCardRowTemplateInfos(new ArrayList<CardRowTemplateInfo>() {
        {
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield1']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield2']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield3']"));
              }
            })))
          ));
          add((new CardRowTemplateInfo()).setThreeItems((new CardRowThreeItems())
            .setStartItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield4']"));
              }
            })))
            .setMiddleItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield5']"));
              }
            })))
            .setEndItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
              {
                add((new FieldReference()).setFieldPath("class.textModulesData['myfield6']"));
              }
            })))
          ));
          }
  })))
    

PHP

// Rest of class
    $textModulesData1 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData1->setBody("Some info 1");
    $textModulesData1->setHeader("Label 1");
    $textModulesData1->setId("myfield1");

    $textModulesData2 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData2->setBody("Some info 2");
    $textModulesData2->setHeader("Label 2");
    $textModulesData2->setId("myfield2");

    $textModulesData3 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData3->setBody("Some info 3");
    $textModulesData3->setHeader("Label 3");
    $textModulesData3->setId("myfield3");

    $textModulesData4 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData4->setBody("Some info 4");
    $textModulesData4->setHeader("Label 4");
    $textModulesData4->setId("myfield4");

    $textModulesData5 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData5->setBody("Some info 5");
    $textModulesData5->setHeader("Label 5");
    $textModulesData5->setId("myfield5");

    $textModulesData6 = new Google_Service_Walletobjects_TextModuleData();
    $textModulesData6->setBody("Some info 6");
    $textModulesData6->setHeader("Label 6");
    $textModulesData6->setId("myfield6");

    $textModulesDatas = array($textModulesData1, $textModulesData2, $textModulesData3,
                  $textModulesData4, $textModulesData5, $textModulesData6);

    $startItemField = new Google_Service_Walletobjects_FieldReference();
    $startItemField->setFieldPath("class.textModulesData['myfield1']");

    $startItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue->setFields(array($startItemField));

    $startItem = new Google_Service_Walletobjects_TemplateItem();
    $startItem->setFirstValue($startItemFirstValue);

    $middleItemField = new Google_Service_Walletobjects_FieldReference();
    $middleItemField->setFieldPath("class.textModulesData['myfield2']");

    $middleItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue->setFields(array($middleItemField));

    $middleItem = new Google_Service_Walletobjects_TemplateItem();
    $middleItem->setFirstValue($middleItemFirstValue);

    $endItemField = new Google_Service_Walletobjects_FieldReference();
    $endItemField->setFieldPath("class.textModulesData['myfield3']");

    $endItemFirstValue = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue->setFields(array($endItemField));

    $endItem = new Google_Service_Walletobjects_TemplateItem();
    $endItem->setFirstValue($endItemFirstValue);

    $cardRowTemplate = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate->setStartItem($startItem);
    $cardRowTemplate->setMiddleItem($middleItem);
    $cardRowTemplate->setEndItem($endItem);

    $cardRowTemplateInfo1 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo1->setThreeItems($cardRowTemplate);

    $startItemField2 = new Google_Service_Walletobjects_FieldReference();
    $startItemField2->setFieldPath("class.textModulesData['myfield4']");

    $startItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $startItemFirstValue2->setFields(array($startItemField2));

    $startItem2 = new Google_Service_Walletobjects_TemplateItem();
    $startItem2->setFirstValue($startItemFirstValue2);

    $middleItemField2 = new Google_Service_Walletobjects_FieldReference();
    $middleItemField2->setFieldPath("class.textModulesData['myfield5']");

    $middleItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $middleItemFirstValue2->setFields(array($middleItemField2));

    $middleItem2 = new Google_Service_Walletobjects_TemplateItem();
    $middleItem2->setFirstValue($middleItemFirstValue2);

    $endItemField2 = new Google_Service_Walletobjects_FieldReference();
    $endItemField2->setFieldPath("class.textModulesData['myfield6']");

    $endItemFirstValue2 = new Google_Service_Walletobjects_FieldSelector();
    $endItemFirstValue2->setFields(array($endItemField2));

    $endItem2 = new Google_Service_Walletobjects_TemplateItem();
    $endItem2->setFirstValue($endItemFirstValue2);

    $cardRowTemplate2 = new Google_Service_Walletobjects_CardRowThreeItems();
    $cardRowTemplate2->setStartItem($startItem2);
    $cardRowTemplate2->setMiddleItem($middleItem2);
    $cardRowTemplate2->setEndItem($endItem2);

    $cardRowTemplateInfo2 = new Google_Service_Walletobjects_CardRowTemplateInfo();
    $cardRowTemplateInfo2->setThreeItems($cardRowTemplate2);

    $cardTemplateOverride = new Google_Service_Walletobjects_CardTemplateOverride();
    $cardTemplateOverride->setCardRowTemplateInfos(array($cardRowTemplateInfo1,
                  $cardRowTemplateInfo2));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setCardTemplateOverride($cardTemplateOverride);

    $payload->setTextModulesData($textModulesDatas);
    $payload->setClassTemplateInfo($classTemplateInfo);
    

このコードでは、次のコード テンプレート セクション形式でパスが作成されます。

ラベルのオーバーライドの例。

アイテムが空の場合は、表示されません。詳細については、フィールド参照をご覧ください。行内のすべてのアイテムが空の場合、その行は表示されません。行内のすべてのアイテムのうち、空ではないものがある場合、空ではないアイテムが再配置され、アイテムが少ない行として表示されます。

カード テンプレートをオーバーライドしない場合は、デフォルトの行数、デフォルトのアイテム数、デフォルトのフィールド参照が使用されます。詳細については、デフォルト テンプレートをご覧ください。

ヒーロー画像を定義した後、cardRowTemplateInfos リストに複数の行がある場合は、最初の行の後に表示できます。また、1 行しかない場合は、その行の上に表示できます。

カードのバーコード

Android

カード バーコード要素
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.typeobject.barcode.value
    または object.reservationInfo.confirmationCode
  4. object.barcode.alternateText
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

ウェブ

カード バーコード要素
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.typeobject.barcode.value
    または object.reservationInfo.confirmationCode
  4. object.barcode.alternateText
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

カード バーコード セクションは、バーコードの上下にテキストや画像を追加するために使用されます。このセクションには何も入力する必要はありません。

バーコードの上と下に 2 つのフィールドを同時に定義するには、3 つのフィールド セレクタを使用できます。ラベルなしで表示され、テキストベースの構造化データ フィールド、テキスト モジュール フィールド、画像モジュール フィールドのいずれかになります。画像を使用する場合は、ブランドの取り扱いガイドラインを遵守する必要があります。

バーコードは型と値で定義されます。サポートされているバーコード タイプのリストについては、リファレンスをご覧ください。また、バーコードのすぐ下にテキストを表示できます。このテキストを使用すると、バーコードのスキャンなどを簡単に行えるようになります。

次のコードサンプルは、パスのバーコード セクションをオーバーライドして、バーコードの上に画像を表示する方法を示しています。

Python

#... rest of class
    "imageModulesData": [
        {
            "mainImage": {
                "sourceUri": {
                    "uri":  "http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg",
                    "description": "Coffee"
                }
            },
            "Id": "myimage"
        }
    ],
    "classTemplateInfo": {
        "cardBarcodeSectionDetails": {
            "firstTopDetail": {
                "fieldSelector": {
                    "fields": [
                        {
                        "fieldPath": "class.imageModulesData['myimage'].mainImage"
                        }
                    ]
                }
            }
        }
    }
}
    

Java

//... rest of class
  .setImageModulesData((new ArrayList<ImageModuleData>() {
    {
      add((new ImageModuleData())
        .setId("myimage")
        .setMainImage((new Image()).setSourceUri((new ImageUri()).setDescription("Coffee beans")
          .setUri("http://farm4.staticflickr.com/3738/12440799783_3dc3c20606_b.jpg"))));
        }
      }))
      .setClassTemplateInfo((new ClassTemplateInfo())
        .setCardBarcodeSectionDetails((new CardBarcodeSectionDetails())
          .setFirstTopDetail((new BarcodeSectionDetail())
            .setFieldSelector((new FieldSelector())
              .setFields((new ArrayList<FieldReference>(){
                {
                  add((new FieldReference()).setFieldPath("class.imageModulesData['myimage'].mainImage"));
                }
            })))))
      }
    

PHP

//... rest of class
    $imageUri = new Google_Service_Walletobjects_ImageUri();
    $imageUri->setUri("https://farm8.staticflickr.com/7340/11177041185_a61a7f2139_o.jpg");
    $imageUri->setDescription("Baconrista flights image");
    $image = new Google_Service_Walletobjects_Image();
    $image->setSourceUri($imageUri);
    $imageModulesData = new Google_Service_Walletobjects_ImageModuleData();
    $imageModulesData->setMainImage($image);
            $imageModulesData->setId("myimage");

    $cardBarcodeFieldReference = new Google_Service_Walletobjects_FieldReference();
    $cardBarcodeFieldReference->setFieldPath("class.imageModulesData['myimage'].mainImage");

    $cardBarcodeFieldSelector = new Google_Service_Walletobjects_FieldSelector();
    $cardBarcodeFieldSelector->setFields(array($cardBarcodeFieldReference));

    $cardBarcodeDetail = new Google_Service_Walletobjects_BarcodeSectionDetail();
    $cardBarcodeDetail->setFieldSelector($cardBarcodeFieldSelector);

    $cardBarcodeSectionDetails = new Google_Service_Walletobjects_CardBarcodeSectionDetails();
    $cardBarcodeSectionDetails->setFirstTopDetail($cardBarcodeDetail);

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setCardBarcodeSectionDetails($cardBarcodeSectionDetails);

    $payload->setClassTemplateInfo($classTemplateInfo);
            $payload->setImageModuleData($imageModulesData);
    

コードは、次のバーコード セクション形式でパスを作成します。

カードのバーコード オーバーライドの例。

バーコード セクションをオーバーライドしない場合は、デフォルトのバーコード フィールドが使用されます。詳細については、デフォルト テンプレートをご覧ください。

詳細テンプレート

Android

詳細テンプレート セクション
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item

ウェブ

詳細テンプレート セクション
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item

詳細テンプレート セクションは、アイテムのリスト class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[] です。このアイテムには、あらゆる種類の構造化データ フィールド、テキスト モジュール フィールド、リンク モジュール フィールド、画像モジュール フィールド、メッセージを含めることができます。

各アイテムは、単一のフィールド セレクタ(.firstValue)、2 つのフィールド セレクタ(.firstValue.secondValue)、または事前定義アイテム(.predefinedItem)のいずれかとして定義できます。選択したフィールドの値とそれぞれのラベルが表示されます。2 つのフィールド セレクタを定義すると、選択したフィールドの値が「/」で区切られて表示されます。選択したフィールドのラベルについても同様です。事前定義されたアイテムは、より複雑なレンダリングの定義に使用されます。画像モジュール フィールドは、ラベルなしで全幅でレンダリングされます。

次のコードサンプルは、パスの詳細セクションをオーバーライドして、ラベルを持つ単一の linksModuleData フィールドを表示する方法を示しています。

Python

//... rest of class
   "linksModuleData": {
        "uris": [
            {
                "uri": "http://maps.google.com/",
                "description": "Nearby Locations",
                "id":"mylink"
            }
        ]
    },
   "classTemplateInfo": {
        "detailsTemplateOverride": {
            "detailsItemInfos": [
                {
                    "item":{
                        "firstValue": {
                            "fields": [{
                                "fieldPath": "class.linksModuleData.uris['mylink']"
                            }]
                        }
                    }
                }
            ]
        }
     }
//... rest of class
    

Java

 //... rest of class
  .setLinksModuleData((new ArrayList<LinksModuleData>() {
    {
      add((new LinksModuleData()).setDescription("Nearby Locations")
        .setUri("http://maps.google.com/")
        .setId("mylink"));
      }))
      .setClassTemplateInfo((new ClassTemplateInfo())
        .setDetailsTemplateOverride((new DetailsTemplateOverride())
          .setDetailsItemInfos(new ArrayList<DetailsItemInfo>(){
            {
              add((new DetailsItemInfo())
                .setItem((new TemplateItem()).setFirstValue((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
                  {
                    add((new FieldReference()).setFieldPath("class.linksModuleData.uris['mylink']"));
                  }
                }))));
              }
            }))
//... rest of class
    

PHP



    //... rest of class building
    $locationUri = new Google_Service_Walletobjects_Uri();
    $locationUri->setUri("http://maps.google.com/");
    $locationUri->setDescription("Nearby Locations");
    $locationUri->setId("mylink");

    $linksModuleData = new Google_Service_Walletobjects_LinksModuleData();
    $linksModuleData->setUris(array($locationUri));

    $detailItemFieldReference = new Google_Service_Walletobjects_FieldReference();
    $detailItemFieldReference->setFieldPath("class.linksModuleData.uris['mylink']");
    $detailItemFieldSelector = new Google_Service_Walletobjects_FieldSelector();
    $detailItemFieldSelector->setFields(array($detailItemFieldReference));

    $detailItem = new Google_Service_Walletobjects_TemplateItem();
    $detailItem->setFirstValue($detailItemFieldSelector);

    $detailsItemInfo = new Google_Service_Walletobjects_DetailsItemInfo();
    $detailsItemInfo->setItem($detailItem);

    $cardDetailsTemplateOverride = new Google_Service_Walletobjects_DetailsTemplateOverride();
    $cardDetailsTemplateOverride->setDetailsItemInfos(array($detailsItemInfo));

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setDetailsTemplateOverride($cardDetailsTemplateOverride);

    $payload->setClassTemplateInfo($classTemplateInfo);
    $payload->setLinksModuleData($linksModuleData);
    //... rest of class
    

このコードでは、以下の詳細セクション形式でパスが作成されます。

詳細のオーバーライドの例。

アイテムが空の場合は、表示されません。詳細については、フィールド参照をご覧ください。

詳細テンプレートをオーバーライドしない場合は、デフォルトの順序で参照フィールドのデフォルトのリストが表示されます。詳細については、デフォルト テンプレートをご覧ください。

リスト テンプレート

テンプレート要素のリスト
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. class.localScheduledDepartureDateTime
    (日付のみ)(グループ化)
    または class.classTemplateInfo.listTemplateOverride
    .secondRowOption.fields[]
  3. class.flightHeader.carrier.airlineLogo
  4. object.hexBackgroundColor
    または class.hexBackgroundColor
  5. <# パス>(グループ化)

リスト テンプレート セクションは、Google ウォレット アプリの [パス] ビューに表示するフィールドを選択するために使用されます。パスはリスト内で、ロゴ、背景色、3 行で表現されます。

次のコードサンプルは、パスのリスト テンプレートをオーバーライドして、リスト テンプレートの最初の行に単一パスのオブジェクト有効期限フィールドを表示する方法を示しています。

Python


#... rest of class definition
   "classTemplateInfo": {
        "listTemplateOverride":{
            "firstRowOption": {
                "fieldOption":{
                    "fields": [{
                        "fieldPath": "object.validTimeInterval.end"
                    }]
                }
            }
        }
   }
}
    

Java

//... rest of class
  .setClassTemplateInfo((new ClassTemplateInfo())
    .setListTemplateOverride((new ListTemplateOverride())
      .setFirstRowOption((new FirstRowOption())
        .setFieldOption((new FieldSelector()).setFields(new ArrayList<FieldReference>(){
          {
            add((new FieldReference()).setFieldPath("object.validTimeInterval.end"));
          }
        }))))
//... rest of class
    

PHP

    //... rest of class
    $fieldReference = new Google_Service_Walletobjects_FieldReference();
    $fieldReference->setFieldPath("object.validTimeInterval.end");

    $fieldOption = new Google_Service_Walletobjects_FieldSelector();
    $fieldOption->setFields(array($fieldReference));

    $firstRowOption = new Google_Service_Walletobjects_FirstRowOption();
    $firstRowOption->setFieldOption($fieldOption);

    $listTemplateOverride = new Google_Service_Walletobjects_ListTemplateOverride();
    $listTemplateOverride->setFirstRowOption($firstRowOption);

    $classTemplateInfo = new Google_Service_Walletobjects_ClassTemplateInfo();
    $classTemplateInfo->setListTemplateOverride($listTemplateOverride);

    $payload->setClassTemplateInfo($classTemplateInfo);
    //... rest of class
    

コードは、次のリスト テンプレートの表現を使用してパスを作成します。

リストのオーバーライドの例。

3 つの行はフィールド セレクタで定義できます。 フィールドにはラベルが表示されません。グループ化されたパスの場合、2 行目には常にスケジュールされたスケジュールされた出発日が表示され、3 行目にグループ化されたパスの数が表示されます。

フィールド参照

フィールド参照は、class.classTemplateInfo.*.fields[] という形式のテンプレートのさまざまな部分で使用されます。フィールド参照には、構造化データ フィールド、テキスト モジュール フィールド、リンク モジュール フィールド、画像モジュール フィールド、メッセージへのパスのリストが含まれます。

すべてのフィールド参照ですべてのタイプのパスが許可されているわけではありません。たとえば、一部のフィールド参照では、テキストベースの構造化データ フィールドまたはテキスト モジュール フィールドへのパスのみが許可されます。テキストベースの構造化フィールドは、文字列型、ローカライズされた文字列、日付、金額の構造化データ フィールドです。

このリストは、フォールバック ロジックの実装に使用できます。つまり、リストの最初のパスが空のフィールドになると、次のパスが評価されます。フォールバック ロジックは、主にテキストベースの構造化データ フィールドまたはテキスト モジュール フィールドを対象としています。同じリスト内の異なるタイプのフィールドを混在させないでください。フォールバック ロジックは、一部のオブジェクトにのみ存在するフィールドが一貫しており、他のオブジェクトには存在しないことが想定される特定の状況でのみ、慎重に使用してください。ほとんどの場合、ユースケースごとに別々のクラスを作成するほうが簡単です。

フィールド参照リスト内のすべてのパスが空のフィールドに解決される場合、フィールド参照を使用するアイテムは表示されません。フィールド参照を使用するアイテムが常に表示されるようにする場合は、少なくとも 1 つのパスが空でないことを確認してください。一部のフィールドはスペースのみの文字列を使用できる場合でも、null 値を表す特殊文字(「-」など)に設定することをおすすめします。

リストに含まれるフィールドを参照するには、リスト内でのフィールドのインデックスを使用できます。また、ほとんどの場合、参照 ID を使用することもできます。ID で参照できるリストのアイテムには .id フィールドがあります。可能な場合は、リスト内のフィールドのインデックスよりも参照 ID を使用することをおすすめします。

リストに含まれるフィールドを参照する方法の例を次に示します。

  • object.imageModulesData[0].id = my-first-id
  • object.imageModulesData[1].id = my-second-id
  • class.detailsTemplateOverride.detailsItemInfos[0].item.firstValue.fields[0].fieldPath = object.imageModulesData[‘my-second-id’]
  • class.detailsTemplateOverride.detailsItemInfos[1].item.firstValue.fields[0].fieldPath = object.imageModulesData[0]

この場合、パスの詳細セクションの最初の項目は、オブジェクト内で宣言されている 2 番目の画像です。一方、パスの詳細セクションの 2 番目のアイテムは、オブジェクト内で宣言されている最初の画像です。

デフォルト テンプレート

Android

デフォルトのテンプレート要素
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    または class.localizedIssuerName
    または class.issuerName
  3. class.flightHeader.carrier.carrierIataCode
    または class.flightHeader.carrier.carrierIcaoCode)
    および class.flightHeader.flightNumber
  4. 空港の都市(class.origin.airportIataCode)
    または class.origin.airportNameOverride から取得)
  5. class.origin.airportIataCode
  6. 空港の都市(class.destination.airportIataCode)
    または class.destination.airportNameOverride から取得)
  7. class.destination.airportIataCode
  8. 端子
  9. class.origin.terminal
  10. GATE 試験対策
  11. class.origin.gate
  12. CABIN(デフォルト)または CLASS または TIER(
    class.boardingAndSeatingPolicy.SeatClassPolicy に依存)
  13. object.boardingAndSeatingInfo.SeatClass
  14. 搭乗:
    ゲートゲート:
    出発: 出発
  15. class.localBoardingDateTime(時間のみ)
    class.localGateClosingDateTime(時間のみ)
    class.localEstimatedOrActualDepartureDateTime(時間のみ)
    class.localScheduledDepartureDateTime(時間のみ)
  16. 乗客
  17. object.passengerName
  18. ZONE(デフォルト)または GROUP(
    class.boardingAndSeatingPolicy.boardingPolicy に依存)
  19. object.boardingAndSeatingInfo.boardingGroup
  20. セアト
  21. object.boardingAndSeatingInfo.seatNumber
    または object.boardingAndSeatingInfo.seatAssignment
  22. object.securityProgramLogo
  23. object.boardingAndSeatingInfo.boardingPrivilegeImage
  24. object.barcode.typeobject.barcode.value
    または object.reservationInfo.confirmationCode
  25. object.barcode.alternateText
  26. class.flightHeader.carrier.airlineAllianceLogo
  27. object.hexBackgroundColor
    または class.hexBackgroundColor
  28. 位置
  29. object.boardingAndSeatingInfo.boardingPosition
  30. シーケンス
  31. object.boardingAndSeatingInfo.sequenceNumber
  32. 搭乗口
  33. object.boardingAndSeatingInfo.boardingDoor
  34. フライト番号
  35. class.flightHeader.operatingCarrier.carrierIataCode
    または class.flightHeader.operatingCarrier.carrierIcaoCode)
    class.flightHeader.operatingFlightNumber
    class.flightHeader.operatingCarrier.airlineName
  36. 確認番号
  37. object.reservationInfo.confirmationCode
  38. チケット番号
  39. object.reservationInfo.eticketNumber
  40. マイレージ番号
  41. object.reservationInfo
    .frequentFlyerInfo.frequentFlyerNumber
    および object.reservationInfo
    .frequentFlyerInfo.frequentFlyerProgramName
  42. ゲートの閉鎖
  43. class.localGateClosingDateTime
  44. 出発予定時刻
  45. class.localScheduledDepartureDateTime
  46. 推定出発時間
  47. class.localEstimatedOrActualDepartureDateTime
  48. 到着予定時刻
  49. class.localScheduledArrivalDateTime
  50. 到着予定時刻
  51. class.localEstimatedOrActualArrivalDateTime
  52. 到着ターミナル
  53. class.destination.terminal
  54. 到着ゲート
  55. class.destination.gate
  56. class.imageModulesData[0].mainImage
  57. object.imageModulesData[0].mainImage
  58. class.messages[].header
  59. class.messages[].body
  60. object.messages[].header
  61. object.messages[].body
  62. class.textModulesData[0..9].header
  63. class.textModulesData[0..9].body
  64. object.textModulesData[0..9].header
  65. object.textModulesData[0..9].body
  66. class.linksModuleData.uris[].description
  67. object.linksModuleData.uris[].description

ウェブ

デフォルトのテンプレート要素
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    または class.localizedIssuerName
    または class.issuerName
  3. class.flightHeader.carrier.carrierIataCode
    または class.flightHeader.carrier.carrierIcaoCode)
    および class.flightHeader.flightNumber
  4. 空港の都市(class.origin.airportIataCode)
    または class.origin.airportNameOverride から取得)
  5. class.origin.airportIataCode
  6. 空港の都市(class.destination.airportIataCode)
    または class.destination.airportNameOverride から取得)
  7. class.destination.airportIataCode
  8. 端子
  9. class.origin.terminal
  10. GATE 試験対策
  11. class.origin.gate
  12. CABIN(デフォルト)または CLASS または TIER(
    class.boardingAndSeatingPolicy.SeatClassPolicy に依存)
  13. object.boardingAndSeatingInfo.SeatClass
  14. 搭乗:
    ゲートゲート:
    出発: 出発
  15. class.localBoardingDateTime(時間のみ)
    class.localGateClosingDateTime(時間のみ)
    class.localEstimatedOrActualDepartureDateTime(時間のみ)
    class.localScheduledDepartureDateTime(時間のみ)
  16. 乗客
  17. object.passengerName
  18. ZONE(デフォルト)または GROUP(
    class.boardingAndSeatingPolicy.boardingPolicy に依存)
  19. object.boardingAndSeatingInfo.boardingGroup
  20. セアト
  21. object.boardingAndSeatingInfo.seatNumber
    または object.boardingAndSeatingInfo.seatAssignment
  22. object.securityProgramLogo
  23. object.boardingAndSeatingInfo.boardingPrivilegeImage
  24. object.barcode.typeobject.barcode.value
    または object.reservationInfo.confirmationCode
  25. object.barcode.alternateText
  26. class.flightHeader.carrier.airlineAllianceLogo
  27. object.hexBackgroundColor
    または class.hexBackgroundColor
  28. 位置
  29. object.boardingAndSeatingInfo.boardingPosition
  30. シーケンス
  31. object.boardingAndSeatingInfo.sequenceNumber
  32. 搭乗口
  33. object.boardingAndSeatingInfo.boardingDoor
  34. フライト番号
  35. class.flightHeader.operatingCarrier.carrierIataCode
    または class.flightHeader.operatingCarrier.carrierIcaoCode)
    class.flightHeader.operatingFlightNumber
    class.flightHeader.operatingCarrier.airlineName
  36. 確認番号
  37. object.reservationInfo.confirmationCode
  38. チケット番号
  39. object.reservationInfo.eticketNumber
  40. マイレージ番号
  41. object.reservationInfo
    .frequentFlyerInfo.frequentFlyerNumber
    および object.reservationInfo
    .frequentFlyerInfo.frequentFlyerProgramName
  42. ゲートの閉鎖
  43. class.localGateClosingDateTime
  44. 出発予定時刻
  45. class.localScheduledDepartureDateTime
  46. 推定出発時間
  47. class.localEstimatedOrActualDepartureDateTime
  48. 到着予定時刻
  49. class.localScheduledArrivalDateTime
  50. 到着予定時刻
  51. class.localEstimatedOrActualArrivalDateTime
  52. 到着ターミナル
  53. class.destination.terminal
  54. 到着ゲート
  55. class.destination.gate
  56. class.imageModulesData[0].mainImage
  57. object.imageModulesData[0].mainImage
  58. class.messages[].header
  59. class.messages[].body
  60. object.messages[].header
  61. object.messages[].body
  62. class.textModulesData[0..9].header
  63. class.textModulesData[0..9].body
  64. object.textModulesData[0..9].header
  65. object.textModulesData[0..9].body
  66. class.linksModuleData.uris[].description
  67. object.linksModuleData.uris[].description

カード セクションがオーバーライドされ、これらのフィールドがカード セクションに存在しなくなった場合、デフォルトで詳細セクションにも object.boardingAndSeatingInfo.boardingGroupobject.boardingAndSeatingInfo.seatClassobject.boardingAndSeatingInfo.seatNumber が表示されます。

画像モジュール フィールドについては、クラスの 1 つの画像モジュール フィールドとオブジェクトから 1 つの画像モジュール フィールドのみ表示されます。いずれかのレベルで複数の画像モジュール フィールドが必要な場合は、デフォルトのテンプレートをオーバーライドします。

テキスト モジュール フィールドの場合、表示されるテキスト モジュール フィールドはクラス内で最大 10 個、オブジェクトで最大 10 個です。フィールドは、配列で定義されているのと同じ順序で表示されます。いずれかのレベルで 10 を超えるテキスト モジュール フィールドが必要な場合は、デフォルトのテンプレートをオーバーライドします。

メッセージの場合は、クラスから最大 10 件、オブジェクトからで最大 10 件のメッセージのみが表示されます。メッセージの順序は保証されません。いずれかのレベルで 10 個以上のメッセージが必要な場合、またはなんらかの注文の保証が必要な場合は、デフォルト テンプレートをオーバーライドしてください。

リンク モジュール フィールドには、定義できる URI の数に制限はありません。URI は、レベル(クラスまたはオブジェクト)ごとに次の順序でグループ化されます。

  1. 地図の座標
  2. 電話番号
  3. Email addresses
  4. ウェブページ

各グループの URI は、配列で定義されているのと同じ順序で表示されます。 別の順序が必要な場合は、デフォルトのテンプレートをオーバーライドしてください。

デフォルトのリスト テンプレート要素
  1. class.origin.airportIataCode
    および class.destination.airportIataCode
  2. class.localScheduledDepartureDateTime
    (日付のみ)
  3. class.flightHeader.carrier.airlineLogo
  4. object.hexBackgroundColor
    または class.hexBackgroundColor
  5. <# パス>(グループ化)