Biniş kartı şablonu

Biniş kartları, şablon oluşturmayı destekler. Şablon tanımlanmamışsa varsayılan şablon kullanılır.

Şablon tanımı

Kart şablonu sınıf düzeyinde tanımlanır ve sınıfla ilişkili tüm nesneleri göstermek için kullanılır. Şablon, kartın farklı bölümlerinde hangi alanların gösterileceğini tanımlar.

Şablon aşağıdaki bölümlere ayrılmıştır:

Android

Kart şablonu düzeni bölümlerine ve konumlarına genel bakış

Web

Kart şablonu düzeni bölümlerine ve konumlarına genel bakış

Kart başlığı

Android

Kart başlığı düzen öğeleri ve alan konumları Varsayılan kart başlığı
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    veya class.localizedIssuerName
    ya da class.issuerName
  3. (class.flightHeader.carrier.carrierIataCode
    veya class.flightHeader.carrier.carrierIcaoCode)
    ve class.flightHeader.flightNumber
  4. Havaalanının bulunduğu şehir (class.origin.airportIataCode kaynağından alınır)
    veya class.origin.airportNameOverride
  5. class.origin.airportIataCode
  6. Havaalanının bulunduğu şehir (class.destination.airportIataCode kaynağından alınır)
    veya class.destination.airportNameOverride
  7. class.destination.airportIataCode
  8. object.hexBackgroundColor
    veya class.hexBackgroundColor

Geniş logo kartı başlığı
  1. class.flightHeader.wideAirlineLogo
  2. (class.flightHeader.carrier.carrierIataCode
    veya class.flightHeader.carrier.carrierIcaoCode)
    ve class.flightHeader.flightNumber
  3. Havaalanının bulunduğu şehir (class.origin.airportIataCode kaynağından alınır)
    veya class.origin.airportNameOverride
  4. class.origin.airportIataCode
  5. Havaalanının bulunduğu şehir (class.destination.airportIataCode kaynağından alınır)
    veya class.destination.airportNameOverride
  6. class.destination.airportIataCode
  7. object.hexBackgroundColor
    veya class.hexBackgroundColor

Web

Kart başlığı düzen öğeleri ve alan konumları Varsayılan kart başlığı
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    veya class.localizedIssuerName
    ya da class.issuerName
  3. (class.flightHeader.carrier.carrierIataCode
    veya class.flightHeader.carrier.carrierIcaoCode)
    ve class.flightHeader.flightNumber
  4. Havaalanının bulunduğu şehir (class.origin.airportIataCode kaynağından alınır)
    veya class.origin.airportNameOverride
  5. class.origin.airportIataCode
  6. Havaalanının bulunduğu şehir (class.destination.airportIataCode kaynağından alınır)
    veya class.destination.airportNameOverride
  7. class.destination.airportIataCode
  8. object.hexBackgroundColor
    veya class.hexBackgroundColor

Geniş logo kartı başlığı
  1. class.flightHeader.wideAirlineLogo
  2. (class.flightHeader.carrier.carrierIataCode
    veya class.flightHeader.carrier.carrierIcaoCode)
    ve class.flightHeader.flightNumber
  3. Havaalanının bulunduğu şehir (class.origin.airportIataCode kaynağından alınır)
    veya class.origin.airportNameOverride
  4. class.origin.airportIataCode
  5. Havaalanının bulunduğu şehir (class.destination.airportIataCode kaynağından alınır)
    veya class.destination.airportNameOverride
  6. class.destination.airportIataCode
  7. object.hexBackgroundColor
    veya class.hexBackgroundColor

Kart başlığı bölümünde logo, hava yolu şirketinin adı ve uçuş özeti gösterilir. Bu üç öğenin tümü gereklidir ve bunları doldurmak için kullanılan alan referansları veya konumları değiştirilemez.

class.origin.airportNameOverride veya class.destination.airportNameOverride ayarlanmamışsa havaalanının şehir adı, sırasıyla class.origin.airportIataCode ve class.destination.airportIataCode içindeki IATA koduyla ilişkili şehirle otomatik olarak doldurulur.

Geniş logo alanı ayarlandığında, Android cihazlarda logo ve veren kuruluş adını içeren varsayılan şablon başlığı, geniş logoyla değiştirilir.

Geniş başlık logonuzu oluştururken geniş logo resim yönergelerine uyun. Böylece resminiz kartlarınızda en iyi şekilde gösterilir.

Kart şablonu

Android

Kart şablonu satır düzeni öğeleri ve alan konumları

