Treuepunktevorlage

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Verwenden Sie das folgende Tool, um Ihre Kundenkarte zu personalisieren, und verweisen Sie auf die folgenden Code-Snippets.

Bei Treuepunkte wird das Rendern von Vorlagen unterstützt. Wenn keine Vorlage definiert ist, wird die Standardvorlage verwendet.

Vorlagendefinition

Eine Vorlagenvorlage wird auf Klassenebene definiert und zum Anzeigen von Objekten verwendet, die mit der Klasse verknüpft sind. Die Vorlage definiert, welche Felder in verschiedenen Abschnitten des Passes angezeigt werden.

Die Vorlage ist in folgende Abschnitte unterteilt:

Android

Vorlagenübersicht

Web

Vorlagenübersicht

Titel der Karte

Android

Elemente für den Kartentitel
  1. class.programLogo
  2. class.localizedIssuerName
    oder class.issuerName
  3. class.localizedProgramName
    oder class.programName
  4. class.hexBackgroundColor

Web

Elemente für den Kartentitel
  1. class.programLogo
  2. class.localizedIssuerName
    oder class.issuerName
  3. class.localizedProgramName
    oder class.programName
  4. class.hexBackgroundColor

Im Bereich mit dem Kartentitel werden das Logo, der Name des Ausstellers und der Programmtitel angezeigt. Weder die Feldreferenzen, mit denen sie ausgefüllt werden, noch ihre Position können geändert werden.

Kartenvorlage

Android

Vorlagenübersicht

Web

Vorlagenübersicht

Im Bereich „Kartenvorlage“ werden zusätzliche Zeilen angezeigt. Diese Zeilen können textbasierte strukturierte Datenfelder oder Textmodulfelder enthalten.

Sie können die Anzahl der Zeilen angeben, die die Anzahl der Objekte in der class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[]-Liste definieren. Die Liste erfordert mindestens ein Element und wir haben empfohlen, höchstens zwei Elemente zu verwenden. Jedes Element muss einen der folgenden Typen haben:

  • oneItem, die einen Artikel annimmt:
    • item
  • twoItems, die zwei Elemente akzeptiert:
    • startItem
    • endItem
  • threeItems, die drei Elemente akzeptiert:
    • startItem
    • middleItem
    • endItem

Jedes Element kann entweder als einzelner Feldselektor (.firstValue), als zwei Feldselektoren (.firstValue und .secondValue) oder als vordefiniertes Element (.predefinedItem) definiert werden. Es werden sowohl die Werte des ausgewählten Felds als auch ihre jeweiligen Labels angezeigt. Wenn Sie zwei Feldauswahlen definieren, werden die Werte der ausgewählten Felder mit einem Trennzeichen „/“ angezeigt. Dasselbe gilt für die Labels der ausgewählten Felder. Vordefinierte Elemente werden verwendet, um ein komplexeres Rendering zu definieren.

Das folgende Codebeispiel zeigt, wie Sie die Zeilenbereiche der Kartenvorlage überschreiben und so zwei Zeilen angeben. Jede Zeile enthält drei Elemente, die jeweils auf sechs benutzerdefinierte textModuleData-Felder auf Klassenebene und ihre Header als Labels verweisen:

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

Mit dem Code wird eine Karte mit folgendem Format für Codevorlagen erstellt:

Beispiel für eine Labelüberschreibung.

Leere Elemente werden nicht angezeigt. Weitere Informationen finden Sie unter Feldverweise. Wenn alle Elemente in einer Zeile leer sind, wird die Zeile nicht angezeigt. Wenn einige, aber nicht alle Elemente in einer Zeile leer sind, werden die nicht leeren Elemente neu angeordnet und als Zeile mit weniger Elementen angezeigt.

Wenn Sie die Kartenvorlage nicht überschreiben, werden die Standardanzahl von Zeilen, die Standardanzahl von Elementen und die Standardfeldreferenzen verwendet. Weitere Informationen finden Sie unter Standardvorlage.

Nachdem Sie ein Hero-Image definiert haben, kann es nach der ersten Zeile erscheinen, wenn die Liste cardRowTemplateInfos mehrere Zeilen hat, oder über der Zeile, wenn es nur eine Zeile gibt.

Barcode der Karte

Android

Barcode-Elemente für die Karte
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type und object.barcode.value
    oder object.accountId
  4. object.barcode.alternateText
    oder object.accountId
    oder object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail
  6. object.heroImage
    oder class.heroImage

