Uygulama içi güncellemeleri destekleme (Unity)

Bu kılavuzda, uygulama içi reklamların güncellemelerine bakın. Her biri 100'den az gösterim alan uygulamanızda Kotlin programlamasının kullanıldığı durumlar için ayrı kılavuzlar veya Java programlama dili ve dilbilginizin uygulamada yerel kod (C/C++).

Geliştirme ortamınızı ayarlama

Play Uygulama İçi Güncelleme Unity Eklentisinin en son sürümünü şunun için Google paketlerinden indirin: Unity'yi tıklayın.

Unity SDK'ya genel bakış

Play uygulama içi güncelleme API'si, Play Core'un bir parçasıdır. SDK ailesi. Birlik Eklenti, AppUpdateManager sınıfını kullanın. Şunu yapmalısınız: uygulama içi güncellemeleri yönetmek için kullanmadan önce bu sınıfı örneklendirin:

AppUpdateManager appUpdateManager = new AppUpdateManager();

Güncelleme kullanılabilirliğini kontrol etme

Güncelleme isteğinde bulunmadan önce uygulamasını indirin. Güncelleme olup olmadığını kontrol etmek için AppUpdateManager kullanın. eş yordam:

IEnumerator CheckForUpdate()
{
  PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation =
    appUpdateManager.GetAppUpdateInfo();

  // Wait until the asynchronous operation completes.
  yield return appUpdateInfoOperation;

  if (appUpdateInfoOperation.IsSuccessful)
  {
    var appUpdateInfoResult = appUpdateInfoOperation.GetResult();
    // Check AppUpdateInfo's UpdateAvailability, UpdatePriority,
    // IsUpdateTypeAllowed(), etc. and decide whether to ask the user
    // to start an in-app update.
  }
  else
  {
    // Log appUpdateInfoOperation.Error.
  }
}

Döndürülen AppUpdateInfo örneği, güncelleme kullanılabilirlik durumunu içerir. Halihazırda bir uygulama içi güncelleme devam ediyorsa örnek, devam etmekte olan güncellemenin durumunu da bildirir.

Güncelleme eskiliğini kontrol etme

Bir güncelleme olup olmadığını kontrol etmenin yanı sıra, kullanıcıya bir güncellemenin bildirilmesinden bu yana ne kadar süre geçtiğini kontrol etme Play Store üzerinden satın alabilirsiniz. Bu, bir risk yönetimi planı başlatmanız gerekip gerekmediğine Esnek güncelleme veya anında güncelleme. Örneğin, proje ekibinin Kullanıcıya esnek bir güncellemeyle bildirmeden önce ve bunun ardından birkaç gün ve hemen bir güncelleme gerektirmeden çalışır.

Tekliflerinizi otomatikleştirmek ve optimize etmek için ClientVersionStalenessDays güncellemenin Play üzerinden kullanıma sunulmasından bu yana geçen gün sayısını kontrol etmek için Sakla:

var stalenessDays = appUpdateInfoOperation.ClientVersionStalenessDays;

Güncelleme önceliğini kontrol edin

Google Play Developer API, her güncellemenin önceliğini belirlemenize olanak tanır. Bu, uygulamanızın kullanıcıya ne kadar önemli bir güncelleme önereceğine karar vermesine olanak tanır. Örneğin, güncelleme önceliğini ayarlamak için aşağıdaki stratejiyi göz önünde bulundurun:

  • Kullanıcı arayüzünde küçük iyileştirmeler: Düşük öncelikli güncelleme; ne esnek ne de veya hemen bir güncelleme olması gerekir.
  • Performans iyileştirmeleri: Orta öncelikli güncelleme; esnek bir şekilde güncelleyin.
  • Kritik güvenlik güncellemesi: Yüksek öncelikli güncelleme; derhal istekte bulunma güncelleyin.

Google Play, önceliği belirlemek için 0 ile 5 arasında bir tam sayı değeri (0) kullanır 5 en yüksek önceliğe sahiptir. Bir güncellemek için Edits.tracks.releases altındaki inAppUpdatePriority alanını kullanın Google Play Geliştirici API'si. Bu sürüme eklenen tüm yeni sürümler yayınla aynı önceliğe sahip olduğunu kabul eder. Öncelik yalnızca şu durumlarda ayarlanabilir: ve daha sonra değiştirilemez.

Önceliği Google Play Geliştirici API'sini kullanarak Play Geliştirici API'sı dokümanlarına göz atın. Uygulama içi güncelleme önceliği Edit.tracks kaynak Edit.tracks: update yöntemidir. Aşağıdaki örnekte, sürüm kodu 88 olan bir uygulamanın yayınlanması gösterilmektedir ve inAppUpdatePriority 5:

{
  "releases": [{
      "versionCodes": ["88"],
      "inAppUpdatePriority": 5,
      "status": "completed"
  }]
}

Uygulamanızın kodunda, belirli bir güncellemenin öncelik düzeyini kontrol etmek için aşağıdakileri kullanabilirsiniz: UpdatePriority:

var priority = appUpdateInfoOperation.UpdatePriority;

Güncelleme başlatın

Bir güncelleme olduğundan emin olduktan sonra şunu kullanarak güncelleme isteğinde bulunabilirsiniz: AppUpdateManager.StartUpdate(). Güncelleme isteğinde bulunmadan önce bilgilerinizin güncel olduğundan emin olun. AppUpdateInfo nesne algılandı. Ayrıca bir AppUpdateOptions nesnesini tanımlayın.

Aşağıdaki örnekte, hemen kullanmak için bir AppUpdateOptions nesnesi güncelleme akışı:

