Megosztás a következőn keresztül:


App Center Distribute – Unity alkalmazáson belüli frissítések

Fontos

A Visual Studio App Center 2025. március 31-én megszűnt, kivéve az Elemzési és diagnosztikai funkciókat, amelyek 2026. június 30-ig továbbra is támogatottak lesznek. Tudj meg többet.

Az App Center Distribution lehetővé teszi, hogy a felhasználók/tesztelők az App Centeren keresztül történő terjesztés után telepítsenek egy alkalmazás új verzióit. Ha engedélyezve van, az SDK egy frissítési párbeszédpanelt jelenít meg a felhasználóknak a legújabb frissítés letöltéséhez vagy elhalasztásához. Miután a frissítés mellett döntöttek, az SDK megkezdi az alkalmazás frissítését.

Fontos

Az Distribute SDK for Unity nem támogatja az UWP-t. Az oldalon található utasítások csak Android és iOS rendszerre vonatkoznak.

Figyelmeztetés

A Google Play rosszindulatú viselkedésnek tekinti az alkalmazáson belüli frissítési kódot, még akkor is, ha futásidőben nem használják. Távolítsa el ezt a kódot az ebben a szakaszban leírtak szerint, mielőtt elküldené az alkalmazást a Google Play-be. Ha nem távolítja el az alkalmazáson belüli frissítési kódot, az az alkalmazás meg nem felelési és a Google Play-ből való eltávolításához vezethet.

Megjegyzés:

Ha automatizált felhasználói felületi teszteket futtat, az alkalmazáson belüli engedélyezett frissítések letiltják az automatikus felhasználói felületi teszteket, miközben megpróbálnak hitelesítést végezni az App Center háttérrendszerén. Javasoljuk, hogy tiltsa le az alkalmazáson belüli frissítéseket a felhasználói felületi tesztekhez.

Alkalmazáson belüli frissítések hozzáadása az alkalmazáshoz

Az App Center Distribute modul hozzáadása

Az App Center SDK moduláris megközelítéssel lett kialakítva – a fejlesztőknek csak az őket érdeklő szolgáltatások moduljait kell integrálniuk.

Kövesse a Unity első lépéseit , ha még nem állította be és indította el az SDK-t az alkalmazásban. Győződjön meg arról, hogy importálja az App Center Distribute csomagot. A névnek a formátumában AppCenterDistribute-v{version}.unitypackagekell lennie.

Megjegyzés:

Az Android 10-et vagy újabb verziót a háttérben futó indítási tevékenységek korlátozásai korlátozzák. Tekintse meg a háttérben futó tevékenységek indítására vonatkozó korlátozásokat ismertető cikket.

Megjegyzés:

Az Android 10 (Go edition) rendszeren futó alkalmazások nem kapják meg a SYSTEM_ALERT_WINDOW engedélyt. Kérjük, tekintse meg a cikket a Go-eszközökön használható SYSTEM_ALERT_WINDOW-ről.

Megjegyzés:

Az Android 11-től kezdve a ACTION_MANAGE_OVERLAY_PERMISSION intentek mindig a Beállítások főképernyőjére navigálnak, ahol a felhasználó engedélyezheti vagy visszavonhatja a SYSTEM_ALERT_WINDOW alkalmazások jogosultságait. Tekintse meg az Android 11 engedélyfrissítéseiről szóló cikket.

Alkalmazáson belüli frissítések eltávolítása Google Play-verziókhoz

A Google Play rosszindulatú viselkedésnek tekinti az alkalmazáson belüli frissítési kódot, még akkor is, ha futásidőben nem használják. Távolítsa el ezt a kódot, mielőtt elküldené az alkalmazást a Google Play-be. Ha nem távolítja el az alkalmazáson belüli frissítési kódot, az az alkalmazás meg nem felelési és a Google Play-ből való eltávolításához vezethet. Ha el szeretné távolítani az alkalmazáson belüli frissítések natív kódját, törölje a jelet az Use Distribute jelölőnégyzetből az Distribute szakaszban azon a játékobjektumon, amelyhez az AppCenterBehavior van csatolva.

Privát terjesztési csoport használata