Web

Barcode-Elemente für die Karte
  1. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstTopDetail
  2. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .secondTopDetail
  3. object.barcode.type und object.barcode.value
    oder object.accountId
  4. object.barcode.alternateText
    oder object.accountId
    oder object.barcode.value
  5. class.classTemplateInfo
      .cardBarcodeSectionDetails
      .firstBottomDetail

Im Bereich „Karten-Barcode“ werden über oder unter dem Barcode zusätzlicher Text oder Bilder angezeigt. Keines der Felder in diesem Abschnitt ist erforderlich.

Es gibt drei Feldselektoren, mit denen zwei nebeneinander angeordnete Felder und eines unter dem Barcode definiert werden können. Sie werden ohne Label angezeigt und können entweder textbasierte strukturierte Datenfelder, Textmodulfelder oder Bildmodulfelder sein. Wenn Sie Bilder verwenden, müssen diese den Markenrichtlinien entsprechen.

Der Barcode wird durch einen Typ und einen Wert definiert. Eine Liste der unterstützten Barcodetypen finden Sie unter Referenz. Außerdem kann direkt unter dem Barcode ein Text eingeblendet werden. Dieser Text kann unter anderem das Scannen von Barcodes vereinfachen.

Das folgende Codebeispiel zeigt, wie Sie den Barcodeabschnitt eines Passes überschreiben, damit über dem Barcode ein Bild angezeigt wird:

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

Mit dem Code wird eine Karte mit folgendem Format für den Barcode erstellt:

Beispiel für das Überschreiben einer Kartenbarcode.

Wenn Sie den Barcodebereich nicht überschreiben, werden die Standardfelder für Barcodes verwendet. Weitere Informationen finden Sie unter Standardvorlage.

Detailvorlage

Android

Vorlage in den Details
  • 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

Vorlage in den Details
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[0].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[1].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[2].item
  • class.classTemplateInfo.detailsTemplateOverride
      .detailsItemInfos[3].item
  • ...

Der Abschnitt mit der Vorlagenvorlage „Details“ enthält eine Liste der Elemente class.classTemplateInfo.detailsTemplateOverride.detailsItemInfos[]. Die Elemente können beliebige Arten von strukturierten Datenfeldern, Textmodulfeldern, Linkmodulfeldern, Bildmodulfeldern oder Nachrichten enthalten.

Jedes Element kann entweder als einzelner Feldselektor (.firstValue), als zwei Feldselektoren (.firstValue und .secondValue) oder als vordefiniertes Element (.predefinedItem) definiert werden. Es werden sowohl die Werte des ausgewählten Felds als auch ihre jeweiligen Labels angezeigt. Wenn Sie zwei Feldauswahlen definieren, werden die Werte der ausgewählten Felder mit einem Trennzeichen „/“ angezeigt. Dasselbe gilt für die Labels der ausgewählten Felder. Vordefinierte Elemente werden verwendet, um ein komplexeres Rendering zu definieren. Bildmodul-Felder werden in voller Breite ohne Label gerendert.

Im folgenden Codebeispiel wird gezeigt, wie der Detailabschnitt des Passes überschrieben wird, um ein einzelnes linksModuleData-Feld mit seinem Label anzuzeigen:

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
    

Mit dem Code wird eine Karte mit folgendem Format für den Detailbereich erstellt:

Beispiel für eine Detailsüberschreibung.

Leere Elemente werden nicht angezeigt. Weitere Informationen finden Sie unter Feldverweise.

Wenn Sie die Detailvorlage nicht überschreiben, wird die Standardliste der Referenzfelder in der Standardreihenfolge angezeigt. Weitere Informationen finden Sie unter Standardvorlage.

Listenvorlage

Vorlagenelemente auflisten
  1. class.classTemplateInfo.listTemplateOverride
      .firstRowOption.fieldOption.fields[]
  2. class.classTemplateInfo.listTemplateOverride
      .secondRowOption.fields[]
  3. class.programLogo
  4. class.hexBackgroundColor

Im Abschnitt zur Listenvorlage wählen Sie aus, welches Feld in der Ansicht „Karten/Tickets“ der Google Wallet App angezeigt werden soll. Der Pass wird in der Liste mit Logo, Hintergrundfarbe und drei Zeilen dargestellt.

Das folgende Codebeispiel zeigt, wie Sie die Listenvorlage eines Passes überschreiben, um das Feld zum Ablaufdatum für einen einzelnen Pass in der ersten Zeile der Listenvorlage anzuzeigen:

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
    

