Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Visual Studio App Center is op 31 maart 2025 buiten gebruik gesteld, met uitzondering van de functies analyse en diagnose, die tot 30 juni 2026 nog steeds worden ondersteund. Meer informatie.
Met App Center Distribution kunnen uw gebruikers/testers nieuwe versies van een app installeren zodra u deze distribueert via App Center. Zodra deze optie is ingeschakeld, geeft de SDK een updatedialoogvenster weer voor gebruikers om de installatie van de meest recente update te downloaden of uit te stellen. Zodra ze ervoor hebben gekozen om bij te werken, wordt uw toepassing bijgewerkt met de SDK.
Belangrijk
De Distribute SDK voor Unity biedt geen ondersteuning voor UWP. De instructies op deze pagina hebben alleen betrekking op Android en iOS.
Waarschuwing
Google Play beschouwt de in-app-updatecode als schadelijk gedrag, zelfs als deze tijdens runtime niet wordt gebruikt. Verwijder deze code zoals beschreven in deze sectie voordat u uw app indient bij Google Play. Het niet verwijderen van de in-app-updatecode kan leiden tot niet-naleving en verwijdering van de app uit Google Play.
Opmerking
Als u geautomatiseerde gebruikersinterface-tests uitvoert, zullen ingeschakelde in-app-updates uw geautomatiseerde tests blokkeren omdat ze proberen te verifiëren bij de back-end van App Center. U wordt aangeraden updates in de app uit te schakelen voor uw UI-tests.
In-app updates aan uw app toevoegen
De module App Center Distribueren toevoegen
De App Center SDK is ontworpen met een modulaire benadering. Een ontwikkelaar hoeft alleen de modules te integreren van de services waarin ze geïnteresseerd zijn.
Volg de aan de slag-documenten van Unity als u de SDK nog niet hebt ingesteld en gestart in uw toepassing. Zorg ervoor dat u het App Center Distribute-pakket importeert. De naam moet het volgende formaat hebben: AppCenterDistribute-v{version}.unitypackage.
Opmerking
Android 10 of hoger heeft beperkingen voor de startactiviteit vanaf de achtergrond. Zie het artikel over beperkingen voor het starten van activiteiten vanaf de achtergrond.
Opmerking
Apps die worden uitgevoerd op Android 10 (Go edition) kunnen de toestemming SYSTEM_ALERT_WINDOW niet ontvangen. Raadpleeg het artikel over SYSTEM_ALERT_WINDOW op Go-apparaten.
Opmerking
Vanaf Android 11 ACTION_MANAGE_OVERLAY_PERMISSION brengen intenties de gebruiker altijd naar het scherm Instellingen op het hoogste niveau, waar de gebruiker de SYSTEM_ALERT_WINDOW machtigingen voor apps kan verlenen of intrekken. Zie het artikel over updates van machtigingen in Android 11.
Updates in de app verwijderen voor Google Play-builds
Google Play beschouwt de in-app-updatecode als schadelijk gedrag, zelfs als deze tijdens runtime niet wordt gebruikt. Verwijder deze code voordat u uw app indient bij Google Play. Het niet verwijderen van de in-app-updatecode kan leiden tot niet-naleving en verwijdering van de app uit Google Play. Als u systeemeigen code voor in-app-updates wilt verwijderen, schakelt u het selectievakje Distribueren gebruiken uit onder de sectie Distribueren op het gameobject waaraan AppCenterBehavior is gekoppeld.
Privédistributiegroep gebruiken
Distributie maakt standaard gebruik van een openbare distributiegroep. Als u een privédistributiegroep wilt gebruiken, moet u overschakelen UpdateTrack naar Privé.
Als u dit wilt doen, kiest u Privé in de vervolgkeuzelijst Bijwerken bijhouden onder Distribueren in het gameobject met AppCenterBehavior bijgevoegd.
Wanneer u het privéspoor gebruikt, wordt er een browservenster geopend om de gebruiker te verifiëren. Alle volgende updatecontroles zullen de meest recente release op de privétrack bekomen.
Als een gebruiker zich op het privéspoor bevindt, betekent dit dat ze na de geslaagde verificatie de meest recente versie krijgen van alle privédistributiegroepen waarvan ze lid zijn. Als een gebruiker zich op het openbare circuit bevindt, betekent dit dat deze de meest recente versie van een openbare distributiegroep ontvangt.
Automatische controle op update uitschakelen
Standaard controleert de SDK automatisch op nieuwe releases:
- Wanneer de toepassing wordt gestart.
- Wanneer de toepassing naar de achtergrond gaat en vervolgens weer naar de voorgrond.
- Bij het inschakelen van de module Distribueren als deze eerder is uitgeschakeld.
Als u handmatig op nieuwe releases wilt controleren, kunt u automatische controle op updates uitschakelen.
Hiervoor schakelt u het selectievakje Automatisch controleren op update uit onder Het gedeelte Distribueren van het gameobject met AppCenterBehavior bijgevoegd.
Vervolgens kunt u de CheckForUpdate API gebruiken die in de volgende sectie wordt beschreven.
Handmatig controleren op update
Distribute.CheckForUpdate();
Hiermee wordt een aanvraag verzonden naar App Center en wordt een updatedialoogvenster weergegeven voor het geval er een nieuwe release beschikbaar is.
Opmerking
Een handmatige controle op updateoproep werkt zelfs wanneer automatische updates zijn ingeschakeld. Een handmatige controle op update wordt genegeerd als er al een andere controle wordt uitgevoerd. De handmatige controle op de update wordt niet verwerkt als de gebruiker updates heeft uitgesteld (tenzij de meest recente versie een verplichte update is).
Het dialoogvenster voor het bijwerken van apps aanpassen of lokaliseren
1. Tekst aanpassen of lokaliseren
** U kunt uw eigen hulpbronstrings opgeven als u de tekst in het venster voor updates wilt lokaliseren. Bekijk de tekenreeksbestanden voor iOS in dit iOS-resourcebestand en voor Android in dit Android-resourcebestand. Gebruik dezelfde tekenreeksnaam/-sleutel en geef de gelokaliseerde waarde op die moet worden weergegeven in het dialoogvenster in uw eigen app-resourcebestanden.
2. Het dialoogvenster voor bijwerken aanpassen
U kunt het uiterlijk van het standaarddialoogvenster aanpassen door de ReleaseAvailable callback te implementeren.
Waarschuwing
U moet de callback registreren in de Awake methode van een MonoBehaviour in de eerste scène die uw toepassing laadt om te voorkomen dat u release-callback-aanroepen mist.
// In this example, OnReleaseAvailable is a method name in same class
Distribute.ReleaseAvailable = OnReleaseAvailable;
Hier volgt een callback-implementatie die het SDK-dialoogvenster vervangt door aangepaste logica:
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;
}
Implementatieopmerkingen voor Android:
Zoals in het voorbeeld wordt weergegeven, moet u ofwel Distribute.NotifyUpdateAction(UpdateAction.UPDATE); of Distribute.NotifyUpdateAction(UpdateAction.POSTPONE); bellen, als uw callback true retourneert.
Als u niet belt NotifyUpdateAction, wordt de callback herhaald bij elke activiteitswijziging.
De callback kan opnieuw worden aangeroepen met dezelfde release als de activiteit verandert voordat de gebruikersactie aan de SDK wordt gemeld.
Dit gedrag is nodig voor de volgende scenario's:
- Uw toepassing wordt verzonden naar de achtergrond (zoals drukken op HOME) en vervolgens hervat in een andere activiteit.
- Uw activiteit wordt gedekt door een andere activiteit zonder de toepassing te verlaten (zoals klikken op bepaalde meldingen).
- Vergelijkbare scenario's als hierboven.
In dat geval kan de activiteit die als host fungeert voor het dialoogvenster, worden vervangen zonder tussenkomst van de gebruiker. De SDK roept de listener dus opnieuw aan, zodat u het aangepaste dialoogvenster kunt herstellen.
3. Voer code uit als er geen updates worden gevonden
In gevallen waarin de SDK controleert op updates en geen updates vindt die nieuwer beschikbaar zijn dan de updates die momenteel worden gebruikt, wordt een NoReleaseAvailable callback aangeroepen. Hiermee kunt u aangepaste code uitvoeren in dergelijke scenario's.
U moet de callback registreren voordat u belt AppCenter.Start , zoals wordt weergegeven in het volgende voorbeeld:
// 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);
Als u App Center Distribute opnieuw wilt inschakelen, gebruikt u dezelfde API, maar geeft u deze door true als een parameter.
Distribute.SetEnabledAsync(true);
Deze API is asynchroon. Meer informatie vindt u in onze handleiding voor Asynchrone API's van App Center .
U hoeft deze aanroep niet te wachten om andere API-aanroepen (zoals IsEnabledAsync) consistent te maken.
De status blijft behouden in de opslag van het apparaat tijdens het starten van de toepassing.
Controleren of App Center Distribueren is ingeschakeld
U kunt ook controleren of App Center Distribute is ingeschakeld:
Distribute.IsEnabledAsync();
Deze API is asynchroon. Meer informatie vindt u in onze handleiding voor Asynchrone API's van App Center .
In-app updates inschakelen voor debug-builds
Updates in apps zijn standaard alleen ingeschakeld voor releaseversies.
Als u updates in de app wilt inschakelen voor foutopsporingsversies op Android en iOS, schakelt u het selectievakje Distribueren in in de sectie Foutopsporing in onder Distributie van het gameobject waaraan AppCenterBehavior is gekoppeld.
In Unity is een debuggable build een build met de optie Development build aangevinkt.
Opschonen direct uitvoeren voordat de app voor update wordt gesloten
Opmerking
Deze callback werkt alleen op iOS.
Callback registreren zoals wordt weergegeven in het volgende voorbeeld:
// In this example, OnWillExitApp is a method name in same class
Distribute.WillExitApp = OnWillExitApp;
void OnWillExitApp()
{
// Perform clean up here
}
OnWillExitApp() Hiermee wordt aangeroepen wanneer Distribute op het punt staat om te sluiten.
Hoe updates in apps werken
Opmerking
Updates in de app werken alleen als een app-build via de koppeling wordt gedownload. Het werkt niet als deze is geïnstalleerd vanuit een IDE of handmatig.
De functie updates in de app werkt als volgt:
- Deze functie werkt alleen met RELEASE-builds (standaard) die worden gedistribueerd met behulp van de App Center Distribute-service . Dit werkt niet als de functie Begeleide toegang voor iOS is ingeschakeld.
- Zodra u de SDK hebt geïntegreerd, bouwt u een releaseversie van uw app en uploadt u deze naar App Center. Gebruikers in de distributiegroep worden via e-mail op de hoogte gesteld van de nieuwe release.
- Wanneer elke gebruiker de koppeling in zijn e-mail opent, wordt de toepassing op het apparaat geïnstalleerd. Het is belangrijk dat ze via de e-mailkoppeling installeren - sideloading wordt niet ondersteund. Wanneer een toepassing wordt gedownload via de koppeling, slaat de SDK belangrijke informatie van cookies op om later op updates te controleren, anders beschikt de SDK niet over die belangrijke informatie.
- Als de toepassing de track op privé instelt, wordt een browser geopend om de gebruiker te verifiëren en updates in de app in te schakelen. De browser wordt niet opnieuw geopend zolang de verificatiegegevens geldig blijven, zelfs niet wanneer u later terugschakelt naar het openbare spoor en weer teruggaat naar privé. Als de browserverificatie is geslaagd, wordt de gebruiker automatisch teruggeleid naar de toepassing. Als het nummer openbaar is (dit is de standaardinstelling), wordt de volgende stap rechtstreeks uitgevoerd.
- In een nieuwe release van de app wordt het dialoogvenster voor het bijwerken van apps weergegeven waarin gebruikers worden gevraagd uw toepassing bij te werken als dit het volgende is:
- Ios:
- een hogere waarde van
CFBundleShortVersionStringof - een gelijke waarde van
CFBundleShortVersionStringmaar een hogere waarde vanCFBundleVersion. - de versies zijn hetzelfde, maar de unieke build-id is anders.
- een hogere waarde van
- Android:
- een hogere waarde van
versionCodeof - een gelijke waarde van
versionCodemaar een andere waarde vanversionName.
- een hogere waarde van
- Ios:
Aanbeveling
Als u dezelfde .apk/.ipa een tweede keer uploadt, wordt het dialoogvenster niet weergegeven als de binaire bestanden identiek zijn. Als u in iOS een nieuwe build uploadt met dezelfde versie-eigenschappen, wordt het dialoogvenster Update weergegeven. De reden hiervoor is dat het een ander binair bestand is. In Android worden binaire bestanden als hetzelfde beschouwd als beide versie-eigenschappen hetzelfde zijn.
Hoe test ik updates in apps?
U moet releaseversies uploaden (die gebruikmaken van de module Distribueren van de App Center SDK) naar de App Center-portal om updates in de app te testen, waardoor de versienummers steeds worden verhoogd.
- Maak uw app in de App Center-portal als u dat nog niet hebt gedaan.
- Maak een nieuwe distributiegroep en geef deze een naam.
- Voeg uzelf toe (of alle personen die u wilt opnemen in uw test van de functie voor in-app-updates). Gebruik een nieuw of weggooiend e-mailadres voor deze stap, een adres dat nog niet met deze app wordt gebruikt. Dit zorgt ervoor dat uw ervaring dicht bij de ervaring van uw echte testers ligt.
- Maak een nieuwe build van uw app met App Center Distribueren en bevat de installatielogica, zoals hieronder wordt beschreven. Als de groep privé is, vergeet dan niet om het bijwerken van de privé-app in te stellen voordat u de
UpdateTrackeigenschap gaat gebruiken. - Klik op de knop Nieuwe release distribueren in de portal en upload uw build van de app.
- Zodra het uploaden is voltooid, klikt u op Volgende en selecteert u de distributiegroep die u eerder hebt gemaakt als de bestemming van die app-distributie.
- Controleer de distributie en distribueer de build naar uw testgroep in uw app.
- Personen in die groep ontvangen een uitnodiging om testers van de app te zijn. Zodra ze de uitnodiging accepteren, kunnen ze de app downloaden vanuit de App Center-portal vanaf hun mobiele apparaat. Zodra er updates in de app zijn geïnstalleerd, kunt u updates in de app testen.
- De versie van uw app (
CFBundleShortVersionStringofCFBundleVersionvoor iOS,versionCodevoor Android) stoten. - Bouw de releaseversie van uw app en upload een nieuwe build zoals u in de vorige stap hebt gedaan. Distribueer naar de distributiegroep die u eerder hebt gemaakt. Leden van de distributiegroep worden gevraagd om een nieuwe versie wanneer de app de volgende keer wordt gestart.
Aanbeveling
Bekijk de informatie over het gebruik van App Center Distribute voor meer gedetailleerde informatie over distributiegroepen , enzovoort. Hoewel het mogelijk is om App Center Distribute te gebruiken om een nieuwe versie van uw app te distribueren zonder code toe te voegen, leidt het toevoegen van App Center Distribute aan de code van uw app tot een naadlozere ervaring voor uw testers en gebruikers wanneer ze de update-ervaring in de app krijgen.