পটভূমি
সুরক্ষিত ব্যক্তিগত ছবির বৈশিষ্ট্যটি আপনাকে পাসে এমন ছবি যুক্ত করার সুযোগ দেয়, যেগুলোকে কোনো পাবলিক ইউআরএল থেকে অ্যাক্সেসযোগ্য হওয়ার প্রয়োজন নেই (যা সাধারণ ছবি পাসে সঠিকভাবে রেন্ডার করার জন্য একটি আবশ্যিক শর্ত)। আপনি ওয়ালেট এপিআই ব্যবহার করে একটি ছবি আপলোড করেন এবং একটি আইডেন্টিফায়ার পান, যা ওয়ালেট পাস অবজেক্টে সেই ছবিটিকে রেফারেন্স করতে ব্যবহার করা যেতে পারে।
নিম্নলিখিত পাস প্রকারগুলি সমর্থিত;
- ইভেন্টের টিকিট
- বোর্ডিং পাস
- ট্রানজিট পাস
- অফার কার্ড
- উপহার কার্ড
- লয়ালটি পাস
- জেনেরিক পাস
বৈশিষ্ট্যের উদাহরণ
![]() |
| সুরক্ষিত ব্যক্তিগত ছবি ব্যবহার করে সদস্যপদ কার্ড |
ব্যবহারের ক্ষেত্র
সুরক্ষিত ব্যক্তিগত ছবি এমন সব ছবি ব্যবহারের সুযোগ দেয়, যেগুলো সর্বজনীনভাবে অ্যাক্সেসযোগ্য হওয়ার প্রয়োজন নেই এবং তাই প্রোফাইল ফটোর মতো কাজে ব্যবহার করা যেতে পারে। এর মাধ্যমে নিম্নলিখিত ক্ষেত্রগুলো ব্যবহার করা যায়, তবে তা শুধু এগুলোর মধ্যেই সীমাবদ্ধ নয়;
- বার্ষিক সদস্যপদ পাস
- ব্যবসায়িক কার্ড
- ট্রানজিট পাস
দ্রষ্টব্য: সুরক্ষিত ব্যক্তিগত ছবিগুলি সরকারি পরিচয়পত্র হিসাবে পাস উপস্থাপনের জন্য ব্যবহার করা যাবে না এবং এর জন্য গ্রহণযোগ্য ব্যবহার নীতিতে সংজ্ঞায়িত অতিরিক্ত নির্দেশিকা অনুসরণ করতে হবে।
সিকিউর প্রাইভেট ইমেজ ব্যবহার করার সময় কিছু বিবেচ্য বিষয়
- জেনেরিক প্রাইভেট পাসের সাথে ব্যবহার করা যাবে না।
- শুধুমাত্র অবজেক্ট পাস করার জন্য যোগ করা যাবে (ক্লাস নয়)।
- শুধুমাত্র একটি অবজেক্টের সাথেই ব্যবহার করা যাবে।
- শুধুমাত্র
ImageModuleDataসাথেই ব্যবহার করা যাবে (ব্যক্তিগত ছবি অন্যান্য ইমেজ ফিল্ডে, যেমনheroImage,logo, বাwideLogoঅ্যাসাইন করা যাবে না)। -
ImageModuleDataতে সুরক্ষিত ব্যক্তিগত ছবি ব্যবহার করা পাসগুলিতেও একই সাথে সাধারণ হিরো এবং লোগো ছবি (যা সর্বজনীনভাবে অ্যাক্সেসযোগ্য URL-এ হোস্ট করা থাকে) প্রদর্শন করা যায়। ব্যক্তিগত ছবি যোগ করলে পাসে সাধারণ হিরো বা লোগো ছবি প্রদর্শিত হওয়া সীমাবদ্ধ বা ব্লক হয় না।
উন্নয়নাধীন বৈশিষ্ট্যসমূহ
- ওয়েব সাপোর্ট
-
heroImageফিল্ডে ব্যক্তিগত ছবি ব্যবহারের সুবিধা (privateImageIdকে হিরো ইমেজ হিসেবে ব্যবহার করে)
একীকরণ পদক্ষেপ
- একটি
privateImageIdপেতে Google Wallet API ব্যবহার করে আপনার ব্যক্তিগত ছবি আপলোড করুন। - pass অবজেক্টে একটি ছবি যোগ করুন (উদাহরণস্বরূপ,
ImageModuleData)। ছবিরsourceUriফিল্ড সেট করার পরিবর্তে, আপনি পূর্ববর্তী ধাপ থেকে প্রাপ্ত মানটিprivateImageIdফিল্ডে সেট করবেন।
ক্রম চিত্র
![]() |
| সুরক্ষিত ব্যক্তিগত ছবির ক্রম |
উদাহরণ কোড
ছবিটি আপলোড করুন
String issuerId = "12345"; String keyFilePath = "/path/to/key.json"; GoogleCredential credential = GoogleCredential.fromStream(new FileInputStream(keyFilePath)) .createScoped(Arrays.asList("https://www.googleapis.com/auth/wallet_object.issuer")); HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); // Prepare request to upload image String contentType = "image/jpeg"; // MIME type of image String imageFilePath = "/path/to/image.jpg"; HttpContent content = new ByteArrayContent( contentType, ByteStreams.toByteArray(new FileInputStream(imageFilePath))); String url = String.format( "https://walletobjects.googleapis.com/upload/walletobjects/v1/privateContent/%s/uploadPrivateImage", issuerId); // Make request to upload image HttpResponse response = httpTransport .createRequestFactory(credential) .buildPostRequest(new GenericUrl(url), content) .execute(); // Get privateImageId from response Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson(response.parseAsString(), JsonObject.class); String privateImageId = jsonObject.get("privateImageId").getAsString();
পাস অবজেক্টে প্রাইভেট ইমেজ ব্যবহার করুন
// Build GenericObject with privateImageId in ImageModuleData (also adding an optional TextModuleData) Image image = new Image().setPrivateImageId(privateImageId); ImageModuleData imageModuleData = new ImageModuleData().setId("imageId").setMainImage(image); TextModuleData textModuleData = new TextModuleData().setId("textId").setHeader("Card holder").setBody("John Doe"); GenericObject genericObject = new GenericObject() .setId(issuerId + ".objectId") // class must be inserted before inserting object .setClassId(issuerId + ".classId") .setCardTitle("Business name") .setHeader("My membership card") .setImageModulesData(Arrays.asList(imageModuleData)) .setTextModulesData(Arrays.asList(textModuleData)); // Insert GenericObject (or can use in JWT without inserting ahead of time) Walletobjects service = new Walletobjects.Builder(httpTransport, GsonFactory.getDefaultInstance(), credential) .setApplicationName("My Application") .build(); service.genericobject().insert(genericObject).execute();
সামনের দিকে ছবিটি দেখানোর জন্য পাসটি আপডেট করুন।
আপনি যেকোনো imageModulesDatafield-এ সুরক্ষিত ব্যক্তিগত ছবি ব্যবহার করতে পারেন। টেমপ্লেট ওভাররাইড ব্যবহার করে কার্ডের সামনে ছবি স্থাপন করার জন্য কীভাবে একটি imageModulesData ফিল্ড ব্যবহার করতে হয়, তার একটি উদাহরণ নিচে দেওয়া হলো। টেমপ্লেট ওভাররাইডের মাধ্যমে একটি ক্লাস যুক্ত করার উদাহরণ নিচে দেওয়া হলো:
CardTemplateOverride cardTemplateOverride =
new CardTemplateOverride()
.setCardRowTemplateInfos(
Arrays.asList(
new CardRowTemplateInfo()
.setTwoItems(
new CardRowTwoItems()
// The ids chosen here must be set on the object's TextModuleData and ImageModuleData
.setStartItem(
createTemplateItem("object.textModulesData['textId']"))
.setEndItem(
createTemplateItem("object.imageModulesData['imageId']")))));
GenericClass genericClass =
new GenericClass()
.setId(issuerId + ".classId")
.setClassTemplateInfo(
new ClassTemplateInfo().setCardTemplateOverride(cardTemplateOverride));
service.genericclass().insert(genericClass);
...
private static TemplateItem createTemplateItem(String fieldPath) {
return new TemplateItem()
.setFirstValue(
new FieldSelector()
.setFields(Arrays.asList(new FieldReference().setFieldPath(fieldPath))));
}ব্যতিক্রম পরিচালনা
গুগল ওয়ালেট এপিআই-এর ভুল ব্যবহারের ফলে সম্ভাব্য ত্রুটি ঘটতে পারে, যার মধ্যে অন্তর্ভুক্ত থাকতে পারে;
| বার্তা | কারণ |
|---|---|
| একটি ছবির একই সাথে source_uri এবং private_image_id থাকতে পারবে না। | ইস্যুকারী একটিমাত্র ইমেজে source_uri এবং private_image_id সেট করার চেষ্টা করেছে, যা অনুমোদিত নয়। |
| ইস্যুকারী %s-এর জন্য আইডি %s সহ ব্যক্তিগত ছবি খুঁজে পাওয়া যায়নি। | কোনো অবজেক্টে অস্তিত্বহীন ব্যক্তিগত ইমেজ আইডি সেট করা |
| ইস্যুকারী %s-এর জন্য আইডি %s সহ ব্যক্তিগত ছবিটি অবজেক্ট %s-এ যোগ করা যায়নি, কারণ এটি ইতিমধ্যেই অবজেক্ট %s-এর সাথে ব্যবহৃত হচ্ছে। একটি ব্যক্তিগত ছবি শুধুমাত্র একটি অবজেক্টের সাথেই ব্যবহার করা যায়। | একাধিক অবজেক্টে একই ব্যক্তিগত ছবি ব্যবহার করার চেষ্টা করা হচ্ছে। একাধিক অবজেক্টের সাথে একই ব্যক্তিগত ছবি ব্যবহার করতে হলে, এটি পুনরায় আপলোড করতে হবে এবং আপনি একটি নতুন ব্যক্তিগত ছবির আইডি পাবেন, যা দ্বিতীয় অবজেক্টের সাথে ব্যবহার করা যাবে। |

