গুগল ওয়ালেট পাস কাস্টমাইজ করুন

গুগল ওয়ালেট ইভেন্ট টিকেট ও বোর্ডিং পাস থেকে শুরু করে লয়্যালটি ও গিফট কার্ড পর্যন্ত যেকোনো পাসের চেহারা ও লেআউট কাস্টমাইজ করার জন্য শক্তিশালী টুল সরবরাহ করে। এই নির্দেশিকাটিতে কার্ডের কাঠামো নির্ধারণ করে এবং ডাইনামিক, ব্যবহারকারী-নির্দিষ্ট তথ্য প্রদর্শন করার মাধ্যমে কীভাবে আপনি ব্যবহারকারীর অভিজ্ঞতাকে নিজের মতো করে সাজিয়ে নিতে পারেন, তার একটি বিশদ বিবরণ দেওয়া হয়েছে।

শুরু করার আগে, উপলব্ধ ফিল্ডগুলির সম্পূর্ণ তালিকা দেখতে আপনার পাস টাইপের জন্য নির্দিষ্ট REST API রেফারেন্স ডকুমেন্টেশনটি অবশ্যই দেখে নিন।

ফাউন্ডেশন: cardTemplateOverride ওভাররাইড

একটি পাসের লেআউট কাস্টমাইজ করার প্রধান টুল হলো classTemplateInfo.cardTemplateOverride অবজেক্ট, যা আপনি পাসের Class রিসোর্সে (যেমন, EventTicketClass , LoyaltyClass ) সংজ্ঞায়িত করেন। এই অবজেক্টটি আপনাকে সারি এবং তার ভেতরের আইটেমগুলো নির্ধারণ করার মাধ্যমে পাসটির কাঠামো তৈরি করতে দেয়, যার ফলে তথ্য কীভাবে উপস্থাপন করা হবে তার উপর আপনার নিয়ন্ত্রণ থাকে।

আপনি Class রিসোর্স (সকল ব্যবহারকারীর জন্য শেয়ার করা তথ্যের জন্য) এবং Object রিসোর্স (ব্যবহারকারী-নির্দিষ্ট বিবরণের জন্য) উভয় থেকেই ডেটা রেফারেন্স করতে পারেন।

১. পূর্বনির্ধারিত ওয়ালেট ফিল্ড ব্যবহার করে কাস্টমাইজ করা

পূর্বনির্ধারিত ফিল্ডগুলি হলো একটি নির্দিষ্ট পাস টাইপের জন্য গুগল ওয়ালেট এপিআই-তে উপলব্ধ স্ট্যান্ডার্ড প্রোপার্টি। এই ফিল্ডগুলির নির্দিষ্ট নাম রয়েছে এবং ওয়ালেট সেগুলিকে একটি সামঞ্জস্যপূর্ণ পদ্ধতিতে রেন্ডার করে। উদাহরণস্বরূপ, একটি বারকোড, একটি ইভেন্টের নাম, একটি ফ্লাইট নম্বর বা একটি গিফট কার্ড ব্যালেন্স।

এই পূর্বনির্ধারিত ফিল্ডগুলির fieldPath উল্লেখ করে, আপনি সেগুলিকে আপনার পাসের যেকোনো জায়গায় সাজাতে পারেন।

উদাহরণ: বারকোড এবং পাস-সংক্রান্ত বিবরণ প্রদর্শন

এই পাস উদাহরণটিতে একটি "শীর্ষ সারি" এবং দ্বিতীয় সারির ভিতরে ৩টি ডেটা ফিল্ড রয়েছে। প্রথম আইটেমটি Object থেকে ব্যবহারকারীর নির্দিষ্ট মান, যেমন ব্যবহারকারীর জন্য নির্দিষ্ট পয়েন্ট বা আসন নম্বর প্রদর্শন করে। দ্বিতীয় আইটেমটি Class থেকে ইভেন্টের নাম বা লয়্যালটি প্রোগ্রামের স্তরের মতো বিবরণ প্রদর্শন করে এবং তৃতীয়টি আবার Object থেকে ব্যবহারকারীর নির্দিষ্ট মান, যেমন সেকেন্ডারি পয়েন্ট বা সেকশন/কোচ নম্বর প্রদর্শন করে।

Predefined Fields

শ্রেণী সংজ্ঞা:

...
"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 ডকুমেন্টেশন দেখুন।

২. ডেভেলপার-সংজ্ঞায়িত ফিল্ড ব্যবহার করে কাস্টমাইজ করা

সর্বোচ্চ নমনীয়তার জন্য, গুগল ওয়ালেট আপনাকে textModulesData ব্যবহার করে আপনার নিজস্ব কাস্টম ডেটা ফিল্ড তৈরি করার সুযোগ দেয়। পূর্বনির্ধারিত ফিল্ডগুলোতে জায়গা হয় না এমন অনন্য তথ্য প্রদর্শনের জন্য এটি খুবই উপযোগী, যেমন ব্যক্তিগত সংক্ষিপ্ত নোট, সদস্যদের জন্য সুবিধা, বা অবস্থান-ভিত্তিক বিবরণ।

আপনি Object বা Class এ একটি অনন্য id সহ একটি textModulesData আইটেম সংজ্ঞায়িত করেন এবং তারপর cardTemplateOverride এ সেই id রেফারেন্স করেন।

কাঠামো কার্ড সারি