Der Code erstellt einen Pass mit der folgenden Listenvorlage:

Beispiel für eine Listenüberschreibung.

Die drei Zeilen können mit einer Feldauswahl definiert werden. Die Felder werden ohne Label angezeigt.

Labels

Alle strukturierten Datenfelder sind mit einem Label von Google versehen. Google ist dafür verantwortlich, für jedes dieser Labels eine Übersetzung in allen unterstützten Sprachen bereitzustellen.

Einige dieser Labels können mithilfe eines der class.custom<name_of_the_field>Label-Felder angepasst werden. Wenn Sie ein Label anpassen, sind Sie für die Übersetzung dieses bestimmten Labels in allen Sprachen verantwortlich, die Sie unterstützen möchten.

Feldreferenzen

Feldverweise werden in verschiedenen Teilen der Vorlage mit dem Format class.classTemplateInfo.*.fields[] verwendet. Eine Feldreferenz enthält eine Liste der Pfade zu Feldern für strukturierte Daten, Textmodule, Linkmodul-Felder, Bildmodulfelder oder Nachrichten.

Nicht alle Pfadtypen sind in jedem Feldverweis zulässig. Beispielsweise sind in einigen Feldverweisen nur Pfade zu textbasierten strukturierten Datenfeldern oder Textmodulfeldern zulässig. Textbasierte strukturierte Felder sind strukturierte Datenfelder vom Typ String, lokalisierter String, Datum oder Geld.

Mit der Liste kann eine Fallback-Logik implementiert werden. Wenn der erste Pfad in der Liste in ein leeres Feld aufgelöst wird, wird der nächste Pfad ausgewertet. Die Fallback-Logik richtet sich hauptsächlich an textbasierte strukturierte Datenfelder oder Textmodulfelder. Mischen Sie nicht verschiedene Arten von Feldern in derselben Liste. Verwenden Sie die Fallback-Logik mit Vorsicht und nur in bestimmten Situationen, wenn Sie ein konsistentes Muster von Feldern erwarten, das in einigen Objekten vorhanden ist, in anderen aber nicht. In den meisten Fällen ist es einfacher, separate Klassen für separate Anwendungsfälle zu erstellen.

Wenn alle Pfade in einer Feldreferenzliste in leere Felder aufgelöst werden, wird das Element, das die Feldreferenz verwendet, nicht angezeigt. Wenn das Element, das den Feldverweis verwendet, immer vorhanden sein muss, achten Sie darauf, dass mindestens ein Pfad leer ist. Es empfiehlt sich, ein Feld auf ein Sonderzeichen wie „-“ festzulegen, um einen Nullwert darzustellen, auch wenn einige Felder Strings mit einem Leerzeichen zulassen.

Um auf ein Feld in einer Liste zu verweisen, können Sie den Index des Felds in der Liste oder in den meisten Fällen eine Referenz-ID verwenden. Elemente einer Liste, auf die mit der ID verwiesen werden kann, haben das Feld .id. Wir empfehlen, eine Referenz-ID über dem Index des Feldes in der Liste zu verwenden, sofern verfügbar.

Hier ein Beispiel für den Verweis auf Felder in einer Liste.

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

In diesem Fall ist das erste Element im Detailbereich des Passes das zweite im Objekt deklarierte Bild. Das zweite Element im Detail des Passes ist das erste im Objekt deklarierte Bild.

Standardvorlage

Android

Standardvorlagenelemente
  1. class.programLogo
  2. class.localizedIssuerName
    oder class.issuerName
  3. class.localizedProgramName
    oder class.programName
  4. PUNKTE
    oder object.loyaltyPoints.localizedLabel
    oder object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. BELOHNEN
    oder object.secondaryLoyaltyPoints.localizedLabel
    oder object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type und object.barcode.value
    oder object.accountId
  9. object.barcode.alternateText
    oder object.accountId
    oder object.barcode.value
  10. object.heroImage
    oder class.heroImage
  11. class.hexBackgroundColor
  12. MITGLIEDERNAME
    oder class.localizedAccountNameLabel
    oder class.accountNameLabel
  13. object.accountName
  14. Mitglieds-ID
    oder class.localizedAccountIdLabel
    oder class.accountIdLabel
  15. object.accountId
  16. PRÄMIE TIER
    oder class.localizedRewardsTierLabel
    oder class.rewardsTierLabel
  17. class.localizedRewardsTier
    oder class.rewardsTier
  18. SEKUNDÄRE PRÄMIE
    oder class.localizedSecondaryRewardsTierLabel
    oder class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    oder class.secondaryRewardsTier
  20. class.imageModulesData[0].mainImage
  21. object.imageModulesData[0].mainImage
  22. class.messages[].header
  23. class.messages[].body
  24. object.messages[].header
  25. object.messages[].body
  26. class.textModulesData[0..9].header
  27. class.textModulesData[0..9].body
  28. object.textModulesData[0..9].header
  29. object.textModulesData[0..9].body
  30. class.linksModuleData.uris[].description
  31. object.linksModuleData.uris[].description
  32. class.homepageUri