Web

Kart şablonu satır düzeni öğeleri ve alan konumları

Ekstra satırları görüntülemek için kart şablonu bölümü kullanılır. Bu satırlar, metin tabanlı yapılandırılmış veri alanları veya metin modülü alanları içerebilir.

class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[] listesindeki nesne sayısını tanımlayan satır sayısını belirtebilirsiniz. Listenin en az bir öğe içermesi gerekir. En fazla iki öğe kullanmanızı öneririz. Her öğe aşağıdaki türlerden birinde olmalıdır:

  • Bir öğeyi kabul eden oneItem:
    • item
  • İki öğeyi kabul eden twoItems:
    • startItem
    • endItem
  • Üç öğeyi kabul eden threeItems:
    • startItem
    • middleItem
    • endItem

Her öğe tek bir alan seçici (.firstValue), iki alan seçici (.firstValue ve .secondValue) veya önceden tanımlanmış bir öğe (.predefinedItem) olarak tanımlanabilir. Hem seçilen alanın değerleri hem de ilgili etiketleri gösterilir. İki alan seçici tanımladığınızda, seçilen alanların değerleri "/" ayırıcıyla gösterilir. Aynı durum, seçilen alanların etiketleri için de geçerlidir. Önceden tanımlanmış öğeler, daha karmaşık oluşturma işlemlerini tanımlamak için kullanılır.

Aşağıdaki kod örneğinde, iki satır belirtmek için kart şablonu kart satırı bölümlerinin nasıl geçersiz kılınacağı gösterilmektedir. Her satırda, her biri altı sınıf düzeyinde textModuleData özel alana ve bunların başlıklarına etiket olarak referans veren üç öğe bulunur:

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);
    

Kod, aşağıdaki kod şablonu bölümü biçimine sahip bir kart oluşturur:

Etiket geçersiz kılma örneği.

Boş olan öğeler gösterilmez. Daha ayrıntılı bilgi için Alan Referansları başlıklı makaleyi inceleyin. Bir satırdaki tüm öğeler boşsa satır gösterilmez. Bir satırdaki öğelerin bazıları boşsa ancak tümü boş değilse boş olmayan öğeler yeniden düzenlenir ve daha az öğe içeren bir satır olarak gösterilir.

Kart şablonunu geçersiz kılmıyorsanız varsayılan satır sayısı, varsayılan öğe sayısı ve varsayılan alan referansları kullanılır. Daha fazla bilgi için Varsayılan şablon başlıklı makaleyi inceleyin.

Öne çıkan resim tanımladıktan sonra, cardRowTemplateInfos listesinde birden fazla satır varsa ilk satırdan sonra, yalnızca bir satır varsa satırın üzerinde görünebilir.

Kart barkodu

Android

Kart barkodu düzeni öğeleri ve konumları
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type ve object.barcode.value
    veya object.reservationInfo.confirmationCode
  4. object.barcode.alternateText
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

Web

Kart barkodu düzeni öğeleri ve konumları
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type ve object.barcode.value
    veya object.reservationInfo.confirmationCode
  4. object.barcode.alternateText
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

Kart barkodu bölümü, barkoddan önce ve sonra gelen ek metinleri veya resimleri göstermek için kullanılır. Bu bölümdeki alanların hiçbiri zorunlu değildir.

Barkodun öncesinde ve sonrasında yan yana iki alan tanımlamak için kullanılabilecek üç alan seçici vardır. Etiketsiz olarak gösterilir ve metin tabanlı yapılandırılmış veri alanları, metin modülü alanları veya resim modülü alanları olabilir. Resim kullanıyorsanız bunlar marka kurallarına uygun olmalıdır.

Barkod, bir tür ve bir değerle tanımlanır. Desteklenen barkod türlerinin listesi için Referans başlıklı makaleyi inceleyin. Ayrıca, barkodun hemen altında bir metin gösterilebilir. Bu metin, diğer kullanımların yanı sıra barkod taramayı da kolaylaştırabilir.

Aşağıdaki kod örneğinde, barkodun üzerinde bir resim göstermek için kartın barkod bölümünün nasıl geçersiz kılınacağı gösterilmektedir:

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);
    

Kod, aşağıdaki barkod bölümü biçimine sahip bir kart oluşturur:

Kart barkodu geçersiz kılma örneği.

Barkod bölümünü geçersiz kılmazsanız varsayılan barkod alanları kullanılır. Daha fazla bilgi için Varsayılan şablon başlıklı makaleyi inceleyin.

