Unity için Google Play Instant eklentisi, Unity projenizi oyununuzun anında uygulama sürümünü oluşturacak şekilde yapılandırır. Bu kılavuzda, bu eklentinin nasıl yükleneceği ve kullanılacağı açıklanmaktadır.
Eklentiyi indirin ve içe aktarın
Eklenti, Unity için Google Play Eklentileri'nin bir parçasıdır. Eklentiyi içe aktarmak için şu adımları uygulayın:
- Unity sürümleri için Google Play Eklentileri'nden en son sürümü indirin.
- Unity IDE menü seçeneğini Öğeler > Paketi içe aktar > Özel Paket'i seçip tüm öğeleri içe aktararak
.unitypackage
dosyasını içe aktarın.
Unity Editor özellikleri
Unity'de Google > Play Instant alt menüsünü eklemek için eklentiyi içe aktarın. Bu alt menüde aşağıdaki seçenekler sunulur.
Derleme Ayarları
Yüklü ve Anında geliştirme modları arasında geçiş yapmayı sağlayan bir pencere açar. Anında Arama'ya geçildiğinde aşağıdaki değişiklikler gerçekleştirilir:
#if PLAY_INSTANT
ve#endif
ile komut dosyası yazmak için kullanılabilecekPLAY_INSTANT
adında bir Komut Dosyası Tanımlama Sembolü oluşturur.- android:targetSandboxVersion gibi gerekli değişiklikler için AndroidManifest.xml güncellemelerini yönetir.
Oynatıcı Ayarları
Şekil 1'de gösterilen Oynatıcı Ayarları iletişim kutusu, Google Play Instant için desteği optimize etmenize, daha uyumlu grafik API'lerine göre geliştirmenize ve APK'nızın boyutunu küçültmenize yardımcı olacak öneriler görüntüler.
![Spesifik öneriler arasında yalnızca OpenGL ES 2.0 kullanılması ve Çoklu İş Parçacıklı Oluşturmanın devre dışı bırakılması bulunur.](https://developer.android.google.cn/static/topic/google-play-instant/images/unity-plugin-player-settings.png?authuser=5&hl=tr)
Bu Oynatıcı Ayarları Zorunlu ve Önerilen olarak ikiye ayrılır. Bir ayara karşılık gelen bir Güncelle düğmesi varsa ayarı tercih edilen değerle değiştirmek için bu düğmeyi tıklayın.
APK boyutunu daha da küçültmek için Unity Paket Yöneticisi'ni açın ve kullanılmayan paketleri kaldırın.
Hızlı Dağıtım
Hızlı Dağıtım, bazı öğeleri AssetBundle içinde paketleyerek Unity tabanlı hazır uygulamaların boyutunu küçültebilir. Hızlı Dağıtım kullanılırken Unity oyun motoru ve yükleme ekranı, bir hazır uygulama APK'sına paketlenir ve hazır uygulama başladıktan sonra bir sunucudan AssetBundle alır.
Destek yükleme iş akışları
Birçok hazır uygulamanın amacı, kullanıcılara tam sürümü yüklemeden önce uygulamayı deneme fırsatı vermektir. Unity için Google Play Instant eklentisi, Play Store yükleme iletişim kutusunu görüntülemek ve durumu anında uygulamadan yüklü uygulamaya aktarmak için API'ler sağlar.
Yükleme istemi göster
Yükle düğmesi olan bir hazır uygulama, yükleme düğmesi tıklama işleyiciden şunu çağırarak bir Play Store yükleme iletişim kutusu görüntüleyebilir:
Google.Play.Instant.InstallLauncher.ShowInstallPrompt();
ShowInstallPrompt()
yöntemi, aşağıdakilerden birine veya daha fazlasına izin veren bir aşırı yük içerir:
- Kullanıcının yükleme işlemini iptal edip etmediği belirleniyor. Hazır uygulamanın ana etkinliğinde
onActivityResult()
öğesini geçersiz kılın ve belirtilenrequestCode
öğesindeRESULT_CANCELED
olup olmadığını kontrol edin. referrer
parametresiyle bir yükleme yönlendiren dizesi iletin.- Mevcut oyun oturumuyla ilgili durum
PutPostInstallIntentStringExtra()
üzerinden aktarılıyor.
Bunlar aşağıdaki örnekte gösterilmiştir:
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");
}
Kullanıcı uygulama yüklemeyi tamamlarsa Play Store, sağlanan postInstallIntent
kodunu kullanarak uygulamayı yeniden başlatır. Yüklü uygulama, postInstallIntent
içinde ayarlanan bir değeri aşağıdakileri kullanarak alabilir:
var sessionInfo = InstallLauncher.GetPostInstallIntentStringExtra("sessionInfo");
Notes:
- Kullanıcı uygulamayı yükler ancak yükleme sonrası başlatmayı iptal ederse
postInstallIntent
içeriğinde yer alan ekstralar, yüklü uygulamaya erişemeyebilir. Amaç ekstralarını iletmek, etkin oturum durumunu korumak için kalıcı durumu korumaktan daha uygundur. İkincisi için Cookie API'ye bakın. - Herkes, yüklü uygulamayı başlatmak için ek alanlar içeren bir intent oluşturabilir. Bu nedenle, yük değerli bir şey sağlıyorsa yükü yalnızca bir kez kullanılabilecek şekilde tasarlayın, kriptografik olarak imzalayın ve bir sunucuda imzayı doğrulayın.
Cookie API'yi kullanma
Cookie API, bir çerezi (ör. oynatıcı kimliği veya seviye tamamlama verileri) hazır uygulamadan karşılık gelen yüklü uygulamaya geçirmek için yöntemler sağlar. postInstallIntent
ekstralarından farklı olarak, kullanıcı yüklü uygulamayı hemen başlatmasa bile çerez durumu kullanılabilir. Örneğin, bir hazır uygulama yükleme düğmesi tıklama işleyicisinden aşağıdaki kodu çağırabilir:
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);
}
Kullanıcı uygulamayı yüklemeyi tamamlarsa, yüklenen uygulama aşağıdaki kodu kullanarak çerez verilerini alabilir:
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.
}