Zestaw SDK klienta cordova

Ważne

Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że możesz nadal używać programu Visual Studio App Center do momentu jej 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 z usługą CodePush, umożliwiając łatwe dodawanie dynamicznego środowiska aktualizacji 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 zasobów kodu lub obrazu wymaga ponownego kompilowania i redystrybucji całego pliku binarnego. Ten proces obejmuje czas przeglądu sklepów, do których publikujesz.

Wtyczka CodePush ułatwia natychmiastowe wprowadzanie ulepszeń produktów przed użytkownikami końcowymi dzięki zachowaniu synchronizacji kodu i obrazów z aktualizacjami wydanymi na serwerze CodePush. Dzięki temu twoja aplikacja uzyskuje korzyści z korzystania z mobilnego środowiska offline, a także elastyczność "przypominającą internet" aktualizacji ładowania bezpośredniego, gdy tylko będą dostępne. To wygrana!

Aby zapewnić, ż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, która obejmuje awarię, może ona automatycznie wycofać. Dzięki temu możesz mieć pewność, że nowa zwinność 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 cordova, dodawanie nowej wtyczki) nie mogą być dystrybuowane za pośrednictwem programu CodePush i dlatego należy je zaktualizować za pośrednictwem odpowiednich sklepów.

Obsługiwane platformy Cordova

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

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

    cordova platform ls

Jeśli używasz starszej platformy dla systemu Android lub iOS, niż wspomniano powyżej i możesz 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 "wprowadzenie" ogólnego przeznaczenia do konfigurowania konta CodePush możesz uruchomić aplikację CodePush, uruchamiając następujące polecenie w katalogu głównym aplikacji:

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

Po zainstalowaniu wtyczki CodePush skonfiguruj aplikację, aby używała jej 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ć polecenie appcenter codepush deployment list -a <ownerName>/<appName> --displayKeysi 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 programujesz tylko dla jednej platformy, wystarczy określić klucz wdrożenia dla systemu Android lub iOS, więc nie musisz 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 do tagu Content-Security-Policymeta 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ź dwukrotnie, czy masz już zainstalowaną wtyczkę cordova-plugin-whitelist (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 przejść. W przeciwnym razie uruchom następujące polecenie, aby go dodać:

    cordova plugin add cordova-plugin-whitelist

Teraz możesz użyć 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 jedynym rozwiązaniem jest 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 interwale)
  2. Kiedy aktualizacja jest dostępna, jak przedstawić ją użytkownikowi końcowemu? Najprostszym sposobem, aby to zrobić, jest uruchomienie następujących czynności w procedurze 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 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, gdy dostępna aktualizacja jest zainstalowana (np. wymusić natychmiastowe ponowne uruchomienie) lub dostosować ś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 deweloperów firmy Apple w pełni zezwala na nadmierne aktualizacje kodu JavaScript i zasobów (co umożliwia program CodePush!), jest to sprzeczne z zasadami dla aplikacji w celu wyświetlenia monitu o aktualizację. W związku z tym zalecamy, aby aplikacje App Store rozproszone nie włączały opcji podczas wywoływania usługi sync, natomiast w sklepie Google Play i wewnętrznie rozproszonych aplikacjach (np. Enterprise, Fabric, HockeyApp) można ją włączyćupdateDialog/dostosować.

Zwalnianie Aktualizacje

Po skonfigurowaniu i dystrybucji aplikacji dla użytkowników i wprowadzeniu pewnych zmian w kodzie lub zasobie nadszedł czas, aby natychmiast je zwolnić. Najprostszym (i zalecanym) sposobem, aby to zrobić, 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

Porada

Za pomocą funkcji interfejsu wiersza polecenia set-current centrum aplikacji nie trzeba używać flagi -a w celu określenia aplikacji, do której jest kierowane polecenie.

Porada