Alt bölüm

Android

Ayrıntılar şablonunun alt bölümleri ve öğeleri
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item
  • ...

Web

Ayrıntılar şablonunun alt bölümleri ve öğeleri
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item
  • ...

Alt bölüm, öğelerin listesidir class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[]. Öğeler her türlü yapılandırılmış veri alanını, metin modülü alanını, bağlantı modülü alanını, resim modülü alanını veya mesajı içerebilir.

Her öğe tek bir alan seçici (.firstValue), iki alan seçici (.firstValue ve .secondValue) veya önceden tanımlanmış bir öğe (.predefinedItem) olarak tanımlanabilir. Hem seçilen alanın değerleri hem de ilgili etiketleri gösterilir. İki alan seçici tanımladığınızda, seçilen alanların değerleri "/" ayırıcıyla gösterilir. Aynı durum, seçilen alanların etiketleri için de geçerlidir. Önceden tanımlanmış öğeler, daha karmaşık oluşturma işlemlerini tanımlamak için kullanılır. Resim modülü alanları, tam genişlikte ve etiketsiz olarak oluşturulur.

Aşağıdaki kod örneğinde, etiketiyle birlikte tek bir linksModuleData alanı göstermek için kartın alt bölümünün nasıl geçersiz kılınacağı gösterilmektedir:

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
    

Kod, aşağıdaki alt bölüm biçimine sahip bir kart oluşturur:

Alt bölüm örneği
                                                                             geçersiz kılma.

Boş olan öğeler gösterilmez. Daha ayrıntılı bilgi için Alan Referansları başlıklı makaleyi inceleyin.

Alt bölümü geçersiz kılmadığınızda, varsayılan sıradaki varsayılan referans alanları listesi gösterilir. Daha fazla bilgi için Varsayılan şablon başlıklı makaleyi inceleyin.

Liste şablonu

Liste şablonu öğeleri
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. class.localScheduledDepartureDateTime
      (yalnızca tarih) (gruplandırılmış)
    veya class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.flightHeader.carrier.airlineLogo
  4. object.hexBackgroundColor
    veya class.hexBackgroundColor
  5. <# passes> (gruplandırılmış)

Liste şablonu bölümü, Google Cüzdan uygulamasının "Kartlar" görünümünde hangi alanın gösterileceğini seçmek için kullanılır. Kart, listede logo, arka plan rengi ve üç satırla gösterilir.

Aşağıdaki kod örneğinde, liste şablonunun ilk satırında tek bir kartın geçerlilik bitiş tarihi alanını göstermek için kartın liste şablonunun nasıl geçersiz kılınacağı gösterilmektedir:

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
    

Kod, aşağıdaki liste şablonu oluşturma biçimine sahip bir kart oluşturur:

Liste geçersiz kılma örneği.
                                                                           override.

Üç satır, alan seçiciyle tanımlanabilir. Alanlar etiketsiz olarak gösterilir. Gruplandırılmış kartlarda ikinci satırda her zaman yerel planlanmış kalkış tarihi, üçüncü satırda ise her zaman gruplandırılmış kartların sayısı gösterilir.

Alan referansları

Alan referansları, şablonun farklı bölümlerinde class.classTemplateInfo.*.fields[] biçiminde kullanılır. Alan referansı, yapılandırılmış veri alanlarına, metin modülü alanlarına, bağlantı modülü alanlarına, resim modülü alanlarına veya mesajlara giden yolların listesini içerir.

Her alan referansında tüm yol türlerine izin verilmez. Örneğin, bazı alan referansları yalnızca metin tabanlı yapılandırılmış veri alanlarına veya metin modülü alanlarına giden yollara izin verir. Metin tabanlı yapılandırılmış alanlar, dize, yerelleştirilmiş dize, tarih veya para türünde yapılandırılmış veri alanlarıdır.

Liste, yedek mantık uygulamak için kullanılabilir. Bu, listedeki ilk yol boş bir alanla sonuçlanırsa bir sonraki yolun değerlendirileceği anlamına gelir. Yedek mantık, temel olarak metin tabanlı yapılandırılmış veri alanlarını veya metin modülü alanlarını hedefler. Aynı listede farklı türde alanları karıştırmayın. Yedek mantığı dikkatli bir şekilde ve yalnızca belirli durumlarda kullanın. Bu durumlarda, bazı nesnelerde bulunan ancak diğerlerinde bulunmayan alanların tutarlı bir şekilde tekrarlanmasını beklersiniz. Çoğu zaman, ayrı kullanım alanları için ayrı sınıflar oluşturmak daha kolaydır.