Web

Standardvorlagenelemente
  1. class.programLogo
  2. class.localizedIssuerName
    oder class.issuerName
  3. class.localizedProgramName
    oder class.programName
  4. PUNKTE
    oder object.loyaltyPoints.localizedLabel
    oder object.loyaltyPoints.label
  5. object.loyaltyPoints.balance
  6. BELOHNEN
    oder object.secondaryLoyaltyPoints.localizedLabel
    oder object.secondaryLoyaltyPoints.label
  7. object.secondaryLoyaltyPoints.balance
  8. object.barcode.type und object.barcode.value
    oder object.accountId
  9. object.barcode.alternateText
    oder object.accountId
    oder object.barcode.value
  10. object.heroImage
    oder class.heroImage
  11. class.hexBackgroundColor
  12. MITGLIEDERNAME
    oder class.localizedAccountNameLabel
    oder class.accountNameLabel
  13. object.accountName
  14. Mitglieds-ID
    oder class.localizedAccountIdLabel
    oder class.accountIdLabel
  15. object.accountId
  16. PRÄMIE TIER
    oder class.localizedRewardsTierLabel
    oder class.rewardsTierLabel
  17. class.localizedRewardsTier
    oder class.rewardsTier
  18. SEKUNDÄRE PRÄMIE
    oder class.localizedSecondaryRewardsTierLabel
    oder class.secondaryRewardsTierLabel
  19. class.localizedSecondaryRewardsTier
    oder class.secondaryRewardsTier
  20. class.imageModulesData[0].mainImage
  21. object.imageModulesData[0].mainImage
  22. class.messages[].header
  23. class.messages[].body
  24. object.messages[].header
  25. object.messages[].body
  26. class.textModulesData[0..9].header
  27. class.textModulesData[0..9].body
  28. object.textModulesData[0..9].header
  29. object.textModulesData[0..9].body
  30. class.linksModuleData.uris[].description
  31. object.linksModuleData.uris[].description
  32. class.homepageUri

Für Bildmodulfelder wird nur ein Bildmodulfeld aus der Klasse und ein und nur ein Bildmodulfeld aus dem Objekt angezeigt. Wenn Sie auf jeder Ebene mehr als ein Bildmodulfeld benötigen, überschreiben Sie die Standardvorlage.

Für Textmodulfelder werden maximal zehn Textmodulfelder aus der Klasse und zehn Textmodulfelder vom Objekt angezeigt. Die Felder werden in der Reihenfolge angezeigt, in der sie im Array definiert sind. Wenn Sie auf jeder Ebene mehr als 10 Textmodulfelder benötigen, überschreiben Sie die Standardvorlage.

Für Nachrichten werden maximal zehn Nachrichten aus der Klasse und zehn Nachrichten aus dem Objekt angezeigt. Wir können die Reihenfolge der Nachrichten nicht garantieren. Wenn Sie mehr als 10 Nachrichten auf einer Ebene oder eine Garantie für Aufträge benötigen, überschreiben Sie die Standardvorlage.

Im Feld „Linkmodul“ gibt es keine Beschränkung für die Anzahl der URIs, die Sie festlegen können. URIs werden für jede Ebene (Klasse oder Objekt) in der folgenden Reihenfolge gruppiert angezeigt:

  1. Kartenkoordinaten
  2. Telefonnummern
  3. E-Mail-Adressen
  4. Webseiten,

Für jede Gruppe werden URIs in der Reihenfolge angezeigt, in der sie im Array definiert sind. Wenn Sie eine andere Reihenfolge benötigen, überschreiben Sie die Standardvorlage.

Standardelemente der Listenvorlage
  1. class.localizedIssuerName
    oder class.issuerName
  2. class.localizedProgramName
    oder class.programName
  3. class.programLogo
  4. class.hexBackgroundColor