W tym przewodniku opisujemy, jak obsługiwać reklamy w aplikacjach aktualizacje w aplikacji przy użyciu Unity. Istnieją osobne przewodniki dla przypadków, gdy w implementacji zapisany jest program Kotlin języka programowania lub programowania w Javie, język i przypadki, w których implementacja korzysta z kodu natywnego (C/C++)
Konfigurowanie środowiska programistycznego
Pobierz najnowszą wersję wtyczki Unity do aktualizacji w aplikacji Google Play z pakietów Google dla zjednoczenie.
Omówienie pakietu SDK Unity
Interfejs Play w aplikacji do aktualizacji jest częścią Play Core
pakietu SDK. Jedność
Wtyczka oferuje
AppUpdateManager
do obsługi komunikacji między aplikacją a interfejsem Play API. Musisz
Utwórz instancję tej klasy, zanim będzie można jej użyć do zarządzania aktualizacjami w aplikacji:
AppUpdateManager appUpdateManager = new AppUpdateManager();
Sprawdź dostępność aktualizacji
Zanim poprosisz o aktualizację, sprawdź, czy jest dostępna aktualizacja
. Użyj kodu AppUpdateManager
, aby sprawdzić dostępność aktualizacji w
współpraca:
IEnumerator CheckForUpdate()
{
PlayAsyncOperation<AppUpdateInfo, AppUpdateErrorCode> appUpdateInfoOperation =
appUpdateManager.GetAppUpdateInfo();
// Wait until the asynchronous operation completes.
yield return appUpdateInfoOperation;
if (appUpdateInfoOperation.IsSuccessful)
{
var appUpdateInfoResult = appUpdateInfoOperation.GetResult();
// Check AppUpdateInfo's UpdateAvailability, UpdatePriority,
// IsUpdateTypeAllowed(), etc. and decide whether to ask the user
// to start an in-app update.
}
else
{
// Log appUpdateInfoOperation.Error.
}
}
Zwrócone wartości
AppUpdateInfo
instancji zawiera stan dostępności aktualizacji. Jeśli aktualizacja w aplikacji jest już
w toku, instancja raportuje również stan trwającej aktualizacji.
Sprawdź aktualność aktualizacji
Oprócz sprawdzenia, czy jest dostępna aktualizacja, możesz też sprawdzanie, ile czasu upłynęło od ostatniego powiadomienia użytkownika o aktualizacji; w Sklepie Play. Pomoże Ci to podjąć decyzję o zainicjowaniu lub natychmiastową aktualizację. Na przykład możesz odczekać kilka dni, przed powiadomieniem użytkownika o elastycznej aktualizacji i kilka dni później bez natychmiastowej aktualizacji.
Używaj
ClientVersionStalenessDays
aby sprawdzić liczbę dni od udostępnienia aktualizacji w Google Play
Magazyn:
var stalenessDays = appUpdateInfoOperation.ClientVersionStalenessDays;
Sprawdź priorytet aktualizacji
Interfejs Google Play Developer API pozwala określić priorytet każdej aktualizacji. Dzięki temu aplikacja może zdecydować, jak zdecydowanie zalecić aktualizację użytkownikowi. Rozważ na przykład tę strategię ustalania priorytetu aktualizacji:
- Drobne ulepszenia interfejsu: aktualizacja Niskiego priorytetu. nie żądają też elastycznego ani natychmiastowej aktualizacji.
- Ulepszenia wydajności: aktualizacja o średnim priorytecie; poproś o elastyczną formę płatności .
- Krytyczna aktualizacja zabezpieczeń: aktualizacja o wysokim priorytecie; poproś o natychmiastową prośbę .
Aby określić priorytet, Google Play używa liczby całkowitej z zakresu od 0 do 5, przy czym 0
to wartość domyślna, a 5 to najwyższy priorytet. Aby ustawić priorytet
aktualizacji, użyj pola inAppUpdatePriority
w kolumnie Edits.tracks.releases
Google Play Developer API. Wszystkie nowo dodane wersje są
uważane za taki sam priorytet co wydanie. Priorytet można ustawić tylko wtedy, gdy
podczas publikowania nowej wersji, której nie można później zmienić.
Ustaw priorytet przy użyciu interfejsu Google Play Developer API zgodnie z opisem na stronie Google Play.
Interfejs API dla programistów
dokumentacji.
Priorytet aktualizacji w aplikacji należy określić w
Edit.tracks
zasób przekazany w
Edit.tracks: update
. Ten przykład pokazuje publikowanie aplikacji z kodem wersji 88
i inAppUpdatePriority
5:
{ "releases": [{ "versionCodes": ["88"], "inAppUpdatePriority": 5, "status": "completed" }] }
W kodzie aplikacji możesz sprawdzić priorytet danej aktualizacji,
UpdatePriority
:
var priority = appUpdateInfoOperation.UpdatePriority;
Rozpocznij aktualizację
Po upewnieniu się, że aktualizacja jest dostępna, możesz poprosić o aktualizację przy użyciu
AppUpdateManager.StartUpdate()
Zanim poprosisz o aktualizację, upewnij się, że masz aktualną wersję
AppUpdateInfo
obiekt. Musisz też utworzyć
AppUpdateOptions
aby skonfigurować przepływ aktualizacji.
Ten przykład pozwala utworzyć obiekt AppUpdateOptions
dla funkcji natychmiastowej
proces aktualizacji:
// Creates an AppUpdateOptions defining an immediate in-app
// update flow and its parameters.
var appUpdateOptions = AppUpdateOptions.ImmediateAppUpdateOptions();
Poniższy przykład pokazuje obiekt AppUpdateOptions
dla elastycznego
proces aktualizacji:
// Creates an AppUpdateOptions defining a flexible in-app
// update flow and its parameters.
var appUpdateOptions = AppUpdateOptions.FlexibleAppUpdateOptions();
Obiekt AppUpdateOptions
zawiera też pole AllowAssetPackDeletion
.
który określa, czy aktualizacja może wyczyścić zasób
w przypadku ograniczonej pamięci urządzenia. Ten
ma domyślną wartość false
, ale możesz przesłać parametr
allowAssetPackDeletion
opcjonalny argument funkcji ImmediateAppUpdateOptions()
lub
FlexibleAppUpdateOptions()
, aby zamiast tego ustawić ją na true
:
// Creates an AppUpdateOptions for an immediate flow that allows
// asset pack deletion.
var appUpdateOptions =
AppUpdateOptions.ImmediateAppUpdateOptions(allowAssetPackDeletion: true);
// Creates an AppUpdateOptions for a flexible flow that allows asset
// pack deletion.
var appUpdateOptions =
AppUpdateOptions.FlexibleAppUpdateOptions(allowAssetPackDeletion: true);
Kolejne kroki zależą od tego, czy zależy Ci na elastycznym aktualizację lub natychmiastową aktualizację.
Elastyczna aktualizacja
Gdy już będziesz mieć aktualny obiekt AppUpdateInfo
i poprawnie skonfigurowany obiekt
AppUpdateOptions
obiekt, możesz wywołać AppUpdateManager.StartUpdate()
do
asynchronicznie zażądać przepływu aktualizacji.
IEnumerator StartFlexibleUpdate()
{
// Creates an AppUpdateRequest that can be used to monitor the
// requested in-app update flow.
var startUpdateRequest = appUpdateManager.StartUpdate(
// The result returned by PlayAsyncOperation.GetResult().
appUpdateInfoResult,
// The AppUpdateOptions created defining the requested in-app update
// and its parameters.
appUpdateOptions);
while (!startUpdateRequest.IsDone)
{
// For flexible flow,the user can continue to use the app while
// the update downloads in the background. You can implement a
// progress bar showing the download status during this time.
yield return null;
}
}
Aby zapewnić elastyczny proces aktualizacji, musisz aktywować instalację aktualizacji aplikacji
po zakończeniu pobierania. W tym celu wywołaj
AppUpdateManager.CompleteUpdate()
,
jak w tym przykładzie:
IEnumerator CompleteFlexibleUpdate()
{
var result = appUpdateManager.CompleteUpdate();
yield return result;
// If the update completes successfully, then the app restarts and this line
// is never reached. If this line is reached, then handle the failure (e.g. by
// logging result.Error or by displaying a message to the user).
}
Natychmiastowa aktualizacja
Gdy już będziesz mieć aktualny obiekt AppUpdateInfo
i poprawnie skonfigurowany obiekt
AppUpdateOptions
obiekt, możesz wywołać AppUpdateManager.StartUpdate()
do
asynchronicznie zażądać przepływu aktualizacji.
IEnumerator StartImmediateUpdate()
{
// Creates an AppUpdateRequest that can be used to monitor the
// requested in-app update flow.
var startUpdateRequest = appUpdateManager.StartUpdate(
// The result returned by PlayAsyncOperation.GetResult().
appUpdateInfoResult,
// The AppUpdateOptions created defining the requested in-app update
// and its parameters.
appUpdateOptions);
yield return startUpdateRequest;
// If the update completes successfully, then the app restarts and this line
// is never reached. If this line is reached, then handle the failure (for
// example, by logging result.Error or by displaying a message to the user).
}
Aby natychmiast przeprowadzić aktualizację, Google Play wyświetla okno potwierdzenia użytkownika. Gdy użytkownik zaakceptuje prośbę, Google Play automatycznie pobierze instaluje aktualizację, a następnie ponownie uruchamia aplikację do zaktualizowanej wersji, instalacja powiodła się.
Obsługa błędów
W tej sekcji znajdziesz rozwiązania typowych problemów.
- Jeśli
StartUpdate()
zgłaszaArgumentNullException
, oznacza to, żeAppUpdateInfo
ma wartość null. Sprawdź, czy obiektAppUpdateInfo
zwrócony z Przed rozpoczęciem procesu aktualizacjiGetAppUpdateInfo()
nie ma wartości null. - Jeśli
PlayAsyncOperation
zwraca kod błęduErrorUpdateUnavailable
, wprowadź upewnij się, że jest dostępna zaktualizowana wersja aplikacji, która zawiera tę samą aplikację Identyfikator i klucz podpisywania. - Jeśli
PlayAsyncOperation
zwraca kod błęduErrorUpdateNotAllowed
, oznacza, że obiektAppUpdateOptions
wskazuje typ aktualizacji, który nie jest nie jest dozwolona na potrzeby dostępnej aktualizacji. Sprawdź, czy obiektAppUpdateInfo
wskazuje, że wybrany typ aktualizacji jest dozwolony przed rozpoczęciem aktualizacji przepływu danych.
Dalsze kroki
Testowanie aktualizacji aplikacji. czy integracja działa poprawnie.