Bir alan referans listesindeki tüm yollar boş alanlara çözümlenirse alan referansını kullanan öğe gösterilmez. Alan referansını kullanan öğenin her zaman mevcut olmasını istiyorsanız en az bir yolun boş olmadığından emin olun. Bazı alanlar yalnızca boşluk içeren dizelere izin verse bile, boş değeri temsil etmek için bir alanı "-" gibi özel bir karakterle ayarlamanızı öneririz.

Bir listede bulunan bir alana referans vermek için listedeki alanın dizinini kullanabilir veya çoğu durumda bir referans kimliği kullanabilirsiniz. Kimliğe göre referans verilebilen liste öğelerinde .id alanı bulunur. Mümkün olduğunda listedeki alanın dizini yerine bir referans kimliği kullanmanızı öneririz.

Bir listede yer alan alanlara nasıl referans verileceğine dair bir örneği burada bulabilirsiniz.

  • 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]

Bu durumda, kartın ayrıntılar bölümündeki ilk öğe, nesnede belirtilen ikinci resimdir. Kartın ayrıntılar bölümündeki ikinci öğe ise nesnede belirtilen ilk resimdir.

Varsayılan şablon

Android

Varsayılan kart şablonu düzeni öğeleri ve konumları
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    veya class.localizedIssuerName
    ya da class.issuerName
  3. class.origin.airportIataCode
  4. class.destination.airportIataCode
  5. Havaalanının bulunduğu şehir (class.origin.airportIataCode kaynağından alınır)
    veya class.origin.airportNameOverride
  6. Havaalanının bulunduğu şehir (class.destination.airportIataCode kaynağından alınır)
    veya class.destination.airportNameOverride
  7. (class.flightHeader.carrier.carrierIataCode
    veya class.flightHeader.carrier.carrierIcaoCode)
    ve class.flightHeader.flightNumber
  8. object.securityProgramLogo
  9. object.boardingAndSeatingInfo.boardingPrivilegeImage
  10. object.barcode.type ve object.barcode.value
    veya object.reservationInfo.confirmationCode
  11. object.barcode.alternateText
  12. class.flightHeader.carrier.airlineAllianceLogo
  13. PASSENGER
  14. object.passengerName
  15. ZONE (varsayılan) veya GROUP (
    class.boardingAndSeatingPolicy.boardingPolicy) ve
  16. SEAT
  17. object.boardingAndSeatingInfo.boardingGroup ve
  18. object.boardingAndSeatingInfo.seatNumber
    veya object.boardingAndSeatingInfo.seatAssignment
  19. TERMINAL
  20. GATE
  21. class.origin.terminal
  22. class.origin.gate
  23. BOARDING
  24. class.localBoardingDateTime
  25. CABIN (varsayılan) veya CLASS veya TIER (
    class.boardingAndSeatingPolicy.SeatClassPolicy)
  26. object.boardingAndSeatingInfo.SeatClass
  27. DEPARTURE
  28. class.localScheduledDepartureDateTime
  29. object.hexBackgroundColor
    veya class.hexBackgroundColor
  30. object.heroImage
    veya class.heroImage
  31. ONAY NUMARASI
  32. object.reservationInfo.confirmationCode
  33. UÇAN YOLCU NUMARASI
  34. object.reservationInfo.frequentFlyerInfo.frequentFlyerNumber
    ve object.reservationInfo.frequentFlyerInfo.frequentFlyerProgramName
  35. PLANLANAN VARIŞ SAATİ
  36. class.localScheduledArrivalDateTime
  37. class.messages[].header
  38. class.messages[].body
  39. object.messages[].header
  40. object.messages[].body
  41. class.textModulesData[0..9].header
  42. class.textModulesData[0..9].body
  43. object.textModulesData[0..9].header
  44. object.textModulesData[0..9].body
  45. class.linksModuleData.uris[].description
  46. object.linksModuleData.uris[].description

Web

