Udostępnij za pośrednictwem


Zestaw SDK klienta cordova

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że można nadal używać programu Visual Studio App Center do momentu jego pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.

Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.

Ta wtyczka zapewnia integrację po stronie klienta dla usługi CodePush, umożliwiając łatwe dodawanie środowiska aktualizacji dynamicznej do aplikacji Cordova.

Uwaga

Wsparcie dla aplikacji Cordova zakończyło się w kwietniu 2022 r. Więcej informacji można znaleźć w blogu centrum aplikacji.

Jak to działa?

Aplikacja Cordova składa się z plików HTML, CSS i JavaScript oraz wszystkich towarzyszących obrazów, które są połączone za pomocą interfejsu wiersza polecenia Cordova i dystrybuowane jako część pliku binarnego specyficznego dla platformy (tj. pliku ipa lub .apk). Po wydaniu aplikacji aktualizowanie zawartości kodu lub obrazu wymaga ponownego skompilowania i ponownego dystrybuowania całego pliku binarnego. Ten proces obejmuje czas przeglądania sklepów, do których publikujesz.

Wtyczka CodePush ułatwia natychmiastowe uzyskiwanie ulepszeń produktu przed użytkownikami końcowymi dzięki zachowaniu synchronizacji kodu i obrazów z aktualizacjami udostępnianymi na serwerze CodePush. Dzięki temu aplikacja uzyskuje korzyści płynące z korzystania z aplikacji mobilnej w trybie offline, a także "podobną do internetu" elastyczność aktualizacji ładowania bezpośredniego natychmiast po ich udostępnieniu. To wygrana!

Aby upewnić się, że użytkownicy końcowi zawsze mają działającą wersję aplikacji, wtyczka CodePush utrzymuje kopię poprzedniej aktualizacji, dzięki czemu w przypadku przypadkowego wypchnięcia aktualizacji zawierającej awarię może ona automatycznie wycofać. Dzięki temu możesz mieć pewność, że nowo odnaleziona elastyczność wydania nie spowoduje zablokowania użytkowników, zanim będzie można wycofać się z serwera. To win-win-win!

Uwaga

Wszelkie zmiany produktu, które dotykają kodu natywnego (np. uaktualnianie wersji oprogramowania Cordova, dodawanie nowej wtyczki) nie mogą być dystrybuowane za pośrednictwem programu CodePush i dlatego muszą zostać zaktualizowane za pośrednictwem odpowiednich sklepów.

Obsługiwane platformy Cordova

Platforma Cordova 5.0.0+ jest w pełni obsługiwana wraz z następującymi skojarzonymi platformami:

Aby sprawdzić wersje każdej platformy Cordova, której obecnie używasz, możesz uruchomić następujące polecenie i sprawdzić Installed platforms listę:

    cordova platform ls

Jeśli korzystasz ze starszej platformy android lub iOS, niż wspomniano powyżej, i będzie można ją łatwo wykonać, uruchamiając następujące polecenia (pomijając platformę, jeśli nie jest to konieczne):

    cordova platform update android
    cordova platform update ios

Wprowadzenie

Uwaga

Ten artykuł zawiera odwołania do terminu lista dozwolonych, termin, którego firma Microsoft już nie używa. Po usunięciu terminu z oprogramowania usuniemy go z tego artykułu.

Po wykonaniu instrukcji dotyczących konfigurowania konta CodePush ogólnego przeznaczenia możesz uruchomić aplikację Cordova, uruchamiając następujące polecenie z katalogu głównego aplikacji aplikacji:

cordova plugin add cordova-plugin-code-push@latest

Po zainstalowaniu wtyczki CodePush skonfiguruj aplikację tak, aby korzystała z niej za pomocą następujących kroków:

  1. Dodaj klucze wdrażania do pliku config.xml , dodając odpowiedni klucz dla każdej platformy Cordova:
    <platform name="android">
        <preference name="CodePushDeploymentKey" value="YOUR-ANDROID-DEPLOYMENT-KEY" />
    </platform>
    <platform name="ios">
        <preference name="CodePushDeploymentKey" value="YOUR-IOS-DEPLOYMENT-KEY" />
    </platform>

Przypominamy, że te klucze są generowane podczas tworzenia aplikacji CodePush za pośrednictwem interfejsu wiersza polecenia. Jeśli musisz je pobrać, możesz uruchomić appcenter codepush deployment list -a <ownerName>/<appName> --displayKeyspolecenie i pobrać klucz dla określonego wdrożenia, którego chcesz użyć (np. Staging, Production).

Ważne

Zalecamy utworzenie oddzielnej aplikacji CodePush dla systemów iOS i Android, dlatego powyższy przykład deklaruje oddzielne klucze dla systemów Android i iOS. Jeśli tworzysz tylko dla jednej platformy, wystarczy określić klucz wdrożenia dla systemu Android lub iOS, aby nie trzeba było dodawać dodatkowego <platform> elementu, jak pokazano powyżej.

Począwszy od wersji 1.10.0, możesz podpisać pakiety aktualizacji (aby uzyskać więcej informacji na temat podpisywania kodu, zapoznaj się z odpowiednią sekcją dokumentacji). Aby włączyć podpisywanie kodu dla aplikacji Cordova, należy skonfigurować klucz publiczny w celu zweryfikowania podpisu pakietu, podając następujące preference ustawienie w config.xmlpliku :

    <platform name="android">
        ...
        <preference name="CodePushPublicKey" value="YOUR-PUBLIC-KEY" />
    </platform>
    <platform name="ios">
        ...
        <preference name="CodePushPublicKey" value="YOUR-PUBLIC-KEY" />
    </platform>

Dla każdej platformy można użyć tej samej pary kluczy prywatnych/publicznych.

  1. Jeśli używasz <access origin="*" /> elementu w pliku config.xml , aplikacja może już komunikować się z serwerami CodePush i można bezpiecznie pominąć ten krok. W przeciwnym razie dodaj następujące dodatkowe <access /> elementy:
    <access origin="https://codepush.appcenter.ms" />
    <access origin="https://codepush.blob.core.windows.net" />
    <access origin="https://codepushupdates.azureedge.net" />
  1. Aby upewnić się, że aplikacja może uzyskać dostęp do serwera CodePush na platformach zgodnych z dostawcą CSP, dodaj https://codepush.appcenter.ms go do tagu Content-Security-Policy meta w index.html pliku:
    <meta http-equiv="Content-Security-Policy" content="default-src https://codepush.appcenter.ms 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *" />
  1. Na koniec sprawdź, czy wtyczka cordova-plugin-whitelist jest już zainstalowana (większość aplikacji). Aby to sprawdzić, uruchom następujące polecenie:
    cordova plugin ls    