Alapértelmezés szerint az Distribute nyilvános terjesztési csoportot használ. Ha privát terjesztési csoportot szeretne használni, át kell váltania UpdateTrack privátra. Ehhez válassza a Privát lehetőséget a Distribute szakasz Update Track legördülő listájában azon a játékobjektumon, amelyhez az AppCenterBehavior van csatolva.

A privát zeneszám használatakor megnyílik egy böngészőablak a felhasználó hitelesítéséhez. Minden későbbi frissítési ellenőrzés megkapja a legújabb kiadást a privát pályán.

Ha egy felhasználó a privát pályán van, az azt jelenti, hogy a sikeres hitelesítés után megkapja a legújabb kiadást minden olyan privát terjesztési csoporttól, amelynek tagja. Ha egy felhasználó nyilvános pályán van, az azt jelenti, hogy bármely nyilvános terjesztési csoporttól megkapja a legújabb kiadást.

A frissítés automatikus ellenőrzésének letiltása

Alapértelmezés szerint az SDK automatikusan ellenőrzi az új kiadásokat:

  • Az alkalmazás indításakor.
  • Amikor az alkalmazás háttérbe kerül, majd ismét előtérbe kerül.
  • Az Elosztott modul engedélyezésekor, ha korábban le lett tiltva.

Ha manuálisan szeretné ellenőrizni az új kiadásokat, letilthatja a frissítés automatikus ellenőrzését.

Ehhez törölje a jelet az Automatikus frissítés ellenőrzése jelölőnégyzetből az AppCenterBehavior csatolva lévő játékobjektum Elosztás szakaszában.

Ezután használhatja a CheckForUpdate következő szakaszban ismertetett API-t.

Frissítés manuális ellenőrzése

Distribute.CheckForUpdate();

Ez egy kérést küld az App Centernek, és megjelenít egy frissítési párbeszédpanelt, ha új kiadás érhető el.

Megjegyzés:

A frissítési hívás manuális ellenőrzése akkor is működik, ha az automatikus frissítések engedélyezve vannak. Ha egy másik ellenőrzés már folyamatban van, a rendszer figyelmen kívül hagyja a manuális frissítés-ellenőrzést. A manuális frissítés-ellenőrzés nem lesz feldolgozva, ha a felhasználó elhalasztotta a frissítéseket (kivéve, ha a legújabb verzió kötelező frissítés).

Az alkalmazáson belüli frissítési párbeszédpanel testreszabása vagy honosítása

1. Szöveg testreszabása vagy honosítása

Saját erőforrás-sztringeket is megadhat, ha honosítani szeretné a frissítési párbeszédpanelen megjelenő szöveget. Ebben az Android-erőforrásfájlban tekintse meg az iOS-hez és Androidhoz készült sztringfájlokat ebben az Android-erőforrásfájlban. Használja ugyanazt a sztringnevet/kulcsot, és adja meg azt a honosított értéket, amelyet a saját alkalmazás-erőforrásfájlok párbeszédpaneljén megjeleníthet.

2. A frissítési párbeszédpanel testreszabása

A visszahívás implementálásával testre szabhatja az alapértelmezett frissítési ReleaseAvailable párbeszédpanel megjelenését.

Figyelmeztetés

A visszahívást az Awake metódusában kell regisztrálni egy MonoBehaviour-ben az alkalmazás első jeleneténél, hogy elkerülje a felszabadítási visszahívás meghívások elmaradását.

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

Íme egy visszahívási implementáció, amely az SDK párbeszédpanelt egyéni logikára cseréli:

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

Implementációs megjegyzések Androidhoz:

Ahogy a példában látható, Distribute.NotifyUpdateAction(UpdateAction.UPDATE); vagy Distribute.NotifyUpdateAction(UpdateAction.POSTPONE); hívását kell használni, ha a visszahívás true értéket ad vissza.

Ha nem hívja meg a NotifyUpdateAction függvényt, a visszahívás minden tevékenységváltozáskor ismétlődik.

A visszahívás ugyanazzal a kiadással hívható meg, ha a tevékenység megváltozik, mielőtt a felhasználói művelet értesítést kap az SDK-nak.

Ez a viselkedés a következő forgatókönyvek lefedéséhez szükséges:

  • Az alkalmazás a háttérbe kerül (például a HOME billentyű lenyomásával), majd egy másik tevékenységben folytatódik.
  • A tevékenységet egy másik lefedi anélkül, hogy elhagyná az alkalmazást (például rákattint néhány értesítésre).
  • Hasonló forgatókönyvek a fentiekhez.

