Latar belakang
Fitur gambar pribadi yang aman memungkinkan Anda menentukan gambar pada kartu yang tidak perlu dapat diakses dari URL yang menghadap publik (persyaratan untuk gambar biasa agar dapat dirender dengan benar pada kartu). Anda menggunakan Wallet API untuk mengupload gambar dan menerima ID yang dapat digunakan untuk merujuk gambar tersebut pada objek kartu Wallet.
Jenis kartu berikut didukung:
- Tiket Acara
- Boarding pass
- Tiket transportasi umum
- Kartu Penawaran
- Kartu Voucher
- Kartu loyalitas
- Kartu generik
Contoh fitur
|
| Kartu keanggotaan menggunakan gambar pribadi yang aman |
Kasus Penggunaan
Gambar pribadi yang aman memungkinkan penggunaan gambar yang tidak perlu dapat diakses secara publik dan oleh karena itu dapat digunakan untuk hal-hal seperti foto profil. Hal ini memungkinkan kasus penggunaan seperti, tetapi tidak terbatas pada, berikut:
- Kartu keanggotaan tahunan
- Kartu Nama
- Tiket Transportasi Umum
Catatan: Gambar pribadi yang aman tidak dimaksudkan untuk digunakan sebagai representasi kartu izin masuk sebagai tanda pengenal yang dikeluarkan pemerintah beserta panduan tambahan yang ditentukan dalam kebijakan penggunaan yang dapat diterima
Beberapa pertimbangan saat menggunakan Gambar Pribadi Aman
- Tidak dapat digunakan dengan Kartu Pribadi Umum
- Hanya dapat ditambahkan ke Objek kartu (bukan Kelas)
- Hanya dapat digunakan dengan satu Objek
- Hanya dapat digunakan dengan
ImageModuleData(gambar pribadi tidak dapat ditetapkan ke kolom gambar lain, sepertiheroImage,logo, atauwideLogo) - Kartu yang menggunakan gambar pribadi yang aman di
ImageModuleDatamasih dapat menampilkan gambar logo dan hero standar (dihosting di URL yang dapat diakses secara publik) secara bersamaan. Menambahkan gambar pribadi tidak membatasi atau memblokir gambar hero atau logo standar agar tidak muncul di kartu.
Fitur Dalam Pengembangan
- Dukungan Web
- Dukungan untuk gambar pribadi di kolom
heroImage(menggunakanprivateImageIdsebagai gambar utama)
Langkah-Langkah Integrasi
- Upload gambar pribadi Anda menggunakan Google Wallet API untuk menerima
privateImageId. - Tambahkan gambar ke objek kartu (misalnya,
ImageModuleData). Daripada menyetel kolomsourceUripada gambar, Anda akan menyetel kolomprivateImageIddengan nilai yang diperoleh dari langkah sebelumnya.
Diagram Urutan
|
| Mengamankan urutan gambar pribadi |
Kode Contoh
Upload gambar
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();
Menggunakan Gambar Pribadi pada objek kartu
// 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();
Memperbarui Kartu untuk menampilkan gambar di bagian depan
Anda dapat menggunakan image pribadi yang aman di kolom imageModulesData. Berikut adalah contoh cara menggunakan kolom imageModulesData untuk memosisikan gambar di bagian depan kartu menggunakan penggantian template. Berikut contoh penyisipan class dengan penggantian template:
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))));
}Penanganan pengecualian
Potensi error dapat terjadi karena penggunaan Google Wallet API yang salah, yang dapat mencakup;
| Kirim pesan | Alasan |
|---|---|
| Gambar tidak boleh memiliki source_uri dan private_image_id | Penerbit mencoba menyetel source_uri dan private_image_id pada satu gambar, yang tidak diizinkan |
| Tidak dapat menemukan gambar pribadi dengan ID %s untuk penerbit %s | Menetapkan ID gambar pribadi yang tidak ada pada objek |
| Tidak dapat menambahkan gambar pribadi dengan ID %s untuk penerbit %s ke objek %s karena sudah digunakan dengan objek %s. Gambar pribadi hanya dapat digunakan dengan satu objek. | Mencoba menggunakan gambar pribadi yang sama pada lebih dari satu objek. Untuk menggunakan gambar pribadi yang sama dengan lebih dari satu objek, gambar tersebut harus diupload ulang dan Anda akan mendapatkan ID gambar pribadi baru, yang dapat digunakan dengan objek kedua |