Udostępnij przez


Dystrybucja w usłudze App Center — aktualizacje w aplikacji Unity

Ważne

Program Visual Studio App Center został wycofany 31 marca 2025 r. z wyjątkiem funkcji analizy i diagnostyki, które będą nadal obsługiwane do 30 czerwca 2026 r. Dowiedz się więcej.

Dystrybucja usługi App Center umożliwia użytkownikom/testerom instalowanie nowych wersji aplikacji po jej rozpowszechnianiu za pośrednictwem Centrum aplikacji. Po włączeniu zestawu SDK zostanie wyświetlone okno dialogowe aktualizacji dla użytkowników w celu pobrania lub odroczenia instalacji najnowszej aktualizacji. Po wybraniu aktualizacji zestaw SDK zacznie aktualizować aplikację.

Ważne

Zestaw SDK Distribute dla Unity nie obsługuje UWP. Instrukcje na tej stronie obejmują tylko systemy Android i iOS.

Ostrzeżenie

Sklep Google Play traktuje kod aktualizacji w aplikacji jako złośliwe zachowanie, nawet jeśli nie jest używany w czasie wykonywania. Usuń ten kod zgodnie z zaleceniami w tej sekcji przed przesłaniem aplikacji do sklepu Google Play. Nie można usunąć kodu aktualizacji w aplikacji może prowadzić do niezgodności i usunięcia aplikacji ze sklepu Google Play.

Uwaga / Notatka

Jeśli uruchamiasz zautomatyzowane testy interfejsu użytkownika, włączone aktualizacje w aplikacji zablokują automatyczne testy interfejsu użytkownika, ponieważ będą one próbowały uwierzytelnić się w zapleczu Centrum aplikacji. Zalecamy wyłączenie aktualizacji w aplikacji dla testów interfejsu użytkownika.

Dodaj aktualizacje wewnątrz aplikacji

Dodawanie modułu dystrybucji usługi App Center

Zestaw SDK centrum aplikacji został zaprojektowany z modułowym podejściem — deweloper musi tylko zintegrować moduły usług, których interesują.

Postępuj zgodnie z dokumentacją Unity rozpoczynanie pracy, jeśli jeszcze nie skonfigurowałeś i nie uruchomiłeś zestawu SDK w swojej aplikacji. Upewnij się, że zaimportujesz pakiet App Center Distribute. Jego nazwa powinna mieć format AppCenterDistribute-v{version}.unitypackage.

Uwaga / Notatka

System Android 10 lub nowszy ma ograniczenia dotyczące uruchamiania aplikacji w tle. Zobacz artykuł dotyczący ograniczeń dotyczących uruchamiania działań w tle.

Uwaga / Notatka

Aplikacje działające w systemie Android 10 (wersja Go) nie mogą otrzymać uprawnienia SYSTEM_ALERT_WINDOW . Zobacz artykuł dotyczący SYSTEM_ALERT_WINDOW na urządzeniach Go.

Uwaga / Notatka

Począwszy od systemu Android 11, ACTION_MANAGE_OVERLAY_PERMISSION polecenia zawsze przenoszą użytkownika na główny ekran Ustawień, gdzie może on przyznać lub cofnąć SYSTEM_ALERT_WINDOW uprawnienia dla aplikacji. Zobacz artykuł dotyczący aktualizacji uprawnień w systemie Android 11.

Usuwanie aktualizacji w aplikacji dla kompilacji ze sklepu Google Play

Sklep Google Play traktuje kod aktualizacji w aplikacji jako złośliwe zachowanie, nawet jeśli nie jest używany w czasie wykonywania. Usuń ten kod przed przesłaniem aplikacji do sklepu Google Play. Nie można usunąć kodu aktualizacji w aplikacji może prowadzić do niezgodności i usunięcia aplikacji ze sklepu Google Play. Aby usunąć natywny kod dotyczący aktualizacji w aplikacjach, odznacz pole wyboru Użyj dystrybucji w sekcji Dystrybucja w obiekcie gry z dołączonym komponentem AppCenterBehavior.

Korzystanie z prywatnej grupy dystrybucyjnej

Domyślnie usługa Distribute używa publicznej grupy dystrybucyjnej. Jeśli chcesz użyć prywatnej grupy dystrybucyjnej, musisz zmienić wartość UpdateTrack na Prywatna. W tym celu wybierz pozycję Prywatny na liście rozwijanej Śledzenie aktualizacji w sekcji Dystrybucja obiektu gry z dołączonym programem AppCenterBehavior .

