Distribuce v App Center – aktualizace Unity v aplikaci

Důležité

Visual Studio App Center je naplánované k vyřazení na 31. března 2025. I když můžete Visual Studio App Center dál používat, dokud ho úplně nevyřadíte, existuje několik doporučených alternativ, na které můžete migraci zvážit.

Přečtěte si další informace o časových osách a alternativách podpory.

Distribuce app center umožňuje uživatelům/testerům instalovat nové verze aplikace, jakmile ji distribuujete přes App Center. Po povolení sada SDK zobrazí uživatelům dialogové okno aktualizace, ve kterém si mohou stáhnout nebo odložit instalaci nejnovější aktualizace. Jakmile se sada SDK rozhodne aktualizovat, začne aktualizovat vaši aplikaci.

Důležité

Distribuce sady SDK pro Unity nepodporuje UPW. Pokyny na této stránce se týkají jenom Androidu a iOS.

Upozornění

Google Play považuje aktualizační kód v aplikaci za škodlivé chování, i když se nepoužívá za běhu. Před odesláním aplikace na Google Play odeberte tento kód podle pokynů v této části . Pokud neodeberete aktualizační kód v aplikaci, může to vést k nedodržování předpisů a odebrání aplikace z Obchodu Google Play.

Poznámka

Pokud spouštíte automatizované testy uživatelského rozhraní, povolené aktualizace v aplikaci zablokují vaše automatizované testy uživatelského rozhraní, protože se pokusí ověřit v back-endu App Center. Doporučujeme zakázat aktualizace v aplikaci pro testy uživatelského rozhraní.

Přidání aktualizací v aplikaci

Přidání modulu Distribuce v App Center

Sada App Center SDK je navržená s modulárním přístupem – vývojáři stačí integrovat jenom moduly služeb, které ho zajímají.

Pokud jste ještě sadu SDK ve své aplikaci nenastavili a nespustili, postupujte podle dokumentace Začínáme s Unity . Nezapomeňte naimportovat balíček App Center Distribuovat. Jeho název by měl být ve formátu AppCenterDistribute-v{version}.unitypackage.

Poznámka

Android 10 nebo novější má omezení pro spouštění aktivit z pozadí. Přečtěte si článek o omezeních pro spouštění aktivit na pozadí.

Poznámka

Aplikace běžící na Androidu 10 (edice Go) nemůžou získat oprávnění k SYSTEM_ALERT_WINDOW . Přečtěte si článek o zařízeních SYSTEM_ALERT_WINDOW on Go.

Poznámka

Od Androidu 11 ACTION_MANAGE_OVERLAY_PERMISSION záměry uživatele vždy přivedou na obrazovku Nastavení nejvyšší úrovně, kde může udělit nebo odvolat SYSTEM_ALERT_WINDOW oprávnění pro aplikace. Přečtěte si článek o aktualizacích oprávnění v Androidu 11.

Odebrání aktualizací z aplikace pro buildy Google Play

Google Play považuje aktualizační kód v aplikaci za škodlivé chování, i když se nepoužívá za běhu. Před odesláním aplikace na Google Play tento kód odeberte. Pokud neodeberete aktualizační kód v aplikaci, může to vést k nedodržování předpisů a odebrání aplikace z Obchodu Google Play. Pokud chcete odebrat nativní kód aktualizací v aplikaci, zrušte zaškrtnutí políčka Použít distribuci v oddílu Distribuovat u herního objektu s připojeným nástrojem AppCenterBehavior .

Použití privátní distribuční skupiny

Distribuce ve výchozím nastavení používá veřejnou distribuční skupinu. Pokud chcete použít soukromou distribuční skupinu, budete muset přejít UpdateTrack na Privátní. Uděláte to tak, že v rozevíracím seznamu Aktualizovat stopu v části Distribuovat u herního objektu s připojeným zařízením AppCenterBehavior zvolíte Soukromá.

Při použití privátní stopy se otevře okno prohlížeče pro ověření uživatele. Všechny následné kontroly aktualizací získají nejnovější verzi na soukromé cestě.

Pokud je uživatel na soukromé cestě, znamená to, že po úspěšném ověření získá nejnovější verzi ze všech privátních distribučních skupin, kterých je členem. Pokud je uživatel na veřejné cestě, znamená to, že získá nejnovější verzi z jakékoli veřejné distribuční skupiny.

Zakázat automatickou kontrolu aktualizací

Ve výchozím nastavení sada SDK automaticky vyhledává nové verze:

  • Při spuštění aplikace.
  • Když aplikace přejde na pozadí, pak znovu v popředí.
  • Při povolování modulu Distribuovat, pokud byl dříve zakázán.

Pokud chcete nové verze vyhledat ručně, můžete zakázat automatickou kontrolu aktualizací.

Pokud to chcete udělat, zrušte zaškrtnutí políčka Automatická kontrola aktualizací v části Distribuovat u herního objektu s připojeným appCenterBehavior .

Pak můžete použít CheckForUpdate rozhraní API, které je popsáno v následující části.

