App Center Distribute – Unity Uygulama içi güncelleştirmeleri
Önemli
Visual Studio App Center 31 Mart 2025'te kullanımdan kaldırılıyor. Tamamen kullanımdan kaldırılana kadar Visual Studio App Center'ı kullanmaya devam edebilirsiniz ancak geçiş yapmayı düşünebileceğiniz birkaç önerilen alternatif vardır.
Destek zaman çizelgeleri ve alternatifleri hakkında daha fazla bilgi edinin.
App Center Dağıtımı, bir uygulamayı App Center aracılığıyla dağıttıktan sonra kullanıcılarınızın/test edenlerinizin yeni sürümlerini yüklemesini sağlar. Etkinleştirildikten sonra SDK, kullanıcılara en son güncelleştirmenin yüklenmesini indirmeleri veya ertelemeleri için bir güncelleştirme iletişim kutusu sunar. Sdk, güncelleştirmeyi seçtikten sonra uygulamanızı güncelleştirmeye başlar.
Önemli
Unity için Dağıtım SDK'sı UWP'yi desteklemez. Bu sayfadaki yönergeler yalnızca Android ve iOS'yi kapsar.
Uyarı
Google Play, çalışma zamanında kullanılmasa bile uygulama içi güncelleştirme kodunu kötü amaçlı davranış olarak kabul eder. Uygulamanızı Google Play'e göndermeden önce bu bölümde belirtildiği gibi bu kodu kaldırın. Uygulama içi güncelleştirme kodunun kaldırılmaması, uygulamanın Uyumsuzluk ve Google Play'den kaldırılmasına neden olabilir.
Not
Otomatik kullanıcı arabirimi testleri çalıştırıyorsanız, uygulama içi güncelleştirmeler app Center arka uçta kimlik doğrulaması yapmaya çalışacakları için otomatik ui testlerinizi engeller. Kullanıcı arabirimi testleriniz için uygulama içi güncelleştirmeleri devre dışı bırakmanızı öneririz.
App Center SDK modüler bir yaklaşımla tasarlanmıştır; bir geliştiricinin yalnızca ilgilendiği hizmetlerin modüllerini tümleştirmesi gerekir.
Uygulamanızda SDK'yı henüz ayarlamadıysanız ve başlatmadıysanız Unity kullanmaya başlama belgelerini izleyin. App Center Distribute paketini içeri aktardığından emin olun. Adı biçiminde AppCenterDistribute-v{version}.unitypackage
olmalıdır.
Not
Android 10 veya üzeri sürümlerde arka planda başlatma etkinliği kısıtlamaları vardır. Etkinlikleri arka planda başlatma kısıtlamaları hakkındaki makaleye bakın.
Not
Android 10 (Go sürümü) üzerinde çalışan uygulamalar SYSTEM_ALERT_WINDOW izni alamaz. Go cihazlarında SYSTEM_ALERT_WINDOW hakkındaki makaleye bakın.
Not
Android 11'de başlayarak, ACTION_MANAGE_OVERLAY_PERMISSION
amaçlar kullanıcıyı her zaman üst düzey Ayarlar ekranına getirir ve burada kullanıcı uygulamalar için izinleri verebilir veya iptal SYSTEM_ALERT_WINDOW
edebilir. Android 11'de izin güncelleştirmeleri hakkındaki makaleye bakın.
Google Play, çalışma zamanında kullanılmasa bile uygulama içi güncelleştirme kodunu kötü amaçlı davranış olarak kabul eder. Uygulamanızı Google Play'e göndermeden önce bu kodu kaldırın. Uygulama içi güncelleştirme kodunun kaldırılmaması, uygulamanın Uyumsuzluk ve Google Play'den kaldırılmasına neden olabilir. Uygulama içi güncelleştirme yerel kodunu kaldırmak için, AppCenterBehavior ekli oyun nesnesinin Dağıt bölümünün altındaki Dağıt'ı Kullan onay kutusunun işaretini kaldırın.
Varsayılan olarak, Distribute bir genel dağıtım grubu kullanır. Özel dağıtım grubu kullanmak istiyorsanız Özel olarak değiştirmeniz UpdateTrack
gerekir.
Bunu yapmak için, AppCenterBehavior ekli oyun nesnesinin Dağıt bölümündeki İzlemeyiGüncelleştir açılan listesinde Özel'i seçin.
Özel parça kullanılırken, kullanıcının kimliğini doğrulamak için bir tarayıcı penceresi açılır. Sonraki tüm güncelleştirme denetimleri, özel parçada en son sürümü alır.
Bir kullanıcı özel yoldaysa, başarılı kimlik doğrulamasından sonra üyesi olduğu tüm özel dağıtım gruplarından en son sürümü alacakları anlamına gelir. Bir kullanıcı genel yoldaysa, herhangi bir genel dağıtım grubundan en son sürümü edinebilecekleri anlamına gelir.
Varsayılan olarak, SDK yeni sürümleri otomatik olarak denetler:
- Uygulama başlatıldığında.
- Uygulama arka plana geçtiğinde yeniden ön planda olur.
- Daha önce devre dışı bırakılmışsa Dağıt modülünü etkinleştirirken.
Yeni sürümleri el ile denetlemek istiyorsanız, güncelleştirme için otomatik denetimi devre dışı bırakabilirsiniz.
Bunu yapmak için, AppCenterBehavior ekli oyun nesnesinin Dağıt bölümündeki Otomatik Güncelleştirme Denetimi onay kutusunun işaretini kaldırın.
Ardından, aşağıdaki bölümde açıklanan API'yi kullanabilirsiniz CheckForUpdate
.
Distribute.CheckForUpdate();
Bu, App Center'a bir istek gönderir ve yeni bir sürüm olması durumunda bir güncelleştirme iletişim kutusu görüntüler.
Not
Otomatik güncelleştirmeler etkinleştirildiğinde bile el ile güncelleştirme araması denetimi çalışır. Başka bir denetim zaten yapılıyorsa el ile güncelleştirme denetimi yoksayılır. Kullanıcı güncelleştirmeleri ertelediyse el ile güncelleştirme denetimi işlenmez (en son sürüm zorunlu bir güncelleştirme olmadığı sürece).
Güncelleştirme iletişim kutusunda görüntülenen metni yerelleştirmek istiyorsanız kendi kaynak dizelerinizi sağlayabilirsiniz. Bu iOS kaynak dosyasında iOS için dize dosyalarına ve buAndroid kaynak dosyasında android için dize dosyalarına bakın. Aynı dize adını/anahtarını kullanın ve kendi uygulama kaynak dosyalarınızdaki iletişim kutusuna yansıtılacak yerelleştirilmiş değeri belirtin.
Geri çağırmayı uygulayarak ReleaseAvailable
varsayılan güncelleştirme iletişim kutusunun görünümünü özelleştirebilirsiniz.
Uyarı
Herhangi bir yayın geri Awake
çağırmasının eksik olmasını önlemek için geri çağırmayı uygulamanızın yük olduğu ilk sahnedeki yöntemine MonoBehaviour
kaydetmeniz gerekir.
// In this example, OnReleaseAvailable is a method name in same class
Distribute.ReleaseAvailable = OnReleaseAvailable;
SDK iletişim kutusunu özel mantıkla değiştiren bir geri çağırma uygulaması aşağıda verilmiştir:
bool OnReleaseAvailable(ReleaseDetails releaseDetails)
{
// Look at releaseDetails public properties to get version information, release notes text or release notes URL
string versionName = releaseDetails.ShortVersion;
string versionCodeOrBuildNumber = releaseDetails.Version;
string releaseNotes = releaseDetails.ReleaseNotes;
Uri releaseNotesUrl = releaseDetails.ReleaseNotesUrl;
// (Do something with the values if you want)
// On mandatory update, user can't postpone
if (releaseDetails.MandatoryUpdate)
{
// Force user to update (you should probably show some custom UI here)
Distribute.NotifyUpdateAction(UpdateAction.Update);
}
else
{
// Allow user to update or postpone (you should probably show some custom UI here)
// "GetUserUpdateAction()" isn't part of the SDK; it just represents a way of getting user response.
// This blocks the thread while awaiting the user's response! This example shouldn't be used literally
UpdateAction updateAction = GetUserUpdateAction();
Distribute.NotifyUpdateAction(updateAction);
}
// Return true if you're using your own UI to get user response, false otherwise
return true;
}
Android için uygulama notları:
Örnekte gösterildiği gibi, veya geri aramanız döndürüyorsa true
öğesini çağırmalısınız.Distribute.NotifyUpdateAction(UpdateAction.UPDATE);
Distribute.NotifyUpdateAction(UpdateAction.POSTPONE);
çağrısı NotifyUpdateAction
yapmazsanız, geri arama her etkinlik değişikliğinde yinelenir.
Kullanıcı eylemi SDK'ya bildirilmeden önce etkinlik değişirse, geri çağırma aynı sürümle yeniden çağrılabilir.
Bu davranış aşağıdaki senaryoları kapsayacak şekilde gereklidir:
- Uygulamanız arka plana gönderilir ( HOME tuşuna basma gibi) sonra farklı bir etkinlikte sürdürülür.
- Etkinliğiniz, uygulamadan çıkmadan (bazı bildirimlere tıklamak gibi) başka bir etkinlik kapsamındadır.
- Yukarıdakine benzer senaryolar.
Bu durumda, iletişim kutusunu barındıran etkinlik kullanıcı etkileşimi olmadan değiştirilebilir. Bu nedenle SDK, özel iletişim kutusunu geri yükleyebilmeniz için dinleyiciyi yeniden çağırır.
SDK güncelleştirmeleri denetlediğinde ve şu anda kullanılandan daha yeni kullanılabilir güncelleştirmeler bulamadığında bir NoReleaseAvailable
geri çağırma çağrılır. Bu, bu tür senaryolarda özel kod yürütmenize olanak tanır.
Aşağıdaki örnekte gösterildiği gibi çağırmadan AppCenter.Start
önce geri çağırmayı kaydetmeniz gerekir:
// In this example OnNoReleaseAvailable is a method name in same class
Distribute.NoReleaseAvailable = OnNoReleaseAvailable;
AppCenter.Start(...);
void OnNoReleaseAvailable()
{
AppCenterLog.Info(LogTag, "No release available callback invoked.");
}
## Enable or disable App Center Distribute at runtime
You can enable and disable App Center Distribute at runtime. If you disable it, the SDK won't provide any in-app update functionality but you can still use the Distribute service in the App Center portal.
To disable the Distribute service, use the following code:
```csharp
Distribute.SetEnabledAsync(false);
App Center Distribute'ı yeniden etkinleştirmek için aynı API'yi kullanın ancak parametre olarak geçirin true
.
Distribute.SetEnabledAsync(true);
Bu API zaman uyumsuzdur, hakkında daha fazla bilgiyi App Center Zaman Uyumsuz API'ler kılavuzumuzdan okuyabilirsiniz.
Diğer API çağrılarını (örneğin IsEnabledAsync
) tutarlı hale getirmek için bu çağrıyı beklemeniz gerekmez.
Durum, uygulama başlatmaları arasında cihazın depolama alanında kalıcı hale geldi.
App Center Distribute'ın etkinleştirilip etkinleştirilmediğini de de de kontrol edebilirsiniz:
Distribute.IsEnabledAsync();
Bu API zaman uyumsuzdur, hakkında daha fazla bilgiyi App Center Zaman Uyumsuz API'ler kılavuzumuzdan okuyabilirsiniz.
Varsayılan olarak uygulama içi güncelleştirmeler yalnızca sürüm derlemeleri için etkinleştirilir.
Android ve iOS'ta hata ayıklama derlemelerinde uygulama içi güncelleştirmeleri etkinleştirmek için AppCenterBehavior'ın ekli olduğu oyun nesnesinin Dağıt bölümündeki Hata Ayıklamada Dağıt'ı Etkinleştir onay kutusunu işaretleyin.
Unity'de hata ayıklanabilir derleme, Geliştirme derleme seçeneği işaretli bir derlemedir .
Not
Bu geri arama yalnızca iOS'ta çalışır.
Aşağıdaki örnekte gösterildiği gibi geri aramayı kaydedin:
// In this example, OnWillExitApp is a method name in same class
Distribute.WillExitApp = OnWillExitApp;
void OnWillExitApp()
{
// Perform clean up here
}
Bununla birlikte, OnWillExitApp()
Dağıt kapanmak üzere olduğunda çağrılır.
Not
Uygulama içi güncelleştirmelerin çalışması için bağlantıdan bir uygulama derlemesi indirilmelidir. IDE'den veya el ile yüklenirse çalışmaz.
Uygulama içi güncelleştirmeler özelliği aşağıdaki gibi çalışır:
- Bu özellik yalnızca App Center Distribute hizmeti kullanılarak dağıtılan RELEASE derlemeleriyle (varsayılan olarak) çalışır. iOS Destekli Erişim özelliği açıksa çalışmaz.
- SDK'yı tümleştirdikten sonra uygulamanızın bir yayın sürümünü derleyin ve App Center'a yükleyin. Dağıtım grubundaki kullanıcılara yeni sürüm hakkında e-posta yoluyla bildirim gönderilir.
- Her kullanıcı bağlantıyı kendi e-postasında açtığında, uygulama kendi cihazına yüklenir. Yüklemek için e-posta bağlantısını kullanmaları önemlidir; dışarıdan yüklemeyi desteklemiyoruz. Bağlantıdan bir uygulama indirildiğinde SDK, güncelleştirmeleri daha sonra denetlemek için tanımlama bilgilerinden önemli bilgileri kaydeder, aksi takdirde SDK bu anahtar bilgilerine sahip değildir.
- Uygulama izlemeyi özel olarak ayarlarsa, kullanıcının kimliğini doğrulamak ve uygulama içi güncelleştirmeleri etkinleştirmek için bir tarayıcı açılır. Genel izne geri dönüp daha sonra tekrar özel sürüme geçtiğinde bile kimlik doğrulama bilgileri geçerli kaldığı sürece tarayıcı yeniden açılmaz. Tarayıcı kimlik doğrulaması başarılı olursa, kullanıcı otomatik olarak uygulamaya yeniden yönlendirilir. Parça genel ise (varsayılan değerdir), bir sonraki adım doğrudan gerçekleşir.
- Uygulamanın yeni sürümünde, aşağıdaki durumlarda kullanıcıların uygulamanızı güncelleştirmesini isteyen uygulama içi güncelleştirme iletişim kutusu gösterilir:
- iOS:
- veya değerinin daha yüksek bir
CFBundleShortVersionString
değeri - değerine eşit
CFBundleShortVersionString
ancak değeri daha yüksektirCFBundleVersion
. - sürümler aynıdır, ancak derleme benzersiz tanımlayıcısı farklıdır.
- veya değerinin daha yüksek bir
- Android:
- veya değerinin daha yüksek bir
versionCode
değeri - değerinin
versionCode
eşit ancak farklı bir değerinin değeridirversionName
.
- veya değerinin daha yüksek bir
- iOS:
İpucu
Aynı .apk/.ipa dosyasını ikinci kez karşıya yüklerseniz, ikili dosyalar aynı olduğundan iletişim kutusu görüntülenmez. iOS'ta, aynı sürüm özelliklerine sahip yeni bir derlemeyi karşıya yüklerseniz güncelleştirme iletişim kutusu gösterilir. Bunun nedeni farklı bir ikili olmasıdır. Android'de her iki sürüm özelliği de aynıysa ikili dosyalar aynı kabul edilir.
Uygulama içi güncelleştirmeleri test etmek ve her seferinde sürüm numaralarını artırmak için yayın derlemelerini (App Center SDK'sının Distribute modülünü kullanan) App Center Portalı'na yüklemeniz gerekir.
- Henüz yapmadıysanız uygulamanızı App Center Portalı'nda oluşturun.
- Yeni bir dağıtım grubu oluşturun ve bir ad verin.
- Kendinizi (veya uygulama içi güncelleştirme özelliği testinize dahil etmek istediğiniz tüm kişileri) ekleyin. Bu adım için, bu uygulamayla önceden kullanılmayan yeni veya atmış bir e-posta adresi kullanın. Bu, deneyiminizin gerçek testçilerinizin deneyimine yakın olmasını sağlar.
- Uygulamanızın App Center Distribute içeren ve aşağıda açıklandığı gibi kurulum mantığını içeren yeni bir derlemesi oluşturun. Grup özelse, özelliğini kullanmaya başlamadan önce özel uygulama içi güncelleştirme izlemesini ayarlamayı
UpdateTrack
unutmayın. - Portalda Yeni sürümü dağıt düğmesine tıklayın ve uygulama derlemenizi karşıya yükleyin.
- Karşıya yükleme tamamlandıktan sonra İleri'ye tıklayın ve daha önce bu uygulama dağıtımının Hedefi olarak oluşturduğunuz Dağıtım grubunu seçin.
- Dağıtım'ı gözden geçirin ve derlemeyi uygulama içi test grubunuz için dağıtın.
- Bu gruptaki Kişiler, uygulamanın test edicisi olmak için bir davet alır. Daveti kabul ettikten sonra uygulamayı mobil cihazlarından App Center Portalı'ndan indirebilirler. Uygulama içi güncelleştirmeler yüklendikten sonra, uygulama içi güncelleştirmeleri test etmeye hazırsınız demektir.
- Uygulamanızın sürümünü (
CFBundleShortVersionString
veyaCFBundleVersion
Android için iOSversionCode
için) çarpın. - Uygulamanızın yayın sürümünü oluşturun ve önceki adımda yaptığınız gibi yeni bir derleme yükleyin. Daha önce oluşturduğunuz Dağıtım Grubuna dağıtın. Uygulama bir sonraki başlatılışında Dağıtım Grubu üyelerinden yeni bir sürüm istenir.
İpucu
Dağıtım Grupları vb. hakkında daha ayrıntılı bilgi için App Center Distribute'ın nasıl kullanıldığına ilişkin bilgilere göz atın. Herhangi bir kod eklemeden uygulamanızın yeni bir sürümünü dağıtmak için App Center Distribute'ı kullanmak mümkün olsa da uygulamanızın koduna App Center Distribute eklemek, test edenleriniz ve kullanıcılarınız uygulama içi güncelleştirme deneyimini edindikçe daha sorunsuz bir deneyime neden olur.