W przypadku korzystania z ścieżki prywatnej zostanie otwarte okno przeglądarki w celu uwierzytelnienia użytkownika. Wszystkie kolejne kontrole aktualizacji będą otrzymywać najnowszą wersję na ścieżce prywatnej.

Jeśli użytkownik znajduje się na ścieżce prywatnej, oznacza to, że po pomyślnym uwierzytelnieniu otrzymają najnowszą wersję z dowolnych prywatnych grup dystrybucyjnych, do których należy. Jeśli użytkownik znajduje się na ścieżce publicznej, oznacza to, że uzyska najnowszą wersję z dowolnej publicznej grupy dystrybucyjnej.

Wyłączanie automatycznego sprawdzania aktualizacji

Domyślnie zestaw SDK automatycznie sprawdza nowe wersje:

  • Po uruchomieniu aplikacji.
  • Gdy aplikacja przejdzie w tło, a następnie ponownie na pierwszy plan.
  • Włączenie modułu Distribute, jeśli był wcześniej wyłączony.

Jeśli chcesz ręcznie sprawdzić dostępność nowych wersji, możesz wyłączyć automatyczne sprawdzanie aktualizacji.

Aby to zrobić, usuń zaznaczenie pola wyboru Automatyczne sprawdzanie aktualizacji w sekcji Dystrybucja w obiekcie gry z dołączonym programem AppCenterBehavior .

Następnie możesz użyć interfejsu CheckForUpdate API opisanego w poniższej sekcji.

Ręczne sprawdzanie pod kątem aktualizacji

Distribute.CheckForUpdate();

Spowoduje to wysłanie żądania do Centrum aplikacji i wyświetlenie okna dialogowego aktualizacji na wypadek dostępności nowej wersji.

Uwaga / Notatka

Ręczne sprawdzanie wywołania aktualizacji działa nawet wtedy, gdy są włączone aktualizacje automatyczne. Ręczne sprawdzanie aktualizacji jest ignorowane, jeśli jest już wykonywane inne sprawdzanie. Ręczna kontrola aktualizacji nie zostanie przetworzona, jeśli użytkownik odroczył aktualizacje (chyba że najnowsza wersja jest obowiązkową aktualizacją).

Dostosowywanie lub lokalizowanie okna dialogowego aktualizacji w aplikacji

1. Dostosowywanie lub lokalizowanie tekstu

Możesz podać własne ciągi zasobów, jeśli chcesz zlokalizować tekst wyświetlany w oknie dialogowym aktualizacji. Zapoznaj się z plikami ciągów dla systemu iOS w tym pliku zasobów systemu iOS i dla systemu Android w tym pliku zasobów systemu Android. Użyj tej samej nazwy/klucza ciągu i określ zlokalizowaną wartość, która ma zostać odzwierciedlona w oknie dialogowym we własnych plikach zasobów aplikacji.

2. Dostosowywanie okna dialogowego aktualizacji

Wygląd domyślnego okna dialogowego aktualizacji można dostosować, implementując wywołanie ReleaseAvailable zwrotne.

Ostrzeżenie

Musisz zarejestrować wywołanie zwrotne w metodzie Awake obiektu MonoBehaviour w pierwszej scenie ładowanej przez aplikację, aby uniknąć pominięcia wywołań zwrotnych zwalniania.

// In this example, OnReleaseAvailable is a method name in same class
Distribute.ReleaseAvailable = OnReleaseAvailable;

Oto implementacja wywołania zwrotnego, która zastępuje okno dialogowe zestawu SDK niestandardową logiką:

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;
}

Uwagi dotyczące implementacji dla systemu Android:

Jak pokazano w przykładzie, należy wywołać Distribute.NotifyUpdateAction(UpdateAction.UPDATE); lub Distribute.NotifyUpdateAction(UpdateAction.POSTPONE);, jeśli wywołanie zwrotne skutkuje true.

Jeśli nie wywołasz NotifyUpdateAction, wywołanie zwrotne będzie powtarzane przy każdej zmianie aktywności.

Wywołanie zwrotne można wywołać ponownie z tą samą wersją, jeśli działanie zmieni się przed powiadomieniem zestawu SDK o działaniach użytkownika.

To zachowanie jest wymagane do pokrycia następujących scenariuszy:

  • Aplikacja jest wysyłana do tła (na przykład naciśnięcie przycisku STRONA GŁÓWNA), a następnie wznowiona w innym działaniu.
  • Twoje działanie jest przykrywane przez inne działanie bez opuszczania aplikacji (na przykład klikając w pewne powiadomienia).
  • Podobne scenariusze do powyższych.