Ebben az esetben előfordulhat, hogy a párbeszédpanelt üzemeltető tevékenység felhasználói beavatkozás nélkül lecserélődik. Az SDK tehát ismét meghívja a figyelőt, hogy vissza lehessen állítani az egyéni párbeszédpanelt.

3. Kód végrehajtása, ha nem található frissítés

Ha az SDK frissítéseket keres, és nem találja a jelenleg használtnál újabb frissítéseket, a rendszer visszahívást NoReleaseAvailable hív meg. Ez lehetővé teszi egyéni kód végrehajtását ilyen esetekben. Mielőtt meghívná a AppCenter.Start-t, regisztrálnia kell a visszahívást a következő példának megfelelően.

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

Az App Center Distribute ismételt engedélyezéséhez használja ugyanazt az API-t, de adja át true paraméterként.

Distribute.SetEnabledAsync(true);

Ez az API aszinkron, erről az App Center Aszinkron API-k útmutatójában olvashat bővebben.

Nem kell megvárnia ezt a hívást, hogy más API-hívásokat (például IsEnabledAsync) konzisztenssé tegyen.

Az állapot megmarad az eszköz tárolójában az alkalmazásindítások során.

Ellenőrizze, hogy az App Center Distribute engedélyezve van-e

Azt is ellenőrizheti, hogy az App Center Distribute engedélyezve van-e:

Distribute.IsEnabledAsync();

Ez az API aszinkron, erről az App Center Aszinkron API-k útmutatójában olvashat bővebben.

Alkalmazáson belüli frissítések engedélyezése a buildek hibakereséséhez

Alapértelmezés szerint az alkalmazáson belüli frissítések csak kiadási buildekhez vannak engedélyezve.

Ha engedélyezni szeretné az alkalmazáson belüli frissítéseket a hibakeresési verziókhoz Androidon és iOS-en, jelölje be az Elosztás engedélyezése hibakeresésben jelölőnégyzetet a AppCenterBehavior játékelemmel rendelkező Terjesztés szakaszban.

Az App Center viselkedése

A Unityben a hibakeresésre alkalmas buildek olyan buildek, ahol be van jelölve a fejlesztési build lehetőség.

Tisztítás közvetlenül az alkalmazás bezárása előtt a frissítéshez

Megjegyzés:

Ez a visszahívás csak iOS rendszeren működik.

A visszahívás regisztrálása az alábbi példában látható módon:

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

Ezzel meghívásra kerül a OnWillExitApp(), amikor a Distribute hamarosan bezárul.

Az alkalmazáson belüli frissítések működése

Megjegyzés:

Az alkalmazáson belüli frissítések működéséhez le kell tölteni egy alkalmazás buildet a hivatkozásról. Ide-ről vagy manuálisan történő telepítés esetén nem működik.

Az alkalmazáson belüli frissítési funkció a következőképpen működik:

  1. Ez a funkció csak az App Center Distribute szolgáltatással elosztott RELEASE buildekkel működik (alapértelmezés szerint). Nem fog működni, ha az iOS Interaktív hozzáférés funkció be van kapcsolva.
  2. Az SDK integrálása után készítse el az alkalmazás kiadási verzióját, és töltse fel az App Centerbe. A terjesztési csoport felhasználói e-mailben értesítést kapnak az új kiadásról.
  3. Amikor minden felhasználó megnyitja a hivatkozást az e-mailben, az alkalmazás telepítve lesz az eszközén. Fontos, hogy az e-mail-hivatkozást használják a telepítéshez – nem támogatjuk az oldalbetöltést. Amikor letölt egy alkalmazást a hivatkozásról, az SDK fontos információkat ment a cookie-kból, hogy később ellenőrizze a frissítéseket, különben az SDK nem rendelkezik ezekkel a kulcsfontosságú információkkal.
  4. Ha az alkalmazás privátra állítja a pályát, megnyílik egy böngésző, amely hitelesíti a felhasználót, és engedélyezi az alkalmazáson belüli frissítéseket. A böngésző nem nyílik meg újra, amíg a hitelesítési adatok érvényesek maradnak, még akkor sem, ha később visszaáll a nyilvános pályára, és visszaáll a privátra. Ha a böngészőhitelesítés sikeres, a rendszer automatikusan visszairányítja a felhasználót az alkalmazásba. Ha a pálya nyilvános (ez az alapértelmezett), a következő lépés közvetlenül történik.
  5. Az alkalmazás új kiadása az alkalmazáson belüli frissítési párbeszédpanelt jeleníti meg, amely arra kéri a felhasználókat, hogy frissítsék az alkalmazást, ha az a következő:
    • Ios:
      • magasabb érték CFBundleShortVersionString vagy
      • egy egyenlő érték CFBundleShortVersionString, de egy magasabb érték CFBundleVersion.
      • a verziók megegyeznek, de a build egyedi azonosítója eltérő.
    • Android:
      • magasabb versionCode érték vagy
      • az versionCode egyenlő értéke, de a versionName más értéke.