Podczas wydawania aktualizacji koduPush nie trzeba w ogóle modyfikować wersji aplikacji w pliku config.xml , ponieważ w ogóle nie modyfikujesz wersji binarnej. Musisz tylko wyprzedać tę wersję, gdy uaktualnisz oprogramowanie Cordova lub jedną z wtyczek, w tym momencie musisz wydać aktualizację do magazynów natywnych. KodPush 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 znać dokładnie pliki do przekazania. 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. które wersje binarne są z nią zgodne? Czy wydanie powinno być postrzegane 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 publikujesz 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 przez użytkowników końcowych.

Aby uzyskać więcej informacji na temat działania release-cordova polecenia, a także różnych parametrów, które uwidacznia, zapoznaj się z dokumentacją interfejsu wiersza polecenia. Ponadto jeśli wolisz samodzielnie obsługiwać uruchamianie cordova prepare polecenia, a więc 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 jakiekolwiek 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: pyta 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 uznaniu zainstalowanej aktualizacji za pomyślne. Jeśli ręcznie sprawdzasz i instalujesz aktualizacje (tj. nie używasz metody synchronizacji do obsługi wszystkich aktualizacji), ta metoda MUSI być wywoływana; w przeciwnym razie KodPush będzie traktować aktualizację jako nieudaną i wycofać się do poprzedniej wersji po następnym ponownym uruchomieniu aplikacji.
  • restartApplication: Natychmiast ponownie uruchamia aplikację. Jeśli istnieje oczekująca aktualizacja, zostanie ona natychmiast wyświetlona użytkownikowi końcowemu.
  • synchronizacja: umożliwia sprawdzanie aktualizacji, pobieranie jej i instalowanie, wszystkie 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 koduPush z aplikacjami.

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

  • InstallMode: definiuje dostępne tryby instalacji dla aktualizacji.
  • LocalPackage: zawiera informacje o lokalnie zainstalowanym pakiecie.
  • RemotePackage: zawiera informacje o pakiecie aktualizacji dostępnym do pobrania.
  • SyncStatus: definiuje możliwe pośrednie i wynikowe stany operacji synchronizacji .

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 je 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 wielkanocnego jajka lub przełącznika ustawień użytkownika.

Po zakończeniu sprawdzania aktualizacji wywołanie zwrotne spowoduje 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ż aktualnie uruchomiona (starsza lub nowsza).
    • Obecnie uruchomiona aplikacja ma już najnowszą wersję ze skonfigurowanego wdrożenia, więc nie wymaga ponownego wydania.
  2. RemotePackage Wystąpienie reprezentujące dostępną aktualizację, którą można sprawdzić i pobrać później.

Parametry:

  • onSuccess: Wywołanie zwrotne, które jest wywoływane po otrzymaniu pomyślnej odpowiedzi z serwera. Wywołanie zwrotne odbiera pojedynczy 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ład użycia:

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 spowoduje wyzwolenie onSuccess wywołania zwrotnego z jedną z dwóch możliwych wartości:

  1. null jeśli aplikacja jest obecnie uruchomiona na stronie początkowej 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 nie zainstalował jeszcze aktualizacji 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, które jest wywoływane po otrzymaniu metadanych dotyczących aktualnie uruchomionej aktualizacji. Wywołanie zwrotne odbiera pojedynczy 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 została InstallMode.ON_NEXT_RESUME określona podczas wywołania 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.restartApplicationmetody ), aby go zastosować.

Po zakończeniu pobierania aktualizacji wywołanie zwrotne spowoduje wyzwolenie onSuccess wywołania zwrotnego 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, które jest wywoływane po otrzymaniu metadanych dotyczących aktualnie oczekującej aktualizacji. Wywołanie zwrotne odbiera pojedynczy 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. Ta funkcja jest obowiązkowa w kodzie zaktualizowanego pakietu. W przeciwnym razie po następnym ponownym uruchomieniu aplikacji środowisko uruchomieniowe CodePush przyjmie, że zainstalowana aktualizacja nie powiodła się i wycofała się z poprzedniej wersji. To zachowanie istnieje, aby zapewnić, że użytkownicy końcowi nie są zablokowani przez uszkodzoną aktualizację.