W takim przypadku działanie hostujące okno dialogowe może zostać zastąpione bez interakcji użytkownika. Dlatego SDK ponownie wywołuje odbiornik, aby można było przywrócić niestandardowy dialog.

3. Wykonaj kod, jeśli nie znaleziono aktualizacji

Kiedy zestaw SDK sprawdza dostępność aktualizacji i nie znajdzie żadnej aktualizacji nowszej niż aktualnie używana, wywoływane jest NoReleaseAvailable wywołanie zwrotne. Umożliwia to wykonywanie niestandardowego kodu w takich scenariuszach. Musisz zarejestrować wywołanie zwrotne przed wywołaniem AppCenter.Start, jak pokazano w poniższym przykładzie.

// 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);

Aby ponownie włączyć funkcję App Center Distribute, użyj tego samego interfejsu API, ale przekaż true jako parametr.

Distribute.SetEnabledAsync(true);

Ten interfejs API jest asynchroniczny. Więcej informacji można uzyskać w naszym przewodniku asynchronicznych interfejsów API centrum aplikacji .

Nie musisz czekać na to wywołanie, aby inne wywołania interfejsu API (takie jak IsEnabledAsync) były spójne.

Stan jest utrwalany w magazynie urządzenia w ramach uruchamiania aplikacji.

Sprawdzanie, czy usługa App Center Distribute jest włączona

Możesz również sprawdzić, czy usługa App Center Distribute jest włączona:

Distribute.IsEnabledAsync();

Ten interfejs API jest asynchroniczny. Więcej informacji można uzyskać w naszym przewodniku asynchronicznych interfejsów API centrum aplikacji .

Włączanie aktualizacji wewnątrz aplikacji dla wersji debug

Domyślnie aktualizacje w aplikacji są włączone tylko dla wersji produkcyjnych.

Aby umożliwić aktualizacje w aplikacji podczas kompilacji debugowania na Androidzie i iOS, zaznacz pole wyboru Włącz dystrybucję w debugowaniu w sekcji Dystrybucja na obiekcie gry z dołączonym komponentem AppCenterBehavior.

Zachowanie Centrum Aplikacji

W środowisku Unity kompilacja z możliwością debugowania jest kompilacją z zaznaczoną opcją kompilacji deweloperskiej.

Wykonaj czyszczenie bezpośrednio przed zamknięciem aplikacji na potrzeby aktualizacji

Uwaga / Notatka

To wywołanie zwrotne działa tylko w systemie iOS.

Zarejestruj wywołanie zwrotne zgodnie z poniższym przykładem:

// In this example, OnWillExitApp is a method name in same class
Distribute.WillExitApp = OnWillExitApp;
void OnWillExitApp()
{
    // Perform clean up here
}

W tym celu zostanie wywołana, OnWillExitApp() gdy funkcja Distribute wkrótce zostanie zamknięta.

Jak działają aktualizacje w aplikacji

Uwaga / Notatka

Aby aktualizacje w aplikacji działały, należy pobrać kompilację aplikacji z linku. Nie będzie działać, jeśli zainstalowano je ze środowiska IDE lub ręcznie.

Funkcja aktualizacji w aplikacji działa w następujący sposób:

  1. Ta funkcja działa tylko z kompilacjami RELEASE, które są domyślnie dystrybuowane przy użyciu usługi App Center Distribute. Nie będzie działać, jeśli funkcja dostępu z przewodnikiem systemu iOS jest włączona.
  2. Po zintegrowaniu zestawu SDK utwórz wersję wydania aplikacji i przekaż ją do Centrum aplikacji. Użytkownicy w grupie dystrybucyjnej są powiadamiani o nowej wersji za pośrednictwem poczty e-mail.
  3. Gdy każdy użytkownik otworzy link w wiadomości e-mail, aplikacja zostanie zainstalowana na swoim urządzeniu. Ważne jest, aby użyli linku z e-maila do instalacji — nie wspieramy instalacji z nieoficjalnych źródeł. Po pobraniu aplikacji z linku zestaw SDK zapisuje ważne informacje z plików cookie w celu późniejszego sprawdzania dostępności aktualizacji. W przeciwnym razie zestaw SDK nie zawiera tych kluczowych informacji.
  4. Jeśli aplikacja ustawia ścieżkę na prywatną, przeglądarka otworzy się w celu uwierzytelnienia użytkownika i włączenia aktualizacji w aplikacji. Przeglądarka nie będzie ponownie otwierana, o ile informacje o uwierzytelnieniu pozostają prawidłowe, nawet gdy przełączasz się z powrotem na kanał publiczny, a następnie ponownie na kanał prywatny. Jeśli uwierzytelnianie przeglądarki zakończy się pomyślnie, użytkownik zostanie automatycznie przekierowany z powrotem do aplikacji. Jeśli utwór jest publiczny (co jest ustawieniem domyślnym), następny krok odbywa się bezpośrednio.
  5. W nowej wersji aplikacji jest wyświetlane okno dialogowe aktualizacji w aplikacji z prośbą użytkowników o zaktualizowanie aplikacji w następujących przypadkach:
    • Ios:
      • wyższa wartość CFBundleShortVersionString lub
      • równą wartość CFBundleShortVersionString, ale wyższą wartość CFBundleVersion.
      • wersje są takie same, ale unikatowy identyfikator kompilacji jest inny.
    • Android:
      • wyższa wartość versionCode lub
      • taka sama wartość versionCode, ale inna wartość versionName.