Varsayılan kart şablonu düzeni öğeleri ve konumları
  1. class.flightHeader.carrier.airlineLogo
  2. class.flightHeader.carrier.airlineName
    veya class.localizedIssuerName
    ya da class.issuerName
  3. class.origin.airportIataCode
  4. class.destination.airportIataCode
  5. Havaalanının bulunduğu şehir (class.origin.airportIataCode kaynağından alınır)
    veya class.origin.airportNameOverride
  6. Havaalanının bulunduğu şehir (class.destination.airportIataCode kaynağından alınır)
    veya class.destination.airportNameOverride
  7. (class.flightHeader.carrier.carrierIataCode
    veya class.flightHeader.carrier.carrierIcaoCode)
    ve class.flightHeader.flightNumber
  8. object.securityProgramLogo
  9. object.boardingAndSeatingInfo.boardingPrivilegeImage
  10. object.barcode.type ve object.barcode.value
    veya object.reservationInfo.confirmationCode
  11. object.barcode.alternateText
  12. class.flightHeader.carrier.airlineAllianceLogo
  13. PASSENGER
  14. object.passengerName
  15. ZONE (varsayılan) veya GROUP (
    class.boardingAndSeatingPolicy.boardingPolicy) ve
  16. SEAT
  17. object.boardingAndSeatingInfo.boardingGroup ve
  18. object.boardingAndSeatingInfo.seatNumber
    veya object.boardingAndSeatingInfo.seatAssignment
  19. TERMINAL
  20. GATE
  21. class.origin.terminal
  22. class.origin.gate
  23. BOARDING
  24. class.localBoardingDateTime
  25. CABIN (varsayılan) veya CLASS veya TIER (
    class.boardingAndSeatingPolicy.SeatClassPolicy)
  26. object.boardingAndSeatingInfo.SeatClass
  27. DEPARTURE
  28. class.localScheduledDepartureDateTime
  29. object.hexBackgroundColor
    veya class.hexBackgroundColor
  30. object.heroImage
    veya class.heroImage
  31. ONAY NUMARASI
  32. object.reservationInfo.confirmationCode
  33. UÇAN YOLCU NUMARASI
  34. object.reservationInfo.frequentFlyerInfo.frequentFlyerNumber
    ve object.reservationInfo.frequentFlyerInfo.frequentFlyerProgramName
  35. PLANLANAN VARIŞ SAATİ
  36. class.localScheduledArrivalDateTime
  37. class.messages[].header
  38. class.messages[].body
  39. object.messages[].header
  40. object.messages[].body
  41. class.textModulesData[0..9].header
  42. class.textModulesData[0..9].body
  43. object.textModulesData[0..9].header
  44. object.textModulesData[0..9].body
  45. class.linksModuleData.uris[].description
  46. object.linksModuleData.uris[].description

Varsayılan olarak, kart bölümü geçersiz kılınırsa ve bu alanlar artık kart bölümünde yer almazsa alt bölümde object.boardingAndSeatingInfo.boardingGroup, object.boardingAndSeatingInfo.seatClass ve object.boardingAndSeatingInfo.seatNumber de gösterilir.

Resim modülü alanları için sınıftan yalnızca bir resim modülü alanı, nesneden ise yalnızca bir resim modülü alanı gösteririz. Herhangi bir seviyede birden fazla resim modülü alanına ihtiyacınız varsa varsayılan şablonu geçersiz kılın.

Metin modülü alanları için sınıftan en fazla 20 metin modülü alanı ve nesneden 20 metin modülü alanı gösterilir. Alanlar, dizide tanımlandıkları sırayla gösterilir. Herhangi bir düzeyde 20'den fazla metin modülü alanına ihtiyacınız varsa varsayılan şablonu geçersiz kılın.

İletiler için yalnızca sınıftan en fazla 20 ileti ve nesneden en fazla 20 ileti gösterilir. İletilerin sırası garanti edilmez. Herhangi bir düzeyde 20'den fazla mesaj göndermeniz veya siparişler için garanti vermeniz gerekiyorsa varsayılan şablonu geçersiz kılın.

Bağlantılar modülü alanı için tanımlayabileceğiniz URI sayısında bir sınır yoktur. URI'ler, her düzey (sınıf veya nesne) için aşağıdaki sırayla gruplandırılmış olarak gösterilir:

  1. Harita koordinatları
  2. Telefon numaraları
  3. E-posta adresleri
  4. Web sayfaları

Her grup için URI'ler, dizide tanımlandıkları sırayla gösterilir. Farklı bir sıralama istiyorsanız varsayılan şablonu geçersiz kılın.

Varsayılan liste şablonu düzeni öğeleri ve konumları
  1. class.origin.airportIataCode
    ve class.destination.airportIataCode
  2. class.localScheduledDepartureDateTime
    (yalnızca tarih)
  3. class.flightHeader.carrier.airlineLogo
  4. object.hexBackgroundColor
    veya class.hexBackgroundColor
  5. <# passes> (gruplandırılmış)