Obsługa aktualizacji w aplikacji (Unity)

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łasza ArgumentNullException, oznacza to, że AppUpdateInfo ma wartość null. Sprawdź, czy obiekt AppUpdateInfo zwrócony z Przed rozpoczęciem procesu aktualizacji GetAppUpdateInfo() nie ma wartości null.
  • Jeśli PlayAsyncOperation zwraca kod błędu ErrorUpdateUnavailable, 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łędu ErrorUpdateNotAllowed, oznacza, że obiekt AppUpdateOptions wskazuje typ aktualizacji, który nie jest nie jest dozwolona na potrzeby dostępnej aktualizacji. Sprawdź, czy obiekt AppUpdateInfo wskazuje, że wybrany typ aktualizacji jest dozwolony przed rozpoczęciem aktualizacji przepływu danych.

Dalsze kroki

Testowanie aktualizacji aplikacji. czy integracja działa poprawnie.