سفارشی‌سازی کردن مجوزهای «کیف پول Google»

«کیف پول Google» ابزارهای قدرتمندی برای سفارشی‌سازی ظاهر و چیدمان هر مجوزی ارائه می‌دهد، از «بلیت رویداد» و «کارت پرواز» گرفته تا «کارت وفاداری» و «کارت هدیه». این راهنما نمای کلی جامعی از نحوه سفارشی‌سازی تجربه کاربری با تعریف ساختار کارت و نمایش اطلاعات پویا و مختص کاربر ارائه می‌دهد.

قبل‌از شروع، حتماً با سند مرجع میانای برنامه‌سازی کاربردی REST خاص نوع مجوزتان مشورت کنید تا فهرست کامل فیلدهای دردسترس را ببینید.

بنیاد: cardTemplateOverride

ابزار اصلی برای سفارشی‌سازی چیدمان کارت، شیء classTemplateInfo.cardTemplateOverride است که آن را در منبع Class کارت (برای مثال، EventTicketClass، LoyaltyClass) تعریف می‌کنید. این شیء به شما امکان می‌دهد با تعریف کردن ردیف‌ها و موارد درون آن‌ها، به کارت ساختار دهید و نحوه ارائه اطلاعات را کنترل کنید.

می‌توانید به داده‌های منبع Class (برای اطلاعات هم‌رسانی‌شده بین همه کاربران) و منبع Object (برای جزئیات مختص کاربر) ارجاع دهید.

۱. سفارشی‌سازی با فیلدهای ازپیش تعریف‌شده «کیف پول»

فیلدهای ازپیش تعریف‌شده ویژگی‌های استانداردی هستند که در Google Wallet API برای نوع خاصی از مجوز دردسترس‌اند. این فیلدها نام‌های خاصی دارند و «کیف پول» آن‌ها را به‌صورت یکسان ارائه می‌کند. نمونه‌ها شامل رمزینه، نام رویداد، شماره پرواز، یا تراز کارت هدیه است.

با ارجاع به fieldPath این فیلدهای ازپیش تعریف‌شده، می‌توانید آن‌ها را در هرجایی از مجوزتان قرار دهید.

مثال: نمایش بارکد و جزئیات خاص مجوز

این نمونه مجوز دارای یک «ردیف بالا» و ۳ فیلد داده در ردیف دوم است. مورد اول مقادیر خاص کاربر را از Object نمایش می‌دهد، مانند امتیازها یا شماره صندلی مختص کاربر. مورد دوم جزئیات Class را نمایش می‌دهد، مانند نام رویداد یا سطح برنامه وفاداری، و مورد سوم دوباره مقادیر خاص کاربر را از Object نمایش می‌دهد، مانند امتیاز ثانویه یا بخش / شماره مربی.

فیلدهای ازپیش تعریف‌شده

تعریف کلاس:

...
"classTemplateInfo": {
      "cardTemplateOverride": {
        "cardRowTemplateInfos": [
          {
            "twoItems": {
              "startItem": {
                "firstValue": {
                  "fields": [
                    {
                    "fieldPath": "object.accountName",
                    }
                  ]
                }
              },
              "endItem": {
                "firstValue": {
                  "fields": [
                    {
                      "fieldPath": "object.secondaryLoyaltyPoints.label"
                    },
                    {
                      "fieldPath": "object.secondaryLoyaltyPoints.balance"
                    }
                  ]
                }
              }
            }
          },
          {
            "twoItems": {
              "startItem": {
                "firstValue": {
                  "fields": [
                    {
                      "fieldPath": "object.loyaltyPoints.label"
                    },
                    {
                      "fieldPath": "object.loyaltyPoints.balance"
                    }
                  ]
                }
              },
              "endItem": {
                "firstValue": {
                  "fields": [
                    {
                      "fieldPath": "class.rewardsTierLabel"
                    },
                    {
                      "fieldPath": "class.rewardsTier"
                    }
                  ]
                }
              }
            }
          },
        ]
      }
    }
...
"rewardsTier": "Gold",
"rewardsTierLabel": "Tier",
...

تعریف شیء

...
"accountName": "Camille Walsh",
"loyaltyPoints": {
    "balance": {
        "string": "1500"
    },
    "label": "Points"
},
"secondaryLoyaltyPoints" : {
    "balance": {
        "money": {
            "micros" : "35050000",
            "currencyCode": "USD",
        }
    },
    "label": "Balance"
}
...