Jeśli używasz funkcji i sprawdzasz aktualizację podczas uruchamiania sync aplikacji, nie musisz ręcznie wywoływać tej notifyApplicationReady funkcji, ponieważ sync wywoła ją za Ciebie. To zachowanie istnieje z powodu założenia, że wywołanie sync wywołania w aplikacji stanowi 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 . Nie ma to zastosowania aktualizacji 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 niestrudny i potencjalnie pobiera aktualizację przed użytkownikiem końcowym wcześniej niż oczekiwanie na następne ponowne uruchomienie lub wznowienie.

codePush.sync

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

Synchronizuje kod i obrazy aplikacji z najnowszą wersją 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 otrzyma powiadomienie 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 });

Porada

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., owiń wywołanie synchronizacji w warunku, który gwarantuje, że wywołanie jest wywoływane tylko wtedy, gdy jest to konieczne.

Podczas gdy metoda synchronizacji próbuje ułatwić dyskretne i aktywne aktualizacje z małą 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ą z SyncStatus wartości.
  • syncOptions: opcjonalny SyncOptions parametr konfigurujący zachowanie operacji synchronizacji.
  • downloadProgress: wywoływane okresowo po pobraniu dostępnej aktualizacji 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óre uległy zmianie z poprzedniej wersji).
    • receivedBytes(Number) — liczba bajtów pobranych do tej pory, która może sł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ć wykonywanie cichych i aktywnych aktualizacji z małą konfiguracją, ale akceptuje obiekt "options", który umożliwia dostosowanie wielu aspektów domyślnego zachowania wymienionego powyżej:

  • deploymentKey(String) — 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 z boku skryptu, jeśli konieczne jest dynamiczne użycie innego wdrożenia dla określonego wywołania do 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 odwołaniem do InstallMode 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 odwołaniem do InstallMode wyliczenia, aby uzyskać opis dostępnych opcji i ich działania.
  • minimumBackgroundDuration(Liczba) — określa minimalną liczbę sekund dla aplikacji, która ma znajdować się w tle przed ponownym uruchomieniem aplikacji. Ta właściwość dotyczy tylko aktualizacji zainstalowanych przy użyciu programu InstallMode.ON_NEXT_RESUMEi może być przydatna do wcześniejszego pobierania aktualizacji przed użytkownikami końcowymi bez zbyt niestrudnego. Wartość domyślna to 0, która stosuje aktualizację natychmiast po wznowieniu, jednak długo znajdowała się 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 jest dostępna aktualizacja, a jeśli tak, jakie ciągi mają być używane. Wartość domyślna to null, która wyłącza okno dialogowe. 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 co najmniej jednego ciągu domyślnego.

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 chcesz prefiksować opis wydania, jeśli istnieje, podczas wyświetlania powiadomienia o aktualizacji użytkownikowi końcowemu. Wartość domyślna to " Description: ".
  • mandatoryContinueButtonLabel(String): tekst do użycia dla przycisku, który użytkownik końcowy musi nacisnąć, aby zainstalować obowiązkową aktualizację. Wartość domyślna to "Continue".
  • mandatoryUpdateMessage(String) — tekst używany jako treść powiadomienia o aktualizacji, gdy aktualizacja jest określona jako obowiązkowa. Wartość domyślna to "An update is available that must be installed.".
  • optionalIgnoreButtonLabel(String) — 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(String) — tekst używany dla przycisku, który użytkownik końcowy może nacisnąć, aby zainstalować opcjonalną aktualizację. Wartość domyślna to "Install".
  • optionalUpdateMessage(String) — 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(String) — 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 procedurze deviceready obsługi zdarzeń, click zdarzeniu przycisku, w wywołaniu zwrotnym czasomierza okresowego lub cokolwiek innego ma sens dla Twoich potrzeb. Podobnie jak w przypadku checkForUpdate metody, zostanie uruchomione żądanie sieciowe, aby sprawdzić aktualizację w tle, więc nie wpłynie to na czas odpowiedzi wątku interfejsu użytkownika ani wątku JavaScript.