// Creates an AppUpdateOptions defining an immediate in-app
// update flow and its parameters.
var appUpdateOptions = AppUpdateOptions.ImmediateAppUpdateOptions();

Aşağıdaki örnekte bir esnek değer için AppUpdateOptions nesnesi oluşturulur güncelleme akışı:

// Creates an AppUpdateOptions defining a flexible in-app
// update flow and its parameters.
var appUpdateOptions = AppUpdateOptions.FlexibleAppUpdateOptions();

AppUpdateOptions nesnesi ayrıca bir AllowAssetPackDeletion alanı içeriyor güncellemenin öğe silmesine izin verilip verilmediğini tanımlayan paketlerini kullanıma sunmaya dikkat edin. Bu alanı varsayılan olarak false değerine ayarlanır, ancak allowAssetPackDeletion ImmediateAppUpdateOptions() için isteğe bağlı bağımsız değişken veya Bunun yerine FlexibleAppUpdateOptions() tarafından true olarak ayarlanmalıdır:

// Creates an AppUpdateOptions for an immediate flow that allows
// asset pack deletion.
var appUpdateOptions =
  AppUpdateOptions.ImmediateAppUpdateOptions(allowAssetPackDeletion: true);

// Creates an AppUpdateOptions for a flexible flow that allows asset
// pack deletion.
var appUpdateOptions =
  AppUpdateOptions.FlexibleAppUpdateOptions(allowAssetPackDeletion: true);

Sonraki adımlar, esnek teklif isteğinde bulunup bulunmadığınıza bir güncelleme veya anında güncelleme yapılması gerekir.

Esnek güncellemeleri yönetme

Güncel bir AppUpdateInfo nesneniz ve uygun şekilde yapılandırılmış bir öğeniz olduğunda AppUpdateOptions nesnesini çağırarak AppUpdateManager.StartUpdate() öğesini çağırabilirsiniz. eşzamansız olarak güncelleme akışı isteyebilir.

IEnumerator StartFlexibleUpdate()
{
  // Creates an AppUpdateRequest that can be used to monitor the
  // requested in-app update flow.
  var startUpdateRequest = appUpdateManager.StartUpdate(
    // The result returned by PlayAsyncOperation.GetResult().
    appUpdateInfoResult,
    // The AppUpdateOptions created defining the requested in-app update
    // and its parameters.
    appUpdateOptions);

  while (!startUpdateRequest.IsDone)
  {
  // For flexible flow,the user can continue to use the app while
  // the update downloads in the background. You can implement a
  // progress bar showing the download status during this time.
  yield return null;
  }

}

Esnek güncelleme akışı için uygulama güncellemesinin yüklenmesini tetiklemeniz gerekir indirme işlemini tekrarlar. Bunun için şu numarayı arayın: AppUpdateManager.CompleteUpdate() aşağıdaki örnekte gösterildiği gibi:

IEnumerator CompleteFlexibleUpdate()
{
  var result = appUpdateManager.CompleteUpdate();
  yield return result;

  // If the update completes successfully, then the app restarts and this line
  // is never reached. If this line is reached, then handle the failure (e.g. by
  // logging result.Error or by displaying a message to the user).
}

Anlık güncelleme yapma

Güncel bir AppUpdateInfo nesneniz ve uygun şekilde yapılandırılmış bir öğeniz olduğunda AppUpdateOptions nesnesini çağırarak AppUpdateManager.StartUpdate() öğesini çağırabilirsiniz. eşzamansız olarak güncelleme akışı isteyebilir.

IEnumerator StartImmediateUpdate()
{
  // Creates an AppUpdateRequest that can be used to monitor the
  // requested in-app update flow.
  var startUpdateRequest = appUpdateManager.StartUpdate(
    // The result returned by PlayAsyncOperation.GetResult().
    appUpdateInfoResult,
    // The AppUpdateOptions created defining the requested in-app update
    // and its parameters.
    appUpdateOptions);
  yield return startUpdateRequest;

  // If the update completes successfully, then the app restarts and this line
  // is never reached. If this line is reached, then handle the failure (for
  // example, by logging result.Error or by displaying a message to the user).
}

Google Play, anında güncelleme akışı için kullanıcı onay iletişim kutusu gösterir. Kullanıcı isteği kabul ettiğinde Google Play otomatik olarak indirme işlemini ve güncellemeyi yükler, ardından emin olun.

Hata işleme

Bu bölümde, sık karşılaşılan hataların çözümleri açıklanmaktadır.

  • StartUpdate(), ArgumentNullException atarsa şu anlama gelir: AppUpdateInfo, null. AppUpdateInfo nesnesinin şuradan döndürüldüğünden emin olun: Güncelleme akışı başlatılmadan önce GetAppUpdateInfo() boş değerli değildir.
  • PlayAsyncOperation, ErrorUpdateUnavailable hata kodunu döndürürse aynı uygulamaya sahip güncellenmiş bir uygulama sürümü bulunduğundan emin olun. Kimlik ve imzalama anahtarı.
  • PlayAsyncOperation, ErrorUpdateNotAllowed hata kodunu döndürürse AppUpdateOptions nesnesinin kullanılabilir güncelleme için izin veriliyor. AppUpdateInfo nesnesinin olup olmadığını kontrol edin seçilen güncelleme türüne güncelleme başlamadan önce izin verildiğini gösterir akışı sağlar.

Sonraki adımlar

Doğrulamak için uygulamanızın uygulama içi güncellemelerini test edin doğru çalıştığından emin olun.