Ruční kontrola aktualizace

Distribute.CheckForUpdate();

Tím se odešle žádost do App Center a zobrazí se dialogové okno aktualizace pro případ, že je k dispozici nová verze.

Poznámka

Ruční kontrola pro volání aktualizace funguje i v případě, že jsou povolené automatické aktualizace. Ruční kontrola aktualizace se ignoruje, pokud už probíhá jiná kontrola. Ruční kontrola aktualizace se nezpracuje, pokud uživatel aktualizace odložil (pokud nejnovější verze není povinná aktualizace).

Přizpůsobení nebo lokalizace dialogového okna aktualizace v aplikaci

1. Přizpůsobení nebo lokalizace textu

Pokud chcete lokalizovat text zobrazený v dialogovém okně aktualizace, můžete zadat vlastní řetězce prostředků. Podívejte se na řetězcové soubory pro iOS v tomto souboru prostředků iOS a pro Android v tomto souboru prostředků androidu. Použijte stejný název řetězce nebo klíč a zadejte lokalizovanou hodnotu, která se má v dialogovém okně projevit ve vlastních souborech prostředků aplikace.

2. Přizpůsobení dialogového okna aktualizace

Vzhled výchozího dialogového okna aktualizace můžete přizpůsobit implementací zpětného ReleaseAvailable volání.

Upozornění

Musíte zaregistrovat zpětné volání v Awake metodě MonoBehaviour v první scéně, kterou vaše aplikace načte, aby nedošlo k chybějícím voláním zpětného volání vydané verze.

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

Tady je implementace zpětného volání, která nahrazuje dialogové okno sady SDK vlastní logikou:

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

Poznámky k implementaci pro Android:

Jak je znázorněno v příkladu, musíte volat nebo Distribute.NotifyUpdateAction(UpdateAction.UPDATE);Distribute.NotifyUpdateAction(UpdateAction.POSTPONE); , pokud zpětné volání vrátí true.

Pokud nezavoláte NotifyUpdateAction, zpětné volání se bude opakovat při každé změně aktivity.

Zpětné volání je možné volat znovu se stejnou verzí, pokud se aktivita změní předtím, než se akce uživatele oznámí sadě SDK.

Toto chování je potřeba k pokrytí následujících scénářů:

  • Vaše aplikace se odešle na pozadí (například stisknutím klávesy HOME) a pak se obnoví v jiné aktivitě.
  • Vaše aktivita je pokryta jinou aktivitou, aniž byste opustili aplikaci (například kliknutím na některá oznámení).
  • Podobné scénáře jako výše.

V takovém případě může být aktivita hostující dialogové okno nahrazena bez zásahu uživatele. Sada SDK proto zavolá naslouchací proces znovu, abyste mohli obnovit vlastní dialogové okno.

3. Pokud nejsou nalezeny žádné aktualizace, spusťte kód.

V případech, kdy sada SDK vyhledá aktualizace a nenajde žádné aktualizace, které jsou novější než aktuálně použité, NoReleaseAvailable se vyvolá zpětné volání. To vám umožní spouštět vlastní kód v takových scénářích. Před voláním AppCenter.Start musíte zaregistrovat zpětné volání, jak je znázorněno v následujícím příkladu:

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

Pokud chcete app center distribuovat znovu, použijte stejné rozhraní API, ale předejte true ho jako parametr.

Distribute.SetEnabledAsync(true);

Toto rozhraní API je asynchronní. Další informace najdete v průvodci asynchronními rozhraními API app center .

Toto volání nemusíte čekat, aby ostatní volání rozhraní API (například IsEnabledAsync) byla konzistentní.

Stav se během spouštění aplikací zachová v úložišti zařízení.

Kontrola, jestli je povolená distribuce v App Center

Můžete také zkontrolovat, jestli je povolená distribuce v App Center:

Distribute.IsEnabledAsync();

Toto rozhraní API je asynchronní. Další informace najdete v průvodci asynchronními rozhraními API app center .

Povolení aktualizací v aplikaci pro sestavení ladění

Ve výchozím nastavení jsou aktualizace v aplikaci povolené jenom pro buildy vydaných verzí.

Pokud chcete povolit aktualizace v aplikaci pro ladicí buildy v Androidu a iOSu, zaškrtněte políčko Povolit distribuci v ladění v části Distribuovat u herního objektu s připojeným appCenterBehavior .

Chování App Center

V Unity je laditelné sestavení sestavení sestavení se zaškrtnutou možností sestavení Pro vývoj .

Proveďte vyčištění těsně před ukončením aplikace kvůli aktualizaci.

Poznámka

Toto zpětné volání funguje jenom v iOSu.

Zaregistrujte zpětné volání, jak je znázorněno v následujícím příkladu:

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

V takovém případě OnWillExitApp() se vyvolá, když se distribuce chystá zavřít.

Jak fungují aktualizace v aplikaci

Poznámka

Aby aktualizace v aplikaci fungovaly, měl by se build aplikace stáhnout z odkazu. Nebude fungovat, pokud se instaluje z integrovaného vývojového prostředí (IDE) nebo ručně.