Jeśli cordova-plugin-whitelist znajduje się na liście, warto iść. W przeciwnym razie uruchom następujące polecenie, aby go dodać:

    cordova plugin add cordova-plugin-whitelist

Teraz możesz używać wtyczki w kodzie aplikacji. Aby uzyskać więcej informacji, zobacz przykładowe aplikacje i dokumentację interfejsu API.

Użycie wtyczki

Po zainstalowaniu i skonfigurowaniu wtyczki CodePush jedyną rzeczą pozostaje dodanie niezbędnego kodu do aplikacji w celu kontrolowania następujących zasad:

  1. Kiedy (i jak często) sprawdzić dostępność aktualizacji? (e.g. app uruchomić, w odpowiedzi na kliknięcie przycisku na stronie ustawień, okresowo w określonym przedziale czasu)
  2. Kiedy aktualizacja jest dostępna, jak przedstawić ją użytkownikowi końcowemu? Najprostszym sposobem wykonania tej czynności jest uruchomienie następujących czynności w programie obsługi zdarzeń aplikacji deviceready :
codePush.sync();

Jeśli aktualizacja jest dostępna, zostanie pobrana w trybie dyskretnym i zainstalowana przy następnym ponownym uruchomieniu aplikacji (jawnie przez użytkownika końcowego lub przez system operacyjny), co zapewnia najmniej inwazyjne środowisko dla użytkowników końcowych. Jeśli dostępna aktualizacja jest obowiązkowa, zostanie ona zainstalowana natychmiast, upewniając się, że użytkownik końcowy uzyska ją tak szybko, jak to możliwe.

Jeśli chcesz, aby aplikacja mogła szybciej odnajdywać aktualizacje, możesz również wybrać wywołanie sync za każdym razem, gdy aplikacja zostanie wznowiona z poziomu tła, dodając następujący kod (lub coś równoważnego) w ramach zachowania uruchamiania aplikacji. Możesz dzwonić sync tak często, jak chcesz, więc kiedy i gdzie się nazywasz, zależy od osobistych preferencji.

document.addEventListener("resume", function () {
    codePush.sync();
});

Ponadto jeśli chcesz wyświetlić okno dialogowe potwierdzenia aktualizacji ("aktywna instalacja"), skonfiguruj, kiedy dostępna aktualizacja jest zainstalowana (np. wymuś natychmiastowe ponowne uruchomienie) lub dostosuj środowisko aktualizacji w dowolny sposób, zapoznaj się sync z dokumentacją interfejsu API metody, aby uzyskać informacje na temat dostosowywania tego domyślnego zachowania.

Ważne

Chociaż umowa dla deweloperów firmy Apple w pełni zezwala na nadmierne aktualizacje kodu JavaScript i zasobów (co umożliwia kodPush!), jest to sprzeczne z ich zasadami, aby aplikacja wyświetlała monit o aktualizację. W związku z tym zalecamy, aby aplikacje rozproszone ze sklepu App Store nie włączały updateDialog opcji podczas wywoływania syncusługi , natomiast aplikacje google Play i wewnętrznie rozproszone (np. Enterprise, Fabric, HockeyApp) mogą ją włączać i dostosowywać.

Wydawanie aktualizacji

Po skonfigurowaniu i rozpowszechnianiu aplikacji dla użytkowników i wprowadzeniu pewnych zmian w kodzie lub zasobie nadszedł czas, aby natychmiast je zwolnić. Najprostszym (i zalecanym) sposobem wykonania tej czynności jest użycie release-cordova polecenia w interfejsie wiersza polecenia CodePush, które obsługuje przygotowywanie i wydawanie aktualizacji na serwerze CodePush.

Uwaga

Przed rozpoczęciem wydawania aktualizacji zaloguj się do Centrum aplikacji, uruchamiając appcenter login polecenie

W najbardziej podstawowej formie to polecenie wymaga tylko jednego parametru: nazwa właściciela + "/" + nazwa aplikacji.

appcenter codepush release-cordova -a <ownerName>/<appName>
appcenter codepush release-cordova -a <ownerName>/MyApp-ios
appcenter codepush release-cordova -a <ownerName>/MyApp-android

Napiwek

Korzystając z funkcji interfejsu wiersza polecenia set-current centrum aplikacji, nie musisz używać flagi -a, aby określić aplikację, do której jest kierowane polecenie.

Napiwek

Podczas wydawania aktualizacji do aplikacji CodePush nie musisz w ogóle wprowadzać zmian w wersji aplikacji w pliku config.xml , ponieważ w ogóle nie modyfikujesz wersji binarnej. Wystarczy podnieść tę wersję tylko wtedy, gdy uaktualnisz oprogramowanie Cordova lub jedną z wtyczki, w tym momencie musisz wydać aktualizację do magazynów natywnych. CodePush automatycznie wygeneruje "etykietę" dla każdej utworzonej wersji (np. v3) w celu ułatwienia identyfikacji jej w historii wydania.

Polecenie release-cordova umożliwia taki prosty przepływ pracy, ponieważ rozumie standardowy układ aplikacji Cordova, a więc może wygenerować aktualizację i wiedzieć dokładnie, które pliki mają być przekazywane. Ponadto w celu obsługi elastycznych strategii wydania polecenie uwidacznia wiele opcjonalnych parametrów, release-cordova które umożliwiają dostosowanie sposobu dystrybucji aktualizacji do użytkowników końcowych (np. z którymi wersjami binarnymi są zgodne? Czy wydanie powinno być wyświetlane jako obowiązkowe?).

# Release a mandatory update with a changelog
appcenter codepush release-cordova -a <ownerName>/MyApp-ios -m --description "Modified the header color"

# Release a dev Android build to 1/4 of your end users
appcenter codepush release-cordova -a <ownerName>/MyApp-android --rollout 25

# Release an update that targets users running any 1.1.* binary, as opposed to
# limiting the update to exact version name in the config.xml file
appcenter codepush release-cordova -a <ownerName>/MyApp-android --target-binary-version "~1.1.0"

# Release the update now but mark it as disabled
# so that no users can download it yet
appcenter codepush release-cordova -a <ownerName>/MyApp-ios -x

Klient CodePush obsługuje aktualizacje różnicowe, więc mimo że udostępniasz kod aplikacji w każdej aktualizacji, użytkownicy końcowi będą pobierać tylko potrzebne pliki. Usługa obsługuje to automatycznie, dzięki czemu można skupić się na tworzeniu niesamowitych aplikacji i możemy martwić się o optymalizację pobierania użytkowników końcowych.