Spakuj obiekty

Metody checkForUpdate i getCurrentPackage wywołują wywołania zwrotne sukcesów, 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 rozróżnia następujące typy 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ść, która została określona w interfejsie wiersza polecenia podczas wydawania 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 podczas wydawania aktualizacji. (Wartość logiczna)
  • label: etykieta wewnętrzna automatycznie nadana aktualizacji przez serwer CodePush, na przykład v5. Ta wartość jednoznacznie identyfikuje aktualizację w ramach wdrożenia. (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 zostanie ponownie załadowana przy użyciu nowej zawartości podczas następnego uruchomienia 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 w następnym uruchomieniu.
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 dla 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 ochrony przed nieprawidłową aktualizacją, zobacz dokumentację notifyApplicationReady().

Pakiet zdalny

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 RemotePackageelement , 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 zawiera jedną dodatkową:

  • downloadUrl: adres URL, pod którym pakiet jest dostępny do pobrania. Ta właściwość jest wymagana tylko w przypadku użycia zaawansowanego, ponieważ download metoda automatycznie będzie obsługiwać 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 dotyczących postępu pobierania aktualizacji.

Właściwości
  • totalBytes: rozmiar pobieranego pakietu aktualizacji 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 ona następujące wartości:

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

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

Pakiet zdalny

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 RemotePackageelement , 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 zawiera jedną dodatkową:

  • downloadUrl: adres URL, pod którym pakiet jest dostępny do pobrania. Ta właściwość jest wymagana tylko w przypadku użycia zaawansowanego, ponieważ download metoda automatycznie będzie obsługiwać 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 dotyczących postępu pobierania aktualizacji.

# Właściwości
  • totalBytes: rozmiar pobieranego pakietu aktualizacji 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 ona następujące wartości:

  • NATYCHMIASTOWE: Aktualizacja zostanie natychmiast zastosowana do uruchomionej aplikacji. Aplikacja zostanie natychmiast ponownie załadowana wraz z nową zawartością.
  • ON_NEXT_RESTART: wskazuje, że chcesz zainstalować aktualizację, ale nie wymuszaj ponownego uruchamiania aplikacji. Po ponownym uruchomieniu aplikacji (ze względu na system operacyjny lub użytkownik końcowy zabijający ją) aktualizacja zostanie bezproblemowo pobrana. Ta wartość jest odpowiednia podczas przeprowadzania cichych aktualizacji, ponieważ prawdopodobnie będzie to uciążliwe dla użytkownika końcowego, jeśli aplikacja nagle została ponownie uruchomiona znikąd, ponieważ nie zdałoby sobie sprawy, że aktualizacja została 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. W ten sposób nie zakłócasz bieżącej sesji, ale możesz uzyskać aktualizację przed nimi wcześniej niż czekać na następne naturalne ponowne uruchomienie. Ta wartość jest odpowiednia dla instalacji dyskretnych, które mogą być stosowane wznawiania 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. Stany wyników reprezentują końcowe stany operacji synchronizacji. Każda operacja synchronizacji kończy się tylko jednym stanem wyniku, 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 SyncOptions.
  • UPDATE_IGNORED: aplikacja ma opcjonalną aktualizację, którą użytkownik końcowy wybrał do zignorowania. (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: Aktualizacja jest dostępna, 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, funkcja PhoneGap Build musi używać narzędzia Gradle do kompilowania aplikacji, która nie jest jej zachowaniem domyślnym (używa klasy 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 łaskawie stworzyła kilka niesamowitych open source aplikacji, 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 aplikacji CodePush i mogą służyć do sprawdzenia, jak inni korzystają z usługi:

Uwaga

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