Jótanács

Ha másodszor is feltölti ugyanazt a .apk/.ipa fájlt, a párbeszédpanel nem jelenik meg, mivel a bináris fájlok azonosak. iOS rendszeren, ha egy új buildet tölt fel ugyanazokkal a verziótulajdonságokkal, az megjelenik a frissítési párbeszédpanelen. Ennek az az oka, hogy ez egy másik bináris. Androidon a bináris fájlok akkor tekinthetők azonosnak, ha mindkét verziótulajdonság azonos.

Hogyan tesztelhetem az alkalmazáson belüli frissítéseket?

Az alkalmazáson belüli frissítések teszteléséhez fel kell töltenie a kiadási buildeket (amelyek az App Center SDK Distribute modulját használják) az App Center Portálra, és minden alkalommal növelni kell a verziószámokat.

  1. Ha még nem tette meg, hozza létre az alkalmazást az App Center portálon.
  2. Hozzon létre egy új terjesztési csoportot, és adjon neki nevet.
  3. Adja hozzá magát (vagy az összes olyan felhasználót, akit fel szeretne venni az alkalmazáson belüli frissítési funkció tesztjéhez). Ehhez a lépéshez használjon új vagy eldobható e-mail-címet, amelyet még nem használt ezzel az alkalmazással. Ez biztosítja, hogy a tapasztalat közel legyen a valódi tesztelők élményéhez.
  4. Hozzon létre egy új buildet az alkalmazásból, amely tartalmazza az App Center Distributet , és tartalmazza az alább ismertetett beállítási logikát. Ha a csoport privát, ne felejtse el beállítani a privát alkalmazáson belüli frissítési pályát, mielőtt elkezdené használni a tulajdonságotUpdateTrack.
  5. Kattintson az Új kiadás terjesztése gombra a portálon, és töltse fel az alkalmazás buildet.
  6. Miután a feltöltés befejeződött, kattintson a Tovább gombra, és válassza ki azt a terjesztési csoportot , amelyet korábban az alkalmazásterjesztés célhelyeként hozott létre.
  7. Tekintse át a terjesztést, és ossza el a buildet az alkalmazáson belüli tesztelési csoportnak.
  8. A csoport tagjai meghívást kapnak az alkalmazás tesztelőinek. Miután elfogadták a meghívást, letölthetik az alkalmazást az App Center Portálról a mobileszközükről. Miután telepítették az alkalmazáson belüli frissítéseket, készen áll az alkalmazáson belüli frissítések tesztelésére.
  9. Az alkalmazásCFBundleShortVersionString (vagy CFBundleVersion iOS, versionCode androidos) verziójának frissítése.
  10. Készítse el az alkalmazás kiadási verzióját, és töltsön fel egy új buildet, mint az előző lépésben. Ossza szét a korábban létrehozott Terjesztési Csoportnak. A terjesztési csoport tagjai az alkalmazás következő indításakor új verziót fognak kérni.

Jótanács

Tekintse meg az App Center Distribute használatával kapcsolatos információkat a terjesztési csoportokkal kapcsolatos részletesebb információkért. Bár az App Center Distribute használatával kód hozzáadása nélkül terjesztheti az alkalmazás új verzióját, az App Center Distribute alkalmazáskódhoz való hozzáadása zökkenőmentesebb felhasználói élményt eredményez a tesztelők és a felhasználók számára az alkalmazáson belüli frissítés során.