Aby uzyskać więcej informacji na temat działania release-cordova polecenia, a także różnych udostępnianych parametrów, zapoznaj się z dokumentacją interfejsu wiersza polecenia. Ponadto jeśli wolisz obsługiwać uruchamianie cordova prepare polecenia samodzielnie, dlatego potrzebujesz jeszcze bardziej elastycznego rozwiązania niż release-cordova, zapoznaj się z release poleceniem, aby uzyskać więcej szczegółów.

Jeśli napotkasz jakiekolwiek problemy lub masz pytania/komentarze/opinie, możesz wysłać nam wiadomość e-mail lub otworzyć nowy problem w tym repozytorium i odpowiemy jako ASAP! Zobacz również pomoc i opinie.

Dokumentacja interfejsu API

Interfejs API CodePush jest udostępniany aplikacji za pośrednictwem obiektu globalnego codePush , który jest dostępny po uruchomieniu deviceready zdarzenia. Ten interfejs API uwidacznia następujące metody najwyższego poziomu:

  • checkForUpdate: usługę CodePush, czy skonfigurowane wdrożenie aplikacji ma dostępną aktualizację.
  • getCurrentPackage: pobiera metadane dotyczące aktualnie zainstalowanej aktualizacji (np. opis, czas instalacji, rozmiar).
  • getPendingPackage: pobiera metadane aktualizacji (jeśli istnieje), która została pobrana i zainstalowana, ale nie została jeszcze zastosowana za pośrednictwem ponownego uruchomienia.
  • notifyApplicationReady: powiadamia środowisko uruchomieniowe CodePush o pomyślnym pomyślnym uznaniu zainstalowanej aktualizacji. Jeśli ręcznie sprawdzasz i instalujesz aktualizacje (tj. nie używasz metody synchronizacji, aby obsłużyć to wszystko), ta metoda MUSI zostać wywołana. W przeciwnym razie program CodePush będzie traktować aktualizację jako nieudaną i wycofać ją z poprzedniej wersji po następnym ponownym uruchomieniu aplikacji.
  • restartApplication: natychmiast ponownie uruchomi aplikację. Jeśli jest oczekująca aktualizacja, zostanie ona natychmiast wyświetlona użytkownikowi końcowemu.
  • synchronizacja: umożliwia sprawdzanie aktualizacji, pobieranie jej i instalowanie wszystkich z jednym wywołaniem. Jeśli nie potrzebujesz niestandardowego interfejsu użytkownika lub zachowania, zalecamy, aby większość deweloperów korzystała z tej metody podczas integrowania aplikacji CodePush z aplikacjami.

Ponadto następujące obiekty i wyliczenia są również uwidocznione globalnie w ramach interfejsu API CodePush:

codePush.checkForUpdate

codePush.checkForUpdate(onSuccess, onError?, deploymentKey?: String);

Wysyła zapytanie do usługi CodePush, aby sprawdzić, czy skonfigurowane wdrożenie aplikacji ma dostępną aktualizację. Domyślnie będzie on używać klucza wdrożenia skonfigurowanego w pliku config.xml , ale można to zastąpić, określając wartość za pomocą opcjonalnego deploymentKey parametru. Może to być przydatne, gdy chcesz dynamicznie "przekierowywać" użytkownika do określonego wdrożenia, na przykład zezwalać na "wczesny dostęp" za pośrednictwem jaja wielkanocnego lub przełącznika ustawień użytkownika.

Po zakończeniu sprawdzania aktualizacji zostanie wyzwolenie onUpdateCheck wywołania zwrotnego z jedną z dwóch możliwych wartości:

  1. null jeśli nie ma dostępnej aktualizacji. Dzieje się tak w następujących scenariuszach:
    • Skonfigurowane wdrożenie nie zawiera żadnych wersji, więc nie ma nic do zaktualizowania.
    • Najnowsza wersja w skonfigurowanym wdrożeniu jest przeznaczona dla innej wersji binarnej niż bieżąca wersja (starsza lub nowsza).
    • Obecnie uruchomiona aplikacja ma już najnowszą wersję ze skonfigurowanego wdrożenia, więc nie potrzebuje ponownie wydania.
  2. RemotePackage Wystąpienie reprezentujące dostępną aktualizację, którą można sprawdzić i pobrać później.

Parametry:

  • onSuccess: wywołanie zwrotne wywoływane po otrzymaniu pomyślnej odpowiedzi z serwera. Wywołanie zwrotne odbiera jeden parametr, który został opisany powyżej.
  • onError: opcjonalne wywołanie zwrotne wywoływane w przypadku błędu. Wywołanie zwrotne przyjmuje jeden parametr błędu zawierający szczegóły błędu.
  • deploymentKey: opcjonalny klucz wdrożenia, który zastępuje ustawienie config.xml .

Przykładowe użycie:

codePush.checkForUpdate(function (update) {
    if (!update) {
        console.log("The app is up to date.");
    } else {
        console.log("An update is available! Should we download it?");
    }
});

codePush.getCurrentPackage

codePush.getCurrentPackage(onSuccess, onError?);

Pobiera metadane dotyczące aktualnie zainstalowanego "pakietu" (np. opis, czas instalacji). Może to być przydatne w scenariuszach, takich jak wyświetlenie okna dialogowego "co nowego?" po zastosowaniu aktualizacji lub sprawdzenie, czy istnieje oczekująca aktualizacja, która oczekuje na zastosowanie za pośrednictwem wznowienia lub ponownego uruchomienia.

Po zakończeniu pobierania aktualizacji wywołanie zwrotne zostanie wyzwolony onSuccess z jedną z dwóch możliwych wartości:

  1. null jeśli aplikacja aktualnie uruchamia stronę początkową HTML z pliku binarnego, a nie aktualizacji CodePush. Dzieje się tak w następujących scenariuszach:
    • Użytkownik końcowy zainstalował plik binarny aplikacji i musi jeszcze zainstalować aktualizację CodePush
    • Użytkownik końcowy zainstalował aktualizację pliku binarnego (np. ze sklepu), która wyczyściła stare aktualizacje CodePush i dała pierwszeństwo przed plikiem binarnym.
  2. LocalPackage Wystąpienie reprezentujące metadane aktualnie uruchomionej aktualizacji CodePush.

Parametry:

  • onSuccess: wywołanie zwrotne wywoływane po otrzymaniu metadanych dotyczących aktualnie uruchomionej aktualizacji. Wywołanie zwrotne odbiera jeden parametr, który został opisany powyżej.
  • onError: opcjonalne wywołanie zwrotne wywoływane w przypadku błędu. Wywołanie zwrotne przyjmuje jeden parametr błędu zawierający szczegóły błędu.