Funkce aktualizací v aplikaci funguje takto:

  1. Tato funkce funguje jenom s buildy RELEASE (ve výchozím nastavení), která se distribuují pomocí služby App Center Distribute . Nebude fungovat, pokud je funkce asistovaného přístupu pro iOS zapnutá.
  2. Po integraci sady SDK sestavte vydanou verzi aplikace a nahrajte ji do App Center. Uživatelé v distribuční skupině obdrží oznámení o nové verzi e-mailem.
  3. Když každý uživatel otevře odkaz ve svém e-mailu, aplikace se nainstaluje na jejich zařízení. Je důležité, aby k instalaci použili e-mailový odkaz – nepodporujeme zkušební načítání. Když se aplikace stáhne z odkazu, sada SDK uloží důležité informace ze souborů cookie, aby později zkontrolovala aktualizace, jinak sada SDK tyto klíčové informace neobsahuje.
  4. Pokud aplikace nastaví trasu na privátní, otevře se prohlížeč pro ověření uživatele a povolení aktualizací v aplikaci. Prohlížeč se znovu neotevře, dokud ověřovací informace zůstanou platné, i když později znovu přepnete na veřejnou trasu a znovu na privátní. Pokud je ověření prohlížeče úspěšné, uživatel se automaticky přesměruje zpět do aplikace. Pokud je skladba veřejná (což je výchozí nastavení), provede se další krok přímo.
  5. V nové verzi aplikace se zobrazí dialogové okno aktualizace v aplikaci s výzvou uživatelům, aby aplikaci aktualizovali, pokud je:
    • iOS:
      • vyšší hodnotu CFBundleShortVersionString nebo
      • stejnou hodnotu, CFBundleShortVersionString ale vyšší hodnotu CFBundleVersion.
      • Verze jsou stejné, ale jedinečný identifikátor sestavení se liší.
    • Android:
      • vyšší hodnotu versionCode nebo
      • stejná hodnota, versionCode ale jiná hodnota versionName.

Tip

Pokud stejný .apk/.ipa nahrajete podruhé, dialogové okno se nezobrazí, protože binární soubory jsou identické. Pokud v iOSu nahrajete nový build se stejnými vlastnostmi verze, zobrazí se dialogové okno aktualizace. Důvodem je, že se jedná o jiný binární soubor. V Androidu se binární soubory považují za stejné, pokud jsou obě vlastnosti verze stejné.

Návody testovat aktualizace v aplikaci?

Sestavení vydané verze (která používají modul Distribuce sady App Center SDK) musíte nahrát na portál App Center, abyste mohli otestovat aktualizace v aplikaci a pokaždé zvýšit počet verzí.

  1. Pokud jste to ještě neudělali, vytvořte aplikaci na portálu App Center.
  2. Vytvořte novou distribuční skupinu a pojmenujte ji.
  3. Přidejte sami sebe (nebo všechny lidi, které chcete zahrnout do testu funkce aktualizace v aplikaci). Pro tento krok použijte novou nebo zahozenou e-mailovou adresu, která se ještě s touto aplikací nepoužila. Tím se zajistí, že se vaše prostředí bude blížit zkušenostem skutečných testerů.
  4. Vytvořte nové sestavení aplikace, které zahrnuje Distribuci v App Center a obsahuje logiku nastavení, jak je popsáno níže. Pokud je skupina soukromá, nezapomeňte nastavit privátní aktualizaci v aplikaci, než začnete tuto vlastnost používatUpdateTrack.
  5. Na portálu klikněte na tlačítko Distribuovat novou verzi a nahrajte sestavení aplikace.
  6. Po dokončení nahrávání klikněte na Další a jako Cíl této distribuce aplikace vyberte distribuční skupinu, kterou jste vytvořili dříve.
  7. Zkontrolujte distribuci a distribuujte sestavení do testovací skupiny v aplikaci.
  8. Lidé v této skupině obdrží pozvánku, aby se mohli stát testery aplikace. Jakmile pozvánku přijmou, můžou si aplikaci stáhnout z portálu App Center ze svého mobilního zařízení. Jakmile budou mít nainstalované aktualizace z aplikace, můžete je v aplikaci otestovat.
  9. Zvyšte verzi vaší aplikace (CFBundleShortVersionString nebo CFBundleVersion pro iOS, versionCode pro Android).
  10. Sestavte vydanou verzi aplikace a nahrajte nový build jako v předchozím kroku. Distribuujte do distribuční skupiny , kterou jste vytvořili dříve. Členové distribuční skupiny budou při příštím spuštění aplikace vyzváni k zadání nové verze.

Tip

Podrobnější informace o distribučních skupinách atd. najdete v tématu Věnovaném využití distribuce v App Center. I když je možné použít App Center Distribute k distribuci nové verze aplikace bez přidání kódu, přidání distribuce app center do kódu aplikace zajistí plynulejší prostředí pro testery a uživatele, kteří získají prostředí pro aktualizace v aplikaci.