Uyarı: Google Play Instant artık kullanılamayacak. Aralık 2025'ten itibaren, Hazır Uygulamalar Google Play üzerinden yayınlanamayacak ve tüm Google Play Hizmetleri Instant API'leri artık çalışmayacak. Kullanıcılara artık herhangi bir mekanizma kullanılarak Play tarafından anlık uygulamalar sunulmayacak.
Bu değişikliği, geliştiricilerden gelen geri bildirimler ve Google Play Anında'nın kullanıma sunulmasından bu yana ekosistemi iyileştirmek için yaptığımız sürekli yatırımlar doğrultusunda yapıyoruz.
Kullanıcı sayısını artırmaya yönelik optimizasyona devam etmek için geliştiricilerin, kullanıcıları normal uygulama veya oyunlarına yönlendirmesini öneririz. Geliştiriciler, kullanıcıları alakalı durumlarda belirli yolculuklara veya özelliklere yönlendirmek için derin bağlantılardan yararlanabilir.
Unity için Google Play Hazır Uygulama eklentisi, Unity projenizi oyununuzun hazır 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 indirip içe aktarma
Eklenti, Unity için Google Play eklentilerinin bir parçasıdır. Eklentiyi içe aktarmak için aşağıdaki adımları uygulayın:
- En son sürümü Unity'ye özel Google Play eklentileri sürümlerinden indirin.
- Unity IDE menü seçeneği Öğeler > Paketi içe aktar > Özel Paket'i belirleyip tüm öğeleri içe aktararak
.unitypackagedosyasını içe aktarın.
Unity Editor özellikleri
Unity'de Google > Play Instant alt menüsü eklemek için eklentiyi içe aktarın. Bu alt menüde aşağıdaki seçenekler bulunur.
Derleme Ayarları
Yüklü ve Anında geliştirme modları arasında geçiş yapmayı sağlayan bir pencere açar. Anında'ya geçiş yapıldığında aşağıdaki değişiklikler uygulanır:
#if PLAY_INSTANTve#endifile komut dosyası oluşturmak için kullanılabilecekPLAY_INSTANTadlı bir Scripting Define Symbol oluşturur.- android:targetSandboxVersion gibi belirli zorunlu değişiklikler için AndroidManifest.xml dosyasındaki güncellemeleri yönetir.
Oynatıcı Ayarları
Şekil 1'de gösterilen Player Settings (Oynatıcı Ayarları) iletişim kutusunda, Google Play Instant desteğini optimize etmenize, daha uyumlu grafik API'leri kullanarak geliştirme yapmanıza ve APK'nızın boyutunu küçültmenize yardımcı olacak öneriler gösterilir.
Bu oynatıcı ayarları Gerekli ve Önerilen ayarlar olarak ikiye ayrılır. Bir ayarın karşılığında Güncelle düğmesi varsa ayarı tercih edilen değere değiştirmek için bu düğmeyi tıklayın.
APK boyutunu daha da küçültmek için Unity Package Manager'ı açın ve kullanılmayan paketleri kaldırın.
Hızlı Dağıtım
Hızlı dağıtım, bazı öğeleri AssetBundle'a paketleyerek Unity tabanlı bir hazır uygulamanın boyutunu küçültebilir. Hızlı Dağıtım kullanılırken Unity oyun motoru ve yükleme ekranı, hazır uygulama APK'sına paketlenir. Hazır uygulama başlatıldıktan sonra AssetBundle, bir sunucudan alınır.
Yükleme iş akışlarını destekleme
Birçok hazır uygulamanın amacı, kullanıcılara uygulamanın tam sürümünü yüklemeden önce deneyimleme fırsatı sunmaktır. Unity için Google Play Instant eklentisi, Play Store yükleme iletişim kutusunu göstermeye ve durumu anlık uygulamadan yüklenen uygulamaya aktarmaya yönelik API'ler sağlar.
Yükleme istemi gösterme
Yükle düğmesi olan bir hazır uygulama, yükleme düğmesi tıklama işleyicisinden aşağıdakiler çağrılarak Play Store yükleme iletişim kutusu gösterebilir:
Google.Play.Instant.InstallLauncher.ShowInstallPrompt();
ShowInstallPrompt() yönteminde, aşağıdakilerden bir veya daha fazlasına izin veren bir aşırı yükleme vardır:
- Kullanıcının yükleme işlemini iptal edip etmediğini belirleme Hazır uygulamanın ana etkinliğinde
onActivityResult()değerini geçersiz kılın ve belirtilenrequestCodeüzerindeRESULT_CANCELEDdeğerini kontrol edin. referrerparametresi aracılığıyla yükleme yönlendiren dizesini iletme.PutPostInstallIntentStringExtra()aracılığıyla mevcut oyun oturumuyla ilgili durumu iletme.
Bunlar aşağıdaki örnekte gösterilmektedir:
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üklemesini tamamlarsa Play Store, sağlanan postInstallIntent 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");
Notlar:
- Kullanıcı uygulamayı yükleyip yükleme sonrası başlatma işlemini iptal ederse
postInstallIntentiçinde yer alan ekstralar yüklenen uygulamaya ulaşmayabilir. Niyet ekstralarını iletmek, kalıcı durumu korumaktan ziyade etkin oturum durumunu korumak için daha uygundur. Kalıcı durumu korumak için Cookie API'ye bakın. - Herkes, yüklü uygulamayı başlatmak için ek alanlar içeren bir amaç oluşturabilir. Bu nedenle, yük değerli bir şey veriyorsa yükü yalnızca bir kez kullanılabilecek şekilde tasarlayın, kriptografik olarak imzalayın ve imzayı bir sunucuda doğrulayın.
Cookie API'yi kullanma
Cookie API, bir çerezi (ör. oyuncu kimliği veya seviye tamamlama verileri) anlık uygulamadan karşılık gelen yüklü uygulamaya geçirmek için yöntemler sağlar. postInstallIntent ekstralarının aksine, kullanıcı yüklü uygulamayı hemen başlatmasa bile çerez durumu kullanılabilir. Örneğin, bir anlık 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ı uygulama yüklemesini 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.
}