Plugin Google Play Instan untuk Unity mengonfigurasi project Unity Anda untuk membuat game versi aplikasi instan. Panduan ini menjelaskan cara menginstal dan menggunakan plugin ini.
Mendownload dan mengimpor plugin
Plugin ini adalah bagian dari Plugin Google Play untuk Unity. Untuk mengimpor plugin, ikuti langkah-langkah berikut:
- Download rilis terbaru Plugin Google Play untuk Unity.
- Impor file
.unitypackage
dengan memilih opsi menu Unity IDE Assets > Import package > Custom Package, lalu mengimpor semua item.
Fitur Unity Editor
Impor plugin untuk menambahkan submenu Google > Play Instant di Unity. Submenu ini menyediakan opsi berikut.
Build Settings
Membuka jendela yang memungkinkan peralihan antara mode pengembangan Installed dan Instant. Beralih ke Instant akan membuat perubahan berikut:
- Membuat Scripting Define Symbol yang disebut
PLAY_INSTANT
yang dapat digunakan untuk membuat skrip dengan#if PLAY_INSTANT
dan#endif
. - Mengelola update atas AndroidManifest.xml untuk perubahan tertentu yang diwajibkan seperti android:targetSandboxVersion.
Player Settings
Dialog Player Settings, seperti ditunjukkan pada Gambar 1, menampilkan saran untuk membantu Anda mengoptimalkan dukungan untuk Google Play Instan, melakukan pengembangan dengan API grafis yang lebih kompatibel, dan mengurangi ukuran APK.
![Saran spesifik mencakup hanya menggunakan OpenGL ES 2.0 dan
menonaktifkan Multithreaded Rendering.](https://developer.android.google.cn/static/topic/google-play-instant/images/unity-plugin-player-settings.png?authuser=6&hl=id)
Player Settings ini dibagi ke dalam dua setelan, Required dan Recommended. Jika setelan memiliki tombol Update yang sesuai, klik tombol tersebut untuk mengubah setelan ke nilai yang diinginkan.
Untuk mengurangi ukuran APK lebih lanjut, buka Unity Package Manager, lalu hapus setiap paket yang tidak digunakan.
Quick Deploy
Quick Deploy dapat mengurangi ukuran aplikasi instan berbasis Unity dengan mengemas beberapa aset ke dalam AssetBundle. Saat menggunakan Quick Deploy, mesin game Unity dan layar pemuatan akan dikemas ke dalam sebuah APK aplikasi instan, dan setelah aplikasi instan dimulai, AssetBundle akan diambil dari server.
Mendukung alur kerja penginstalan
Sasaran banyak aplikasi instan adalah memberikan kesempatan kepada pengguna untuk mencoba aplikasi sebelum menginstal versi lengkapnya. Plugin Google Play Instan untuk Unity menyediakan API untuk menampilkan dialog penginstalan Play Store dan untuk mentransfer status dari aplikasi instan ke aplikasi terinstal.
Menampilkan perintah penginstalan
Aplikasi instan dengan tombol Install dapat menampilkan dialog penginstalan Play Store dengan memanggil kode berikut dari pengendali klik tombol instal:
Google.Play.Instant.InstallLauncher.ShowInstallPrompt();
Metode ShowInstallPrompt()
memiliki overload yang memungkinkan satu atau beberapa
hal berikut:
- Menentukan apakah pengguna membatalkan proses penginstalan. Mengganti
onActivityResult()
pada aktivitas utama aplikasi instan dan memeriksaRESULT_CANCELED
padarequestCode
yang ditentukan. - Meneruskan string perujuk penginstalan melalui parameter
referrer
. - Meneruskan status sesi game saat ini melalui
PutPostInstallIntentStringExtra()
.
Ini ditunjukkan dalam contoh berikut:
using Google.Play.Instant;
...
const int requestCode = 123;
var sessionInfo = /* Object serialized as a string representing player's current location, etc. */;
using (var activity = UnityPlayerHelper.GetCurrentActivity())
using (var postInstallIntent = InstallLauncher.CreatePostInstallIntent(activity))
{
InstallLauncher.PutPostInstallIntentStringExtra(postInstallIntent, "sessionInfo", sessionInfo);
InstallLauncher.ShowInstallPrompt(activity, requestCode, postInstallIntent, "test-referrer");
}
Jika pengguna menyelesaikan penginstalan aplikasi, Play Store akan meluncurkan kembali aplikasi
menggunakan postInstallIntent
yang tersedia. Aplikasi terinstal dapat mengambil nilai
yang ditetapkan di postInstallIntent
menggunakan kode berikut:
var sessionInfo = InstallLauncher.GetPostInstallIntentStringExtra("sessionInfo");
Catatan:
- Tambahan yang disertakan dalam
postInstallIntent
mungkin tidak menjangkau aplikasi terinstal jika pengguna menginstal aplikasi, tetapi membatalkan peluncuran setelah proses instal. Penerusan intent tambahan lebih sesuai untuk mempertahankan status sesi aktif daripada mempertahankan status persisten; untuk mengetahui detail status persisten, lihat Cookie API. - Siapa saja dapat membuat intent dengan kolom tambahan untuk meluncurkan aplikasi terinstal. Jadi, jika payload memberikan semacam nilai, desain payload agar hanya dapat digunakan sekali, tanda tangani secara kriptografis, dan verifikasi tanda tangan tersebut di server.
Menggunakan Cookie API
Cookie API menyediakan metode untuk meneruskan cookie (misalnya, ID pemain atau data
penyelesaian level) dari aplikasi instan ke aplikasi terinstal terkait. Tidak seperti
tambahan postInstallIntent
, status cookie tetap tersedia meskipun pengguna
tidak segera meluncurkan aplikasi terinstal. Misalnya, aplikasi instan dapat
memanggil kode berikut dari pengendali klik tombol instal:
using Google.Play.Instant;
...
var playerInfo = /* Object serialized as a string representing game levels completed, etc. */;
var cookieBytes = System.Text.Encoding.UTF8.GetBytes(playerInfo);
try
{
var maxCookieSize = CookieApi.GetInstantAppCookieMaxSize();
if (cookieBytes.Length > maxCookieSize)
{
UnityEngine.Debug.LogErrorFormat("Cookie length {0} exceeds limit {1}.", cookieBytes.Length, maxCookieSize);
}
else if (CookieApi.SetInstantAppCookie(cookieBytes))
{
UnityEngine.Debug.Log("Successfully set cookie. Now display the app install dialog...");
InstallLauncher.ShowInstallPrompt();
}
else
{
UnityEngine.Debug.LogError("Failed to set cookie.");
}
}
catch (CookieApi.InstantAppCookieException ex)
{
UnityEngine.Debug.LogErrorFormat("Failed to set cookie: {0}", ex);
}
Jika pengguna menyelesaikan penginstalan aplikasi, aplikasi terinstal dapat mengambil data cookie menggunakan kode berikut:
var cookieBytes = CookieApi.GetInstantAppCookie();
var playerInfoString = System.Text.Encoding.UTF8.GetString(cookieBytes);
if (!string.IsNullOrEmpty(playerInfoString))
{
// Initialize game state based on the cookie, e.g. skip tutorial level completed in instant app.
}