Arka plan
Güvenli özel resimler özelliğiyle, kartlarda herkese açık bir URL'den erişilmesi gerekmeyen (normal resimleri kartlarda düzgün oluştururken gereklidir) resimleri tanımlayabilirsiniz. Cüzdan API'si ile resim yükleyebilir ve bu resme Cüzdan kartı nesnesinde referans vermek için kullanılabilecek bir tanımlayıcı alabilirsiniz.
Desteklenen kart türleri:
- Etkinlik bileti
- Uçuş kartı
- Toplu taşıma kartı
- Teklif kartı
- Hediye kartı
- Bağlılık kartı
- Genel kart
Özellik örneği
|
| Güvenli özel resim kullanılan üyelik kartı |
Kullanım Alanları
Güvenli özel resimler özelliğiyle, herkese açık olması gerekmeyen resimleri, profil fotoğrafı gibi amaçlarla kullanılabilirsiniz. Böylece, aşağıdakiler dahil ancak bunlarla sınırlı olmayan alanlarda kullanılabilirsiniz:
- Yıllık üyelik kartı
- Kartvizit
- Toplu taşıma kartı
Not: Güvenli özel resimler, kabul edilebilir kullanım politikasında tanımlanan ek yönergelerle birlikte, resmi kimlik belgesi kartları olarak kullanılmak üzere tasarlanmamıştır.
Güvenli özel resimleri kullanırken dikkat edilmesi gereken bazı noktalar
- Genel özel kartlarla kullanılamaz
- Yalnızca kart nesnelerine (sınıflara değil) eklenebilir
- Yalnızca tek bir nesne ile kullanılabilir
- Yalnızca
ImageModuleDataile kullanılabilir (gizli resimler,heroImage,logoveyawideLogogibi diğer resim alanlarına atanamaz) ImageModuleDataiçinde güvenli özel resimler kullanan kartlar, herkese açık URL'lerde barındırılan standart banner ve logo resimlerini aynı anda gösterebilir. Özel resim eklemek, standart hero veya logo resimlerinin kartta görünmesini kısıtlamaz ya da engellemez.
Geliştirme Aşamasındaki Özellikler
- Web desteği
heroImagealanında özel resimler için destek (privateImageIdöğesini hero resmi olarak kullanma)
Entegrasyon Adımları
privateImageIdalmak için Google Wallet API'sini kullanarak özel resminizi yükleyin.- Kart nesnesine resim ekleyin (örneğin,
ImageModuleData).sourceUrialanını resimde ayarlamak yerine,privateImageIdalanını önceki adımdan elde edilen değerle ayarlayın.
Adım Sırası Diyagramı
|
| Özel resim adım sırasını güvenli hale getirme |
Örnek Kod
Resmi yükleme
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();
Özel resmi kart nesnesinde kullanma
// 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();
Resmi ön tarafta göstermek için kartı güncelleme
Güvenli özel görüntüyü her imageModulesDatafield üzerinde kullanabilirsiniz. Şablon geçersiz kılma kullanarak imageModulesData alanı ile resmin, kartın ön tarafına yerleştirilmesi aşağıda gösterilmiştir. Şablon geçersiz kılma kullanarak sınıf ekleme örneği aşağıdadır:
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))));
}İstisna işleme
Google Cüzdan API'sinin yanlış kullanımıyla ilgili olası hatalar şunlardır:
| Mesaj | Neden |
|---|---|
| Resimde hem source_uri hem de private_image_id olamaz | Yayıncının tek bir resimde ayarlamaya çalıştığı source_uri ve private_image_id işlemine izin verilmez |
| %s sağlayıcısı için %s kimlikli özel resim bulunamadı | Bir nesnede, mevcut olmayan özel resim kimliği ayarlama |
| %s kimlikli özel resim, %s nesnesiyle kullanıldığından %s sağlayıcısı için %s nesnesine eklenemedi. Özel resim, yalnızca bir nesneyle kullanılabilir. | Aynı özel resmi birden fazla nesnede kullanma. Aynı özel resmi birden fazla nesneyle kullanmak için resmin yeniden yüklenmesi gerekir. Bu durumda, ikinci nesneyle kullanılabilecek yeni bir özel resim kimliği alırsınız |