کارتهای پرواز از پرداز الگو پشتیبانی میکنند. اگر الگویی تعریف نشده باشد، از الگوی پیشفرض استفاده میشود.
تعریف الگو
الگوی مجوز در سطح کلاس تعریف میشود و برای نمایش هر شیء مرتبط با کلاس استفاده میشود. الگو تعیین میکند کدام فیلدها در بخشهای مختلف مجوز نمایش داده شود.
الگو به بخشهای زیر تقسیم شده است:
Android
وب
عنوان کارت
Android
|
عنوان کارت پیشفرض
عنوان کارت نشانواره عریض
|
وب
|
|
عنوان کارت پیشفرض
عنوان کارت نشانواره عریض
|
بخش عنوان کارت، نشانواره، نام شرکت هواپیمایی، و خلاصه پرواز را نمایش میدهد. هر سه این عناصر الزامی هستند و نه ارجاعهای فیلد استفادهشده برای تکمیل آنها و نه موقعیتشان قابلتغییر نیست.
اگر class.origin.airportNameOverride یا
class.destination.airportNameOverride تنظیم نشده باشد، نام شهر فرودگاه
بهطور خودکار با شهر مرتبط با کد IATA در
class.origin.airportIataCode و class.destination.airportIataCode
بهترتیب پر میشود.
وقتی فیلد نشانواره عریض تنظیم شود، در دستگاههای Android، سرصفحه الگوی پیشفرض با نشانواره و نام صادرکننده با نشانواره عریض جایگزین میشود.
هنگام ایجاد نشانواره سرصفحه عریض، دستورالعملهای تصویر نشانواره عریض را دنبال کنید تا تصویرتان بهطور بهینه در مجوزهایتان نمایش داده شود.
الگوی کارت
Android
وب
بخش الگوی کارت برای نمایش ردیفهای اضافی استفاده میشود. این ردیفها میتوانند حاوی فیلدهای داده ساختاریافته مبتنی بر نوشتار یا فیلدهای واحد نوشتاری باشند.
میتوانید تعداد ردیفهایی را که تعداد اشیاء را در فهرست
class.classTemplateInfo.cardTemplateOverride.cardRowTemplateInfos[]
تعریف میکنند مشخص کنید. این فهرست حداقل به یک عنصر نیاز دارد و توصیه میکنیم حداکثر از دو عنصر استفاده کنید. هر عنصر باید یکی از انواع زیر باشد:
-
oneItem، که یک مورد را میپذیرد:item
-
twoItemsکه دو مورد را میپذیرد:startItemendItem
-
threeItemsکه سه مورد را میپذیرد:startItemmiddleItemendItem
هر مورد را میتوان بهعنوان انتخابگر فیلد تکی
(.firstValue)، دو انتخابگر فیلد (.firstValue و
.secondValue)، یا مورد ازپیش تعریفشده
(.predefinedItem) تعریف کرد. هم مقادیر فیلد انتخابشده و هم
برچسبهای مربوطه آنها نمایش داده میشود. وقتی دو انتخابگر فیلد تعریف میکنید،
مقادیر فیلدهای انتخابشده با جداکننده «/» نمایش داده میشود. همین امر برای برچسبهای فیلدهای انتخابشده نیز صدق میکند. از موارد ازپیش تعریفشده برای
تعریف کردن پردازش پیچیدهتر استفاده میشود.
نمونه کد زیر نشان میدهد که چگونه بخشهای ردیف کارت الگوی کارت را لغو کنید تا دو ردیف را مشخص کنید. هر ردیف شامل سه مورد است که هرکدام
به شش فیلد سفارشی textModuleData در سطح کلاس و
سرصفحههای آنها بهعنوان برچسب ارجاع میدهند:
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']" }] } }, } }] } } }
جاوا
// 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 وجود داشته باشد، این نگاره میتواند پساز ردیف اول ظاهر شود، یا اگر فقط یک ردیف وجود داشته باشد،
بالای آن ردیف ظاهر میشود.
رمزینه کارت
Android
|
|
|
وب
|
|
|
از بخش رمزینه کارت برای نمایش نوشتار یا تصاویر اضافی قبل و بعداز رمزینه استفاده میشود. هیچکدام از فیلدهای این بخش الزامی نیست.
سه انتخابگر فیلد وجود دارد که میتوان از آنها برای تعریف دو فیلد کنارهم قبلاز رمزینه و یک فیلد بعداز رمزینه استفاده کرد. این فیلدها بدون برچسب نمایش داده میشوند و میتوانند فیلدهای داده ساختاریافته نوشتارمحور، فیلدهای واحد نوشتار، یا فیلدهای واحد تصویر باشند. اگر از تصویر استفاده میکنید، این تصاویر باید از رهنمودهای نمانام پیروی کنند.
رمزینه با نوع و مقدار تعریف میشود. برای مشاهده فهرست انواع رمزینههای پشتیبانیشده، مرجع را ببینید. علاوهبراین، میتوان نوشتاری را درست زیر رمزینه نشان داد. این نوشتار میتواند اسکن کردن رمزینهها را آسانتر کند، ازجمله کاربردهای دیگر.
نمونه کد زیر نحوه لغو بخش رمزینه مجوز را برای نمایش تصویر بالای رمزینه نشان میدهد:
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" } ] } } } } }
جاوا
//... 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[]. این موارد میتوانند
حاوی هر نوع فیلد داده ساختاریافته، فیلد واحد نوشتاری، فیلد واحد پیوند، فیلد واحد تصویر،
یا پیام باشند.
هر مورد را میتوان بهعنوان انتخابگر فیلد تکی (.firstValue)،
انتخابگر فیلد دوتایی (.firstValue و .secondValue)، یا
مورد ازپیش تعریفشده (.predefinedItem) تعریف کرد. هم مقادیر فیلد انتخابشده و هم
برچسبهای مربوطه آنها نمایش داده میشود. وقتی دو انتخابگر فیلد تعریف میکنید، مقادیر فیلدهای انتخابشده با جداکننده «/» نمایش داده میشود. همین امر برای برچسبهای فیلدهای انتخابشده نیز صدق میکند. از موارد ازپیش تعریفشده برای تعریف کردن پردازش پیچیدهتر استفاده میشود. فیلدهای پیمانه تصویر
بهصورت تمامعرض و بدون برچسب پرداز زده میشوند.
نمونه کد زیر نشان میدهد که چگونه میتوان بخش پایینی مجوز را لغو کرد تا یک فیلد 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
جاوا
//... 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
این کد مجوزی با قالب بخش پایینی زیر ایجاد میکند:
اگر موردی خالی باشد، نمایش داده نمیشود. برای جزئیات بیشتر، مرجعهای فیلد را ببینید.
اگر بخش پایین را لغو نکنید، فهرست پیشفرض فیلدهای مرجع با ترتیب پیشفرض نمایش داده میشود. برای اطلاعات بیشتر، الگوی پیشفرض را ببینید.
الگوی فهرست
|
|
|
از بخش الگوی فهرست برای انتخاب فیلدی که در نمای «مجوزها» در برنامه «کیف پول Google» نمایش داده میشود استفاده میشود. مجوز در فهرست با نشانواره، رنگ پسزمینه، و سه ردیف نشان داده میشود.
نمونه کد زیر نحوه لغو کردن الگوی فهرست مجوز را برای نشان دادن فیلد تاریخ انقضای شیء مجوزهای تکی در ردیف اول الگوی فهرست نشان میدهد:
Python
#... rest of class definition "classTemplateInfo": { "listTemplateOverride":{ "firstRowOption": { "fieldOption":{ "fields": [{ "fieldPath": "object.validTimeInterval.end" }] } } } } }
جاوا
//... 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
این کد مجوزی با تفسیر الگوی فهرست زیر ایجاد میکند:
این سه ردیف را میتوان با گزینشگر فیلد تعریف کرد. فیلدها بدون برچسب نمایش داده میشوند. برای مجوزهای گروهبندیشده، ردیف دوم همیشه تاریخ حرکت زمانبندیشده محلی را نشان میدهد و ردیف سوم همیشه تعداد مجوزهای گروهبندیشده را نشان میدهد.
مرجعهای فیلد
ارجاعهای فیلد در بخشهای مختلف الگو با فرم class.classTemplateInfo.*.fields[] استفاده میشوند. مرجع فیلد حاوی فهرستی از مسیرها به فیلدهای داده ساختاریافته، فیلدهای ماژول نوشتار، فیلدهای ماژول پیوند، فیلدهای ماژول تصویر، یا پیامها است.
همه انواع مسیرها در هر مرجع فیلد مجاز نیستند. برای مثال، برخیاز ارجاعهای فیلد فقط مسیرهای منتهی به فیلدهای داده ساختاریافته مبتنی بر نوشتار یا فیلدهای واحد نوشتار را مجاز میکنند. فیلدهای ساختاریافته مبتنی بر نوشتار فیلدهای داده ساختاریافته از نوع رشته، رشته بومیسازیشده، تاریخ، یا پول هستند.
از این فهرست میتوان برای پیادهسازی منطق بازگشت استفاده کرد. این یعنی اگر اولین مسیر در فهرست به فیلد خالی منتهی شود، مسیر بعدی ارزیابی میشود. منطق بازگشت عمدتاً فیلدهای داده ساختاریافته مبتنی بر نوشتار یا فیلدهای واحد نوشتار را هدف قرار میدهد. انواع مختلف فیلدها را در یک فهرست ترکیب نکنید. از منطق بازگشت با احتیاط و فقط در شرایط خاصی استفاده کنید که انتظار الگوی ثابتی از فیلدها را دارید که در برخی اشیا وجود دارند اما در برخی دیگر وجود ندارند. در بیشتر مواقع، ایجاد کلاسهای جداگانه برای موارد استفاده جداگانه آسانتر است.
اگر همه مسیرها در فهرست مرجع فیلد به فیلدهای خالی منتهی شوند، موردی که از مرجع فیلد استفاده میکند نمایش داده نمیشود. اگر میخواهید موردی که از ارجاع فیلد استفاده میکند همیشه وجود داشته باشد، مطمئن شوید که حداقل یک مسیر خالی نباشد. توصیه میکنیم فیلدی را روی نویسه خاصی مثل «-» تنظیم کنید تا نشاندهنده مقدار تهی باشد، حتی اگر برخی فیلدها رشتههایی را که فقط فاصله دارند مجاز کنند.
برای ارجاع به فیلدی که در فهرست قرار دارد، میتوانید از نمایه فیلد در فهرست استفاده کنید یا در بیشتر موارد میتوانید از شناسه مرجع استفاده کنید. موارد فهرستی که میتوان با شناسه به آنها ارجاع داد
دارای فیلد .id هستند. توصیه میکنیم درصورت دردسترس بودن، از شناسه مرجع بهجای نمایه فیلد در فهرست استفاده کنید.
در اینجا مثالی از نحوه ارجاع به فیلدهای موجود در فهرست آورده شده است.
object.imageModulesData[0].id = my-first-idobject.imageModulesData[1].id = my-second-idclass.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]
در این مورد، اولین مورد در بخش جزئیات مجوز، دومین تصویر اعلامشده در شیء است. درحالیکه، دومین مورد در بخش جزئیات مجوز، اولین تصویر اعلامشده در شیء است.
الگوی پیشفرض
Android
|
|
|
وب
|
|
|
بهطور پیشفرض، بخش پایین همچنین
object.boardingAndSeatingInfo.boardingGroup،
object.boardingAndSeatingInfo.seatClass،
و object.boardingAndSeatingInfo.seatNumber را نشان میدهد اگر بخش کارت
لغو شده باشد و این فیلدها دیگر در بخش کارت وجود نداشته باشند.
برای فیلدهای واحد تصویر، فقط یک فیلد واحد تصویر از کلاس و فقط یک فیلد واحد تصویر از شیء نشان میدهیم. اگر در هریک از سطوح به بیشاز یک فیلد واحد تصویر نیاز دارید، الگوی پیشفرض را لغو کنید.
برای فیلدهای واحد نوشتار، حداکثر ۲۰ فیلد واحد نوشتار از کلاس و ۲۰ فیلد واحد نوشتار از شیء را نشان میدهیم. فیلدها به همان ترتیبی که در آرایه تعریف شدهاند نمایش داده میشوند. اگر به بیشاز ۲۰ فیلد پیمانه نوشتاری در هریک از سطوح نیاز دارید، الگوی پیشفرض را لغو کنید.
برای پیامها، حداکثر ۲۰ پیام از کلاس و ۲۰ پیام از شیء را نشان میدهیم. ترتیب پیامها را تضمین نمیکنیم. اگر در هریک از سطوح به بیش از ۲۰ پیام نیاز دارید، یا برای هر سفارشی تضمین میخواهید، الگوی پیشفرض را لغو کنید.
برای فیلد ماژول پیوندها، محدودیتی برای تعداد شناسه منابع یکسانی که میتوانید تعریف کنید وجود ندارد. شناسههای منبع یکسان بهترتیب زیر برای هر سطح (کلاس یا شیء) گروهبندی و نمایش داده میشوند:
- مختصات نقشه
- شمارههای تلفن
- نشانیهای ایمیل
- صفحه وب
برای هر گروه، URIها به همان ترتیبی که در آرایه تعریف شدهاند نمایش داده میشوند. اگر به ترتیب دیگری نیاز دارید، الگوی پیشفرض را لغو کنید.
|
|
|