Wskazówka

Jeśli przekażesz tę samą .apk/.ipa po raz drugi, okno dialogowe nie będzie wyświetlane, ponieważ pliki binarne są identyczne. W systemie iOS, jeśli przekażesz nową kompilację z tymi samymi właściwościami wersji, zostanie wyświetlone okno dialogowe aktualizacji. Przyczyną tego jest to, że jest to inny plik binarny. W systemie Android pliki binarne są traktowane tak samo, jeśli obie właściwości wersji są takie same.

Jak przetestować aktualizacje w aplikacji?

Należy przekazać kompilacje wydania (korzystające z modułu Distribute zestawu SDK App Center) do portalu App Center w celu testowania aktualizacji w aplikacji, zwiększając liczbę wersji za każdym razem.

  1. Utwórz aplikację w portalu Centrum aplikacji, jeśli jeszcze tego nie zrobiono.
  2. Utwórz nową grupę dystrybucyjną i nadaj jej nazwę.
  3. Dodaj siebie (lub wszystkie osoby, które chcesz dołączyć do testu funkcji aktualizacji w aplikacji). Użyj nowego lub odrzuconego adresu e-mail dla tego kroku, który nie został jeszcze użyty w tej aplikacji. Dzięki temu twoje doświadczenie jest bliskie doświadczeniu rzeczywistych testerów.
  4. Utwórz nową kompilację aplikacji, która obejmuje dystrybucję usługi App Center i zawiera logikę konfiguracji zgodnie z poniższym opisem. Jeśli grupa jest prywatna, nie zapomnij ustawić prywatnej ścieżki aktualizacji w aplikacji przed rozpoczęciem UpdateTrackkorzystania z właściwości .
  5. Kliknij przycisk Dystrybuuj nową wersję w portalu i przekaż kompilację aplikacji.
  6. Po zakończeniu przekazywania kliknij przycisk Dalej i wybierz grupę dystrybucyjną, którą utworzyłeś wcześniej jako miejsce docelowe dla tej dystrybucji aplikacji.
  7. Przejrzyj dystrybucję i przekaż kompilację do grupy testowej w aplikacji.
  8. Osoby w tej grupie otrzymają zaproszenie do testerów aplikacji. Po zaakceptowaniu zaproszenia mogą pobrać aplikację z portalu Centrum aplikacji z urządzenia przenośnego. Po zainstalowaniu aktualizacji w aplikacji możesz przystąpić do testowania aktualizacji w aplikacji.
  9. Zaktualizuj wersję swojej aplikacji (CFBundleShortVersionString lub CFBundleVersion dla iOS, versionCode dla Android).
  10. Utwórz wersję wydania aplikacji i prześlij nową kompilację tak, jak w poprzednim kroku. Dystrybuuj do utworzonej wcześniej grupy dystrybucyjnej . Członkowie grupy dystrybucyjnej będą monitowani o nową wersję przy następnym uruchomieniu aplikacji.

Wskazówka

Zapoznaj się z informacjami na temat sposobu korzystania z usługi App Center Distribute , aby uzyskać bardziej szczegółowe informacje na temat grup dystrybucyjnych itp. Chociaż można użyć usługi App Center Distribute do dystrybucji nowej wersji aplikacji bez dodawania jakiegokolwiek kodu, dodanie usługi App Center Distribute do kodu aplikacji spowoduje bardziej bezproblemowe środowisko dla testerów i użytkowników w miarę uzyskiwania środowiska aktualizacji w aplikacji.