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:
- Android (cordova-android 4.0.0+) - w tym CrossWalk!
- iOS (cordova-ios 3.9.0+) — (Aby użyć programu CodePush wraz z wtyczką
cordova-plugin-wkwebview-engine
, należy zainstalowaćv1.5.1-beta+
program , który obejmuje pełną obsługę aplikacji przy użyciu elementu WebView).
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:
- 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> --displayKeys
polecenie 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.xml
pliku :
<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.
- 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" />
- 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 taguContent-Security-Policy
meta
windex.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 *" />
- 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:
- 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)
- 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 sync
usł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:
- InstallMode: definiuje dostępne tryby instalacji aktualizacji.
- LocalPackage: zawiera informacje o lokalnie zainstalowanym pakiecie.
- RemotePackage: zawiera informacje o pakiecie aktualizacji dostępnym do pobrania.
- SyncStatus: definiuje możliwe stany pośrednie i wynikowe 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 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:
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.
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:
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.
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:
null
jeśli aplikacja nie ma obecnie oczekującej aktualizacji (np. aplikacja jest już uruchomiona w najnowszej dostępnej wersji).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:
- Aplikacja określa wartość
ON_NEXT_RESTART
trybu instalacji lubON_NEXT_RESUME
podczas wywoływaniasync
metod lubLocalPackage.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. - 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:
- 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.
- 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ę zInstallMode
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ę zInstallMode
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_RESUME
i może być przydatna do wcześniejszego pobrania aktualizacji przed użytkownikami końcowymi bez zbyt nietrudnego. Wartość domyślna to0
, 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 totrue
. - 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:
LocalPackage
: reprezentuje pobraną aktualizację, która jest już uruchomiona lub została zainstalowana i oczekuje na ponowne uruchomienie aplikacji.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 poleceniacheckForUpdate
. (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
installOptions
elementu . 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łaniecodePush.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 to0
.
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 LocalPackage
element , 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. OpcjonalnedownloadProgress
wywołanie zwrotne jest wywoływane kilka razy w trakcie postępu pobierania z jednymDownloadProgress
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
iLocalPackage.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 LocalPackage
element , 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. OpcjonalnedownloadProgress
wywołanie zwrotne jest wywoływane kilka razy w trakcie postępu pobierania z jednymDownloadProgress
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
iLocalPackage.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
wSyncOptions
elem. - 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:
- PGDay CodePush Demo — aplikacja demonstracyjna utworzona przez Rangle.io używana dla PhoneGap Day Europe 2016.
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!