আপনি প্রতি পাসে একটি, দুটি বা তিনটি ডেটা আইটেম দিয়ে একটি পাস ডিজাইন করতে পারেন, যা আপনাকে যৌক্তিকভাবে তথ্য সাজানোর সুযোগ দেয়। আপনি যত খুশি সারি যোগ করতে পারেন, এর কোনো নির্দিষ্ট সীমা নেই, কিন্তু একটি পরিচ্ছন্ন ব্যবহারকারী অভিজ্ঞতার জন্য, কার্ডের উপরিভাগে কী প্রদর্শন করা সবচেয়ে গুরুত্বপূর্ণ তা বিবেচনা করুন।

  • সর্বোত্তম পন্থা: অতিরিক্ত তথ্যের জন্য, পাসের নিচের অংশ অথবা ওয়ালেটের অন্যান্য ফিচার যেমন messages , linksModuleData , বা linkedOfferIds ব্যবহার করুন। এতে মূল পাস ভিউটি পরিচ্ছন্ন থাকে।

উদাহরণ: কাস্টম ডেটা সহ একটি তিন-আইটেমের সারি

নিজস্ব বিবরণ দেখানোর জন্য একটি সারি তৈরি করুন। একটি লয়ালটি কার্ডের জন্য, এটি হতে পারে পয়েন্ট, টিয়ার এবং ব্যালেন্স। একটি ইভেন্টের টিকিটের জন্য, এটি হতে পারে 'সেকশন', 'সারি' এবং 'সিট'।

Custom and Predefined Fields

ক্লাসের সংজ্ঞা: 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 : ব্যবহারকারীদের একটি গোষ্ঠীর জন্য একই রকম বিবরণের জন্য এটি ব্যবহার করুন (যেমন, সকল ভিআইপি টিকিটধারীর জন্য একটি "ভিআইপি-তে স্বাগতম" বার্তা)।
  • অবজেক্ট-লেভেল textModulesData : কোনো একজন ব্যবহারকারীর নির্দিষ্ট বিবরণের জন্য এটি ব্যবহার করুন (যেমন, "জেন, আপনার আসনটির দৃশ্য সীমাবদ্ধ")।

উদাহরণ: স্তর-ভিত্তিক পাস প্রদর্শন

আপনি বিভিন্ন পাসের ধরনের জন্য আলাদা Class রিসোর্স তৈরি করতে পারেন, যেমন কোনো ইভেন্টের জন্য 'জেনারেল অ্যাডমিশন' বনাম 'ভিআইপি', অথবা কোনো ফ্লাইটের জন্য 'ইকোনমি' বনাম 'বিজনেস'। প্রতিটি ক্লাসের একটি স্বতন্ত্র ডিজাইন (হিরো ইমেজ, রঙ) এবং ডিফল্ট টেক্সট থাকতে পারে।

সিলভার টিয়ারের সদস্যসদস্য গোল্ডে আপগ্রেড করা হয়েছেডায়মন্ড টায়ারের সদস্য
সিলভার দিয়ে শুরু হওয়া সদস্য সদস্য গোল্ডে আপগ্রেড করা হয়েছে ডায়মন্ড টিয়ারে আরও একজন সদস্য

পাসের নিচের অংশের বিষয়বস্তু

cardTemplateOverride এ রেফারেন্স করা হলে linksModuleData এবং imageModulesData এর ফিল্ডগুলো রেন্ডার করা হয় না। এই কন্টেন্টটি `pass`-এর নিচের অংশে স্বয়ংক্রিয়ভাবে প্রদর্শিত হয়, যা ব্যবহারকারীদের কাস্টমার সার্ভিস লিঙ্ক, প্রচারমূলক ছবি, শর্তাবলী এবং অন্যান্য সম্পূরক তথ্যে আরও সহজে অ্যাক্সেস দেয়।

৩. কার্ড পৃষ্ঠের বাইরে: অন্যান্য টেমপ্লেট ওভাররাইড

classTemplateInfo অবজেক্টটি শুধু cardTemplateOverride চেয়েও বেশি কিছু প্রদান করে। আপনার পাসগুলোকে আরও সমৃদ্ধ ও সহজবোধ্যভাবে উপস্থাপন করার জন্য আপনি গুগল ওয়ালেট ব্যবহারের অন্যান্য অংশও কাস্টমাইজ করতে পারেন।

উপলব্ধ সকল ওভাররাইডের সম্পূর্ণ বিবরণের জন্য, ClassTemplateInfo রেফারেন্স ডকুমেন্টেশন দেখুন।

  • listTemplateOverride : গুগল ওয়ালেট অ্যাপের প্রধান তালিকা ভিউতে সারির বিন্যাস কাস্টমাইজ করে, যার ফলে কোনো ব্যবহারকারী তার পাস খোলার আগেই সবচেয়ে গুরুত্বপূর্ণ ফিল্ডগুলো হাইলাইট করা যায়।
  • detailsTemplateOverride : পাসের নিচের অংশের সারি এবং বিন্যাস নির্ধারণ করে, যা আপনাকে সম্পূরক তথ্য, লিঙ্ক এবং লেখার জন্য একটি নমনীয় স্থান প্রদান করে।
  • cardBarcodeSectionDetails : এটি আপনাকে পাসের বারকোড অংশটি নিজের পছন্দমতো সাজানোর সুযোগ দেয়।