قالب‌بندی فیلدهای تاریخ و زمان

برای هر فیلد تاریخ یا زمان در مجوزهای پشتیبانی‌شده، می‌توانید بااستفاده از ویژگی dateFormat قالب سفارشی مشخص کنید. این ویژگی به شما امکان می‌دهد نحوه نمایش تاریخ را در مجوز کنترل کنید، مثلاً فقط زمان، تاریخ و زمان کامل، یا فقط تاریخ را نشان دهید. اگر dateFormat مشخص نشده باشد، از قالب پیش‌فرض استفاده خواهد شد.

"fields": [
  {
    "fieldPath": "object.validTimeInterval.start.date",
    "dateFormat": "DATE_ONLY"
  }
]

برای فهرست کامل قالب‌های دردسترس، DateFormat اسناد را ببینید.

۲. سفارشی‌سازی با فیلدهای تعریف‌شده توسط توسعه‌دهنده

برای انعطاف‌پذیری نهایی، «کیف پول Google» به شما امکان می‌دهد فیلدهای داده سفارشی خودتان را بااستفاده از textModulesData ایجاد کنید. این گزینه برای نمایش اطلاعات منحصربه‌فردی که در فیلدهای ازپیش تعریف‌شده جا نمی‌شوند، مانند یادداشت‌های کوتاه سفارشی، مزایای عضویت، یا جزئیات خاص مکان، عالی است.

شما یک مورد textModulesData را با یک id منحصربه‌فرد در Object یا Class تعریف می‌کنید و سپس به آن id در cardTemplateOverride ارجاع می‌دهید.

ردیف‌های کارت ساختار

می‌توانید مجوزی با یک، دو، یا سه مورد داده در هر مجوز طراحی کنید که به شما امکان می‌دهد اطلاعات را به‌طور منطقی سازمان‌دهی کنید. محدودیت سختی برای تعداد ردیف‌هایی که می‌توانید اضافه کنید وجود ندارد، اما برای تجربه کاربری تمیز، درنظر بگیرید که چه چیزی برای نمایش در روی کارت مهم‌تر است.

  • روال مطلوب: برای اطلاعات تکمیلی، از بخش پایین مجوز یا دیگر ویژگی‌های «کیف پول» مثل messages، linksModuleData، یا linkedOfferIds استفاده کنید. این کار باعث می‌شود نمای اصلی مجوز مرتب بماند.

مثال: ردیف سه‌موردی با داده‌های سفارشی

ردیفی برای نمایش جزئیات سفارشی ایجاد کنید. برای کارت وفاداری، این اطلاعات می‌تواند شامل امتیاز، سطح، و تراز باشد. برای بلیت رویداد، این برچسب‌ها می‌تواند «بخش»، «ردیف»، و «صندلی» باشد.

فیلدهای سفارشی و ازپیش تعریف‌شده

تعریف کلاس: cardTemplateOverride به سه شناسه یکتا ارجاع می‌دهد: detail1، detail2، و detail3.

...
"classTemplateInfo": {
      "cardTemplateOverride": {
        "cardRowTemplateInfos": [
        {
            "twoItems": {
              "startItem": {
                "firstValue": {
                  "fields": [
                    {
                    "fieldPath": "object.accountName",
                    }
                  ]
                }
              },
              "endItem": {
                "firstValue": {
                  "fields": [
                    {
                     "fieldPath": "object.textModulesData['mem_since']",
                    }
                  ]
                }
              }
            }
          },
          {
            "twoItems": {
              "startItem": {
                "firstValue": {
                  "fields": [
                    {
                      "fieldPath": "object.loyaltyPoints.label"
                    },
                    {
                      "fieldPath": "object.loyaltyPoints.balance"
                    }
                  ]
                }
              },
              "endItem": {
                "firstValue": {
                  "fields": [
                    {
                      "fieldPath": "class.rewardsTierLabel"
                    },
                    {
                      "fieldPath": "class.rewardsTier"
                    }
                  ]
                }
              }
            }
          },
          {
            "twoItems": {
              "startItem": {
                "firstValue": {
                  "fields": [
                    {
                      "fieldPath": "object.secondaryLoyaltyPoints.label"
                    },
                    {
                      "fieldPath": "object.secondaryLoyaltyPoints.balance"
                    }
                  ]
                }
              },
              "endItem": {
                "firstValue": {
                  "fields": [
                    {
                      "fieldPath": "object.textModulesData['visits']",
                    }
                  ]
                }
              }
            }
          },
        ]
      }
    }
...
"rewardsTier": "Gold",
"rewardsTierLabel": "Tier",

تعریف شیء: Object داده‌ها و شناسه‌های مربوطه را برای هر فیلد ارائه می‌دهد.

...
"accountName": "Camille Walsh",
"loyaltyPoints": {
    "balance": {
        "string": "1500"
    },
    "label": "Points"
},
"secondaryLoyaltyPoints" : {
    "balance": {
        "money": {
            "micros" : "28250000",
            "currencyCode": "USD",
        }
    },
    "label": "Balance"
},
"textModulesData": [
{
    "header": "Visits",
    "body": "17",
    "id": "visits"
  },
  {
    "header": "Member since",
    "body": "Mar 01, 2024",
    "id": "mem_since"
  },
]
...

داده‌های کلاس درمقابل شیء برای انواع

می‌توانید داده‌های سطح کلاس و سطح شیء را ترکیب کنید تا مجوزهای پویا و شخصی‌سازی‌شده ایجاد کنید. این کار برای ایجاد نسخه‌های مختلف از یک مجوز مفید است.

  • سطح کلاس textModulesData: از این مورد برای جزئیاتی استفاده کنید که برای گروهی از کاربران یکسان است (مثلاً پیام «به VIP خوش آمدید» برای همه دارندگان بلیت VIP).
  • سطح شیء textModulesData: از این برای جزئیات مختص یک کاربر استفاده کنید (مثلاً «جین، صندلی شما دید محدودی دارد»).

مثال: نمایش مجوزهای مختص سطح

می‌توانید منابع Class مختلفی برای انواع مختلف کارت ایجاد کنید، مثلاً «ورودی عمومی» درمقابل «VIP» برای رویداد، یا «اقتصادی» درمقابل «تجاری» برای پرواز. هر کلاس می‌تواند طراحی منحصربه‌فرد (نگاره اصلی، رنگ) و نوشتار پیش‌فرض داشته باشد.

عضو سطح نقره‌ای عضو به «طلایی» ارتقا یافت عضو سطح «الماس»
عضو از سطح «نقره‌ای» شروع می‌کند عضو به «طلایی» ارتقا یافت عضو دیگری در سطح «الماس»

محتوای بخش پایین مجوز

فیلدهای linksModuleData، imageModulesData هنگام ارجاع در cardTemplateOverride رندر نمی‌شوند. این محتوا به‌طور خودکار در بخش پایین مجوز نمایش داده می‌شود و دسترسی بهتری به پیوندهای خدمات مشتری، تصاویر تبلیغاتی، شرایط خدمات، و دیگر اطلاعات تکمیلی برای کاربران فراهم می‌کند.

۳. فراتر از روی کارت: سایر موارد ملغی کردن الگو

شیء classTemplateInfo چیزی بیشتر از cardTemplateOverride ارائه می‌دهد. می‌توانید بخش‌های دیگر تجربه «کیف پول Google» را سفارشی‌سازی کنید تا مجوزهایتان را به‌صورت غنی‌تر و شهودی‌تر ارائه دهید.

برای جزئیات کامل درباره همه لغوهای دردسترس، به ClassTemplateInfo اسناد مرجع مراجعه کنید.

  • listTemplateOverride: چیدمان ردیف را در نمای فهرست اصلی برنامه «کیف پول Google» سفارشی می‌کند و به شما امکان می‌دهد مهم‌ترین فیلدها را حتی قبل‌از اینکه کاربر مجوزش را باز کند برجسته کنید.
  • detailsTemplateOverride: ردیف‌ها و چیدمان بخش پایینی مجوز را ساختاردهی می‌کند و فضایی انعطاف‌پذیر برای اطلاعات تکمیلی، پیوندها، و نوشتار دراختیارتان قرار می‌دهد.
  • cardBarcodeSectionDetails: به شما امکان می‌دهد بخش رمزینه را در مجوز سفارشی‌سازی کنید.