Przykładowe użycie:

codePush.getCurrentPackage(function (update) {
    if (!update) {
        console.log("No updates have been installed");
        return;
    }

    // If the current app "session" represents the first time
    // this update has run, and it had a description provided
    // with it upon release, let's show it to the end user
    if (update.isFirstRun && update.description) {
        // Display a "what's new?" modal
    }
});

codePush.getPendingPackage

codePush.getPendingPackage(onSuccess, onError?);

Pobiera metadane dla aktualnie oczekującej aktualizacji (jeśli istnieje). Aktualizacja jest uznawana za "oczekującą", jeśli została pobrana i zainstalowana, ale nie została jeszcze zastosowana za pośrednictwem ponownego uruchomienia aplikacji. Aktualizacja może być w tym stanie tylko wtedy, gdy InstallMode.ON_NEXT_RESTART InstallMode.ON_NEXT_RESUME została określona podczas wywoływania sync lub LocalPackage.install, a aplikacja nie została jeszcze ponownie uruchomiona lub wznowiona (odpowiednio). Ta metoda może być przydatna, jeśli chcesz określić, czy istnieje oczekująca aktualizacja, a następnie monituj użytkownika o natychmiastowe ponowne uruchomienie (za pośrednictwem codePush.restartApplication) w celu jej zastosowania.

Po zakończeniu pobierania aktualizacji wywołanie zwrotne zostanie wyzwolony onSuccess z jedną z dwóch możliwych wartości:

  1. null jeśli aplikacja nie ma obecnie oczekującej aktualizacji (np. aplikacja jest już uruchomiona w najnowszej dostępnej wersji).
  2. LocalPackage Wystąpienie reprezentujące metadane aktualnie oczekującej aktualizacji CodePush.

Parametry:

  • onSuccess: wywołanie zwrotne wywoływane po otrzymaniu metadanych dotyczących aktualnie oczekującej aktualizacji. Wywołanie zwrotne odbiera jeden parametr, który został opisany powyżej.
  • onError: opcjonalne wywołanie zwrotne wywoływane w przypadku błędu. Wywołanie zwrotne przyjmuje jeden parametr błędu zawierający szczegóły błędu.

Przykładowe użycie:

codePush.getPendingPackage(function (update) {
    if (update) {
        // An update is currently pending, ask the
        // user if they want to restart
    }
});

codePush.notifyApplicationReady

codePush.notifyApplicationReady(notifySucceeded?, notifyFailed?);

Powiadamia środowisko uruchomieniowe CodePush, że świeżo zainstalowana aktualizacja powinna zostać uznana za pomyślną, więc automatyczne wycofanie po stronie klienta nie jest konieczne. Należy wywołać tę funkcję gdzieś w kodzie zaktualizowanego pakietu. W przeciwnym razie po następnym ponownym uruchomieniu aplikacji środowisko uruchomieniowe CodePush zakłada, że zainstalowana aktualizacja nie powiodła się i wycofała poprzednią wersję. To zachowanie istnieje, aby zapewnić, że użytkownicy końcowi nie są blokowani przez uszkodzoną aktualizację.

Jeśli używasz sync funkcji i przeprowadzasz sprawdzanie aktualizacji podczas uruchamiania aplikacji, nie musisz notifyApplicationReady wywoływać ręcznie, ponieważ sync wywoła ją za Ciebie. To zachowanie istnieje z powodu założenia, że po sync wywołaniu w aplikacji reprezentuje dobre przybliżenie pomyślnego uruchomienia.

Parametry:

  • notifySucceeded: opcjonalne wywołanie zwrotne wywoływane, jeśli wtyczka została pomyślnie powiadomiona.
  • notifyFailed: opcjonalne wywołanie zwrotne wywoływane, jeśli wystąpił błąd z powiadomieniem o wtyczce.

codePush.restartApplication

codePush.restartApplication();

Natychmiast ponownie uruchomi aplikację. Ta metoda jest przeznaczona dla zaawansowanych scenariuszy i jest przydatna przede wszystkim wtedy, gdy spełnione są następujące warunki:

  1. Aplikacja określa wartość ON_NEXT_RESTART trybu instalacji lub ON_NEXT_RESUME podczas wywoływania sync metod lub LocalPackage.install . Ta aktualizacja nie zostanie zastosowana do momentu ponownego uruchomienia aplikacji (przez użytkownika końcowego lub systemu operacyjnego) lub wznowienia, więc aktualizacja nie będzie natychmiast wyświetlana użytkownikowi końcowemu.
  2. Masz zdarzenie użytkownika specyficzne dla aplikacji (np. użytkownik końcowy przechodzi z powrotem do trasy głównej aplikacji), które umożliwia zastosowanie aktualizacji w sposób nietrudny i potencjalnie pobiera aktualizację przed użytkownikiem końcowym wcześniej niż czekać do następnego ponownego uruchomienia lub wznowienia.

codePush.sync

codePush.sync(syncCallback?, syncOptions?, downloadProgress?, syncErrback?);

Synchronizuje kod i obrazy aplikacji z najnowszą wersją do skonfigurowanego wdrożenia. checkForUpdate W przeciwieństwie do metody, która sprawdza obecność aktualizacji i pozwala kontrolować, co należy zrobić dalej, sync obsługuje sprawdzanie aktualizacji, pobieranie i instalowanie środowiska.

Ta metoda zapewnia obsługę dwóch różnych (ale dostosowywalnych) trybów w celu łatwego włączania aplikacji z różnymi wymaganiami:

  1. Tryb dyskretny (zachowanie domyślne), który automatycznie pobiera dostępne aktualizacje i stosuje je przy następnym ponownym uruchomieniu aplikacji (np. system operacyjny lub użytkownik końcowy go zabił lub urządzenie zostało uruchomione ponownie). Dzięki temu całe środowisko aktualizacji jest "dyskretne" dla użytkownika końcowego, ponieważ nie widzi żadnych monitów o aktualizację ani "syntetycznych" ponownych uruchomień aplikacji.
  2. Tryb aktywny, który po udostępnieniu aktualizacji monituje użytkownika końcowego o uprawnienie przed jego pobraniem, a następnie natychmiast zastosuje aktualizację. Jeśli aktualizacja została wydana przy użyciu flagi obowiązkowej, użytkownik końcowy nadal będzie powiadamiany o aktualizacji, ale nie będzie miał wyboru, aby go zignorować.

Przykładowe użycie:

// Fully silent update that keeps the app in
// sync with the server, without ever
// interrupting the end user
codePush.sync();

// Active update that lets the end user know
// about each update, and displays it to them
// immediately after downloading it
codePush.sync(null, { updateDialog: true, installMode: InstallMode.IMMEDIATE });

Napiwek

Jeśli chcesz zdecydować, czy sprawdzasz, czy pobierasz dostępną aktualizację na podstawie poziomu baterii urządzenia użytkownika końcowego, warunków sieciowych itp., zawijanie wywołania do synchronizacji w warunku, który gwarantuje, że wywołanie jest wywoływane tylko wtedy, gdy jest potrzebne.

Podczas gdy metoda synchronizacji próbuje ułatwić dyskretne i aktywne aktualizacje z niewielką konfiguracją, akceptuje następujące opcjonalne parametry, które umożliwiają dostosowanie wielu aspektów domyślnego zachowania wymienionego powyżej:

  • syncCallback: wywoływana, gdy proces synchronizacji przechodzi z jednego etapu do drugiego w ogólnym procesie aktualizacji. Metoda jest wywoływana przy użyciu kodu stanu reprezentującego bieżący stan i może być dowolną SyncStatus z wartości.
  • syncOptions: opcjonalny SyncOptions parametr konfigurujący zachowanie operacji synchronizacji.
  • downloadProgress: wywoływane okresowo, gdy dostępna aktualizacja jest pobierana z serwera CodePush. Metoda jest wywoływana z obiektem DownloadProgress , który zawiera następujące dwie właściwości:
    • totalBytes (number) — całkowita liczba bajtów, które mają zostać odebrane dla tej aktualizacji (tj. rozmiar zestawu plików, który zmienił się z poprzedniej wersji).
    • receivedBytes (Number) — liczba pobranych do tej pory bajtów, których można użyć do śledzenia postępu pobierania.
  • syncErrback: wywoływana, gdy wystąpił błąd w dowolnych krokach wewnętrznych synchronizacji. Metoda jest wywoływana przy użyciu standardowego obiektu javascript Error jako pierwszego argumentu.

SyncOptions

sync Metoda próbuje ułatwić cichą i aktywną aktualizację z niewielką konfiguracją, ale akceptuje obiekt "options", który umożliwia dostosowanie wielu aspektów domyślnego zachowania wymienionego powyżej:

  • deploymentKey (ciąg) — określa klucz wdrożenia, dla którego chcesz wykonać zapytanie dotyczące aktualizacji. Domyślnie ta wartość pochodzi z pliku config.xml , ale ta opcja umożliwia zastąpienie jej ze strony skryptu, jeśli konieczne jest dynamiczne użycie innego wdrożenia dla określonego wywołania metody sync.
  • installMode (InstallMode) — określa, kiedy chcesz zainstalować opcjonalne aktualizacje (tj. te, które nie są oznaczone jako obowiązkowe). Wartość domyślna to InstallMode.ON_NEXT_RESTART. Zapoznaj się z InstallMode dokumentacją wyliczenia, aby uzyskać opis dostępnych opcji i ich działania.
  • mandatoryInstallMode (InstallMode) — określa, kiedy chcesz zainstalować aktualizacje oznaczone jako obowiązkowe. Wartość domyślna to InstallMode.IMMEDIATE. Zapoznaj się z InstallMode dokumentacją wyliczenia, aby uzyskać opis dostępnych opcji i ich działania.
  • minimumBackgroundDuration (liczba) — określa minimalną liczbę sekund, przez które aplikacja ma znajdować się w tle przed ponownym uruchomieniem aplikacji. Ta właściwość ma zastosowanie tylko do aktualizacji zainstalowanych przy użyciu programu InstallMode.ON_NEXT_RESUMEi może być przydatna do wcześniejszego pobrania aktualizacji przed użytkownikami końcowymi bez zbyt nietrudnego. Wartość domyślna to 0, która stosuje aktualizację natychmiast po wznowieniu, jednak długo była w tle.
  • ignoreFailedUpdates (wartość logiczna) — określa, czy dostępna aktualizacja powinna być ignorowana, jeśli została wcześniej zainstalowana i wycofana na kliencie (ponieważ notifyApplicationReady nie została pomyślnie wywołana). Wartość domyślna to true.
  • updateDialog (UpdateDialogOptions) — obiekt "options" używany do określenia, czy okno dialogowe potwierdzenia powinno być wyświetlane użytkownikowi końcowemu, gdy aktualizacja jest dostępna, a jeśli tak, jakie ciągi mają być używane. Wartość domyślna to null, co powoduje wyłączenie okna dialogowego. Ustawienie tej wartości na dowolną true wartość spowoduje włączenie okna dialogowego z ciągami domyślnymi, a przekazanie obiektu do tego parametru umożliwia włączenie okna dialogowego, a także zastąpienie jednego lub kilku ciągów domyślnych.

Poniższa lista reprezentuje dostępne opcje i ich wartości domyślne:

  • appendReleaseDescription (wartość logiczna) — wskazuje, czy chcesz dołączyć opis dostępnej wersji do komunikatu powiadomienia wyświetlanego użytkownikowi końcowemu. Wartość domyślna to false.
  • descriptionPrefix (Ciąg) — wskazuje ciąg, z którym ma zostać poprzedzony opis wydania, jeśli istnieje, podczas wyświetlania powiadomienia o aktualizacji użytkownikowi końcowemu. Wartość domyślna to " Description: ".
  • mandatoryContinueButtonLabel (Ciąg): tekst używany dla przycisku, który użytkownik końcowy musi nacisnąć, aby zainstalować obowiązkową aktualizację. Wartość domyślna to "Continue".
  • mandatoryUpdateMessage (ciąg) — tekst używany jako treść powiadomienia o aktualizacji, gdy aktualizacja jest określana jako obowiązkowa. Wartość domyślna to "An update is available that must be installed.".
  • optionalIgnoreButtonLabel (Ciąg) — tekst używany dla przycisku, który użytkownik końcowy może nacisnąć, aby zignorować dostępną opcjonalną aktualizację. Wartość domyślna to "Ignore".
  • optionalInstallButtonLabel (ciąg) — tekst używany dla przycisku, który użytkownik końcowy może nacisnąć, aby zainstalować opcjonalną aktualizację. Wartość domyślna to "Install".
  • optionalUpdateMessage (ciąg) — tekst używany jako treść powiadomienia o aktualizacji, gdy aktualizacja jest opcjonalna. Wartość domyślna to "An update is available. Would you like to install it?". *- updateTitle (ciąg) — tekst używany jako nagłówek powiadomienia o aktualizacji wyświetlanego użytkownikowi końcowemu. Wartość domyślna to "Update available".

Przykładowe użycie:

// Download the update silently, but install it on
// the next resume, as long as at least 5 minutes
// has passed since the app was put into the background.
codePush.sync(null, { installMode: InstallMode.ON_NEXT_RESUME, minimumBackgroundDuration: 60 * 5 });

// Download the update silently, and install optional updates
// on the next restart, but install mandatory updates on the next resume.
codePush.sync(null, { mandatoryInstallMode: InstallMode.ON_NEXT_RESUME });

// Changing the title displayed in the
// confirmation dialog of an "active" update
codePush.sync(null, { updateDialog: { title: "An update is available!" } });

// Displaying an update prompt that includes the
// description for the CodePush release
codePush.sync(null, {
   updateDialog: {
    appendReleaseDescription: true,
    descriptionPrefix: "\n\nChange log:\n"
   },
   installMode: InstallMode.IMMEDIATE
});

// Silently check for the update, but
// display a custom downloading UI
// via the SyncStatus and DownloadProgress callbacks
codePush.sync(syncStatus, null, downloadProgress);

function syncStatus(status) {
    switch (status) {
        case SyncStatus.DOWNLOADING_PACKAGE:
            // Show "downloading" modal
            break;
        case SyncStatus.INSTALLING_UPDATE:
            // Hide "downloading" modal
            break;
    }
}

function downloadProgress(downloadProgress) {
    if (downloadProgress) {
    	// Update "downloading" modal with current download %
        //console.log("Downloading " + downloadProgress.receivedBytes + " of " + downloadProgress.totalBytes);
    }
}

Metodę sync można wywołać w dowolnym miejscu, w którym chcesz sprawdzić aktualizację. Może to być w deviceready programie obsługi zdarzeń, click zdarzeniu przycisku, w wywołaniu zwrotnym okresowego czasomierza lub cokolwiek innego ma sens dla Twoich potrzeb. Podobnie jak w przypadku checkForUpdate metody, uruchomi żądanie sieciowe, aby sprawdzić aktualizację w tle, więc nie wpłynie to na czas odpowiedzi wątku interfejsu użytkownika ani wątku języka JavaScript.

Spakuj obiekty

Metody checkForUpdate i getCurrentPackage wywołują wywołania zwrotne sukcesu, które po wyzwoleniu zapewniają dostęp do obiektów "package". Pakiet reprezentuje aktualizację kodu, a także wszelkie dodatkowe metadane (np. opis, obowiązkowy?). Interfejs API CodePush ma rozróżnienie między następującymi typami pakietów:

  1. LocalPackage: reprezentuje pobraną aktualizację, która jest już uruchomiona lub została zainstalowana i oczekuje na ponowne uruchomienie aplikacji.
  2. RemotePackage: reprezentuje dostępną aktualizację na serwerze CodePush, który nie został jeszcze pobrany.

Pakiet lokalny

Zawiera szczegółowe informacje o aktualizacji, która została pobrana lokalnie lub już zainstalowana. Odwołanie do wystąpienia tego obiektu można uzyskać, wywołując codePush.getCurrentPackage metodę lub jako wartość podaną dla wywołania zwrotnego powodzenia RemotePackage.download metody.

Właściwości
  • appVersion: natywna wersja aplikacji, dla których jest przeznaczona ta aktualizacja pakietu. (Ciąg)
  • deploymentKey: klucz wdrożenia pakietu. (Ciąg)
  • description: Opis aktualizacji. Jest to ta sama wartość określona w interfejsie wiersza polecenia po wydaniu aktualizacji. (Ciąg)
  • failedInstall: wskazuje, czy ta aktualizacja została wcześniej zainstalowana, ale została wycofana. Metoda sync automatycznie zignoruje aktualizacje, które wcześniej zakończyły się niepowodzeniem, więc musisz martwić się tylko o tę właściwość, jeśli używasz polecenia checkForUpdate. (Wartość logiczna)
  • isFirstRun: flaga wskazująca, czy bieżące uruchomienie aplikacji jest pierwszym po zastosowaniu pakietu. (Wartość logiczna)
  • isMandatory: wskazuje, czy aktualizacja jest uznawana za obowiązkową. Jest to wartość określona w interfejsie wiersza polecenia po wydaniu aktualizacji. (Wartość logiczna)
  • label: etykieta wewnętrzna automatycznie nadana aktualizacji przez serwer CodePush, na przykład v5. Ta wartość jednoznacznie identyfikuje aktualizację we wdrożeniu. (Ciąg)
  • packageHash: wartość skrótu SHA aktualizacji. (Ciąg)
  • packageSize: rozmiar kodu zawartego w aktualizacji w bajtach. (Liczba)
Metody
  • install(installSuccess, installError, installOptions): instaluje ten pakiet w aplikacji. Zachowanie instalacji zależy od podanego installOptionselementu . Domyślnie pakiet aktualizacji jest instalowany w trybie dyskretnym, a aplikacja jest ponownie ładowana przy użyciu nowej zawartości podczas następnego uruchamiania aplikacji. Podczas pierwszego uruchomienia po aktualizacji aplikacja będzie czekać na wywołanie codePush.notifyApplicationReady() . Po wywołaniu tego wywołania operacja instalacji jest uznawana za pomyślną. W przeciwnym razie operacja instalacji zostanie oznaczona jako nieudana, a aplikacja zostanie przywrócona do poprzedniej wersji podczas następnego uruchomienia.
InstallOptions

Interfejs definiujący kilka opcji dostosowywania zachowania operacji instalacji.

  • installMode: służy do określania trybu InstallMode używanego do operacji instalacji. Wartość domyślna to InstallMode.ON_NEXT_RESTART.
  • mandatoryInstallMode: służy do określania trybu InstallMode używanego do operacji instalacji, jeśli pakiet jest obowiązkowy. Wartość domyślna to InstallMode.IMMEDIATE.
  • minimumBackgroundDuration: jeśli parametr installMode to InstallMode.ON_NEXT_RESUME, służy do określenia czasu, przez jaki aplikacja musi znajdować się w tle przed zainstalowaniem aktualizacji po wznowieniu. Wartość domyślna to 0.

Przykładowe użycie:

// App version 1 (current version)

var onError = function (error) {
    console.log("An error occurred. " + error);
};

var onInstallSuccess = function () {
    console.log("Installation succeeded.");
};

var onPackageDownloaded = function (localPackage) {
    // Install regular updates after someone navigates away from the app for more than 2 minutes
    // Install mandatory updates after someone restarts the app
    localPackage.install(onInstallSuccess, onError, { installMode: InstallMode.ON_NEXT_RESUME, minimumBackgroundDuration: 120, mandatoryInstallMode: InstallMode.ON_NEXT_RESTART });
};

var onUpdateCheck = function (remotePackage) {
    if (!remotePackage) {
        console.log("The application is up to date.");
    } else {
        // The hash of each previously reverted package is stored for later use.
        // This way, we avoid going into an infinite bad update/revert loop.
        if (!remotePackage.failedInstall) {
            console.log("A CodePush update is available. Package hash: " + remotePackage.packageHash);
            remotePackage.download(onPackageDownloaded, onError);
        } else {
            console.log("The available update was attempted before and failed.");
        }
    }
};

window.codePush.checkForUpdate(onUpdateCheck, onError);

//------------------------------------------------
// App version 2 (updated version)
var app = {
    onDeviceReady: function () {
        // Calling this function is required during the first application run after an update.
        // If not called, the application will be reverted to the previous version.
        window.codePush.notifyApplicationReady();
        // ...
    }
}

Aby zapoznać się z przykładem sposobu ochrony przed nieprawidłową aktualizacją, zobacz dokumentację notifyApplicationReady().

RemotePackage

Zawiera szczegółowe informacje o aktualizacji dostępnej do pobrania z serwera CodePush. Odwołanie do wystąpienia tego obiektu można uzyskać, wywołując codePush.checkForUpdate metodę, gdy aktualizacja jest dostępna. Jeśli używasz interfejsu API synchronizacji, nie musisz martwić się o usługę RemotePackage, ponieważ automatycznie obsłuży proces pobierania i instalacji.

Właściwości

Obiekt RemotePackage dziedziczy wszystkie te same właściwości co LocalPackageelement , ale obejmuje jedną dodatkową:

  • downloadUrl: adres URL, pod którym pakiet jest dostępny do pobrania. Ta właściwość jest wymagana tylko do użycia zaawansowanego, ponieważ download metoda automatycznie obsłuży pozyskiwanie aktualizacji. (Ciąg)
Metody
  • abortDownload(abortSuccess, abortError): przerywa bieżącą sesję pobierania, jeśli istnieje.
  • download(downloadSuccess, downloadError, downloadProgress): Pobiera aktualizację pakietu z usługi CodePush. Wywołanie downloadSuccess zwrotne jest wywoływane z argumentem LocalPackage reprezentującym pobrany pakiet. Opcjonalne downloadProgress wywołanie zwrotne jest wywoływane kilka razy w trakcie postępu pobierania z jednym DownloadProgress parametrem.
DownloadProgress

Definiuje format obiektu DownloadProgress używanego do wysyłania okresowych powiadomień o aktualizacji w trakcie pobierania aktualizacji.

Właściwości
  • totalBytes: rozmiar pakietu aktualizacji pobierania w bajtach. (Liczba)
  • receivedBytes: liczba bajtów już pobranych. (Liczba)

Przykładowe użycie:

var onError = function (error) {
    console.log("An error occurred. " + error);
};

var onPackageDownloaded = function (localPackage) {
    console.log("Package downloaded at: " + localPackage.localPath);
    // you can now update your application to the downloaded version by calling localPackage.install()
};

var onProgress = function (downloadProgress) {
    console.log("Downloading " + downloadProgress.receivedBytes + " of " + downloadProgress.totalBytes + " bytes.");
};

var onUpdateCheck = function (remotePackage) {
    if (!remotePackage) {
        console.log("The application is up to date.");
    } else {
        console.log("A CodePush update is available. Package hash: " + remotePackage.packageHash);
        remotePackage.download(onPackageDownloaded, onError, onProgress);
    }
};

window.codePush.checkForUpdate(onUpdateCheck, onError);

Wyliczenia

Interfejs API CodePush zawiera następujące obiekty "wyliczenia", których można użyć do dostosowywania środowiska aktualizacji i są dostępne globalnie poza obiektem window :

InstallMode

To wyliczenie określone, gdy chcesz, aby zainstalowana aktualizacja została rzeczywiście zastosowana i może zostać przekazana do sync metod lub LocalPackage.install . Zawiera następujące wartości:

  • NATYCHMIASTOWE: aktualizacja zostanie natychmiast zastosowana do uruchomionej aplikacji. Aplikacja zostanie natychmiast załadowana ponownie z nową zawartością.
  • ON_NEXT_RESTART: wskazuje, że chcesz zainstalować aktualizację, ale nie wymuszaj ponownego uruchamiania aplikacji. Gdy aplikacja jest "naturalnie" ponownie uruchomiona (ze względu na system operacyjny lub użytkownik końcowy zabijający ją), aktualizacja zostanie bezproblemowo pobrana. Ta wartość jest odpowiednia w przypadku przeprowadzania aktualizacji dyskretnych, ponieważ prawdopodobnie będzie to destrukcyjne dla użytkownika końcowego, jeśli aplikacja nagle została ponownie uruchomiona znikąd, ponieważ nie zdałaby sobie sprawy, że aktualizacja zostałaby nawet pobrana. Jest to tryb domyślny używany zarówno dla metod , jak sync i LocalPackage.install .

Aby zapoznać się z przykładem sposobu ochrony przed nieprawidłową aktualizacją, zobacz dokumentację notifyApplicationReady().

RemotePackage

Zawiera szczegółowe informacje o aktualizacji dostępnej do pobrania z serwera CodePush. Odwołanie do wystąpienia tego obiektu można uzyskać, wywołując codePush.checkForUpdate metodę, gdy aktualizacja jest dostępna. Jeśli używasz interfejsu API synchronizacji, nie musisz martwić się o usługę RemotePackage, ponieważ automatycznie obsłuży proces pobierania i instalacji.

Właściwości

Obiekt RemotePackage dziedziczy wszystkie te same właściwości co LocalPackageelement , ale obejmuje jedną dodatkową:

  • downloadUrl: adres URL, pod którym pakiet jest dostępny do pobrania. Ta właściwość jest wymagana tylko do użycia zaawansowanego, ponieważ download metoda automatycznie obsłuży pozyskiwanie aktualizacji. (Ciąg)
Metody
  • abortDownload(abortSuccess, abortError): przerywa bieżącą sesję pobierania, jeśli istnieje.
  • download(downloadSuccess, downloadError, downloadProgress): Pobiera aktualizację pakietu z usługi CodePush. Wywołanie downloadSuccess zwrotne jest wywoływane z argumentem LocalPackage reprezentującym pobrany pakiet. Opcjonalne downloadProgress wywołanie zwrotne jest wywoływane kilka razy w trakcie postępu pobierania z jednym DownloadProgress parametrem.
DownloadProgress

Definiuje format obiektu DownloadProgress używanego do wysyłania okresowych powiadomień o aktualizacji w trakcie pobierania aktualizacji.

# Właściwości
  • totalBytes: rozmiar pakietu aktualizacji pobierania w bajtach. (Liczba)
  • receivedBytes: liczba bajtów już pobranych. (Liczba)

Przykładowe użycie:

var onError = function (error) {
    console.log("An error occurred. " + error);
};

var onPackageDownloaded = function (localPackage) {
    console.log("Package downloaded at: " + localPackage.localPath);
    // you can now update your application to the downloaded version by calling localPackage.install()
};

var onProgress = function (downloadProgress) {
    console.log("Downloading " + downloadProgress.receivedBytes + " of " + downloadProgress.totalBytes + " bytes.");
};

var onUpdateCheck = function (remotePackage) {
    if (!remotePackage) {
        console.log("The application is up to date.");
    } else {
        console.log("A CodePush update is available. Package hash: " + remotePackage.packageHash);
        remotePackage.download(onPackageDownloaded, onError, onProgress);
    }
};

window.codePush.checkForUpdate(onUpdateCheck, onError);

Wyliczenia

Interfejs API CodePush zawiera następujące obiekty "wyliczenia", których można użyć do dostosowywania środowiska aktualizacji i są dostępne globalnie poza obiektem window :

InstallMode

To wyliczenie określone, gdy chcesz, aby zainstalowana aktualizacja została rzeczywiście zastosowana i może zostać przekazana do sync metod lub LocalPackage.install . Zawiera następujące wartości:

  • NATYCHMIASTOWE: aktualizacja zostanie natychmiast zastosowana do uruchomionej aplikacji. Aplikacja zostanie natychmiast załadowana ponownie z nową zawartością.
  • ON_NEXT_RESTART: wskazuje, że chcesz zainstalować aktualizację, ale nie wymuszaj ponownego uruchamiania aplikacji. Gdy aplikacja jest "naturalnie" ponownie uruchomiona (ze względu na system operacyjny lub użytkownik końcowy zabijający ją), aktualizacja zostanie bezproblemowo pobrana. Ta wartość jest odpowiednia w przypadku przeprowadzania aktualizacji dyskretnych, ponieważ prawdopodobnie będzie to destrukcyjne dla użytkownika końcowego, jeśli aplikacja nagle została ponownie uruchomiona znikąd, ponieważ nie zdałaby sobie sprawy, że aktualizacja zostałaby nawet pobrana. Jest to tryb domyślny używany zarówno dla metod , jak sync i LocalPackage.install .
  • ON_NEXT_RESUME: wskazuje, że chcesz zainstalować aktualizację, ale nie chcesz ponownie uruchamiać aplikacji do czasu następnego wznowienia jej z poziomu tła przez użytkownika końcowego. W ten sposób nie zakłócasz bieżącej sesji, ale możesz uzyskać aktualizację przed nimi wcześniej niż trzeba czekać na następne naturalne ponowne uruchomienie. Ta wartość jest odpowiednia dla instalacji dyskretnych, które można stosować w wznowieniu w sposób nieinwazyjny.

SyncStatus

Definiuje możliwe stany operacji synchronizacji . Istnieją dwie kategorie stanów: pośrednie i wynik (końcowy). Stany pośrednie reprezentują stany postępu operacji synchronizacji i nie są ostateczne. Stan wyników reprezentuje końcowe stany operacji synchronizacji. Każda operacja synchronizacji kończy się tylko jednym stanem wyników, ale może mieć zero lub więcej stanów pośrednich.

  • UP_TO_DATE: aplikacja jest w pełni aktualna w przypadku skonfigurowanego wdrożenia.
  • UPDATE_INSTALLED: zainstalowano dostępną aktualizację i zostanie uruchomiona natychmiast po powrocie funkcji wywołania zwrotnego lub przy następnym wznowieniu/ponownym uruchomieniu aplikacji w zależności od określonego InstallMode w SyncOptionselem.
  • UPDATE_IGNORED: aplikacja ma opcjonalną aktualizację, którą użytkownik końcowy zdecydował się zignorować. (Ma to zastosowanie tylko wtedy, gdy updateDialog jest używany)
  • BŁĄD: Wystąpił błąd podczas sync operacji. Może to być błąd podczas komunikowania się z serwerem, pobierania lub rozpakowywania aktualizacji. Dzienniki konsoli powinny zawierać więcej informacji o tym, co się stało. W tym przypadku nie zastosowano żadnej aktualizacji.
  • IN_PROGRESS: Inna synchronizacja jest już uruchomiona, więc ta próba synchronizacji została przerwana.
  • CHECKING_FOR_UPDATE: serwer CodePush jest odpytywany o aktualizację.
  • AWAITING_USER_ACTION: dostępna jest aktualizacja, a użytkownikowi końcowemu zostało wyświetlone okno dialogowe potwierdzenia. (Ma to zastosowanie tylko wtedy, gdy updateDialog jest używany)
  • DOWNLOADING_PACKAGE: dostępna aktualizacja jest pobierana z serwera CodePush.
  • INSTALLING_UPDATE: pobrano dostępną aktualizację i zostanie ona zainstalowana.

PhoneGap Build

Ta wtyczka jest zgodna z kompilacją PhoneGap i obsługuje tworzenie wbudowanych kompilacji systemów Android i iOS. Jednak aby program CodePush obliczał skrót zawartości binarnej w systemie Android, kompilacja PhoneGap musi używać narzędzia Gradle do kompilowania aplikacji, która nie jest jego zachowaniem domyślnym (używa aplikacji Ant). Aby rozwiązać ten problem, dodaj następujący element do pliku config.xml projektu jako element podrzędny <platform name="android"> elementu:

<preference name="android-build-tool" value="gradle" />

Przykładowe aplikacje

Społeczność Cordova przypadkowo stworzyła kilka niesamowitych aplikacji typu open source, które mogą służyć jako przykłady dla deweloperów, którzy zaczynają pracę. Poniższa lista zawiera aplikacje Cordova systemu operacyjnego, które również korzystają z platformy CodePush i mogą służyć do wyświetlania sposobu korzystania z usługi przez inne osoby:

Uwaga

Jeśli masz utworzoną aplikację Cordova przy użyciu platformy CodePush, to open source, daj nam znać. Chcielibyśmy dodać ją do tej listy!