Udostępnij za pośrednictwem


Dokumentacja interfejsu API zestawu SDK klienta platformy React Native

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.

Wtyczka CodePush składa się z dwóch składników:

  1. Moduł Języka JavaScript, który można zaimportować/wymagany i umożliwia aplikacji interakcję z usługą w czasie wykonywania (na przykład sprawdź dostępność aktualizacji, sprawdź metadane dotyczące aktualnie uruchomionej aktualizacji aplikacji).

  2. Natywny interfejs API (Objective-C i Java), który umożliwia hostowi aplikacji React Native uruchamianie się przy użyciu odpowiedniej lokalizacji pakietu JS.

W poniższych sekcjach szczegółowo opisano kształt i zachowanie tych interfejsów API:

Dokumentacja interfejsu API języka JavaScript

Jeśli jest to wymaganereact-native-code-push, obiekt modułu udostępnia następujące metody najwyższego poziomu oprócz dekoratora składników na poziomie głównym:

  • allowRestart: Reallows programowe ponowne uruchomienia wystąpi w wyniku zainstalowania aktualizacji i opcjonalnie natychmiast ponownie uruchomi aplikację, jeśli oczekująca aktualizacja próbowała ponownie uruchomić aplikację podczas ponownego uruchamiania, podczas gdy ponowne uruchomienia zostały niedozwolone. Ta metoda jest zaawansowanym interfejsem API i jest wymagana tylko wtedy, gdy aplikacja jawnie nie zezwala na ponowne uruchomienie za pośrednictwem disallowRestart metody .

  • checkForUpdate: usługę CodePush, czy skonfigurowane wdrożenie aplikacji ma dostępną aktualizację.

  • disallowRestart: tymczasowo nie zezwala na ponowne uruchamianie programowe w wyniku zainstalowania aktualizacji CodePush. Ta metoda jest zaawansowanym interfejsem API i jest przydatna, gdy składnik w aplikacji (na przykład proces dołączania) musi mieć pewność, że żadne przerwy użytkownika końcowego nie mogą wystąpić w okresie jego istnienia.

  • getCurrentPackage: pobiera metadane dotyczące aktualnie zainstalowanej aktualizacji (na przykład opis, czas instalacji, rozmiar).

    Uwaga

    v1.10.3-beta Od modułu getCurrentPackage CodePush jest przestarzały na rzecz getUpdateMetadata*.

  • getUpdateMetadata: pobiera metadane zainstalowanej aktualizacji (na przykład opis, obowiązkowy).

  • notifyAppReady: powiadamia środowisko uruchomieniowe CodePush o pomyślnym pomyślnym uznaniu zainstalowanej aktualizacji. Jeśli ręcznie sprawdzasz i instalujesz aktualizacje (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.

  • restartApp: natychmiast ponownie uruchomi aplikację. Jeśli jest oczekująca aktualizacja, zostanie ona natychmiast wyświetlona użytkownikowi końcowemu. W przeciwnym razie wywołanie tej metody ma takie samo zachowanie jak użytkownik końcowy zabijający i ponownie uruchamiający proces.

  • 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

codePush

// Wrapper function
codePush(rootComponent: React.Component): React.Component;
codePush(options: CodePushOptions)(rootComponent: React.Component): React.Component;
// Decorator; Requires ES7 support
@codePush
@codePush(options: CodePushOptions)

Służy do opakowywanie składnika React wewnątrz składnika React "wyższego zamówienia", który wie, jak zsynchronizować pakiet JavaScript i zasoby obrazów aplikacji podczas jego instalacji. Wewnętrznie składnik wyższego rzędu wywołuje dojścia sync componentDidMount cyklu życia, który uruchamia sprawdzanie aktualizacji, pobiera aktualizację, jeśli istnieje, i instaluje aktualizację.

Ten dekorator zapewnia obsługę dostosowywania jego zachowania w celu łatwego włączania aplikacji z różnymi wymaganiami. Poniżej przedstawiono kilka przykładów sposobów jej użycia (możesz wybrać jedną lub nawet użyć kombinacji):

  1. Synchronizacja dyskretna podczas uruchamiania aplikacji (najprostsze, domyślne zachowanie). Aplikacja automatycznie pobierze dostępne aktualizacje i zastosuje je przy następnym ponownym uruchomieniu aplikacji (na przykład system operacyjny lub użytkownik końcowy, który 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.

    // Fully silent update that keeps the app in
    // sync with the server, without ever
    // interrupting the end user
    class MyApp extends Component {}
    MyApp = codePush(MyApp);
    
  2. Synchronizacja dyskretna za każdym razem, gdy aplikacja zostanie wznowione. Tak samo jak 1, z wyjątkiem sprawdzania dostępności aktualizacji lub stosowania aktualizacji, jeśli istnieje za każdym razem, gdy aplikacja powróci na pierwszy plan po "w tle".

    // Sync for updates every time the app resumes.
    class MyApp extends Component {}
    MyApp = codePush({ checkFrequency: codePush.CheckFrequency.ON_APP_RESUME, installMode: codePush.InstallMode.ON_NEXT_RESUME })(MyApp);
    
  3. Interakcyjne. Gdy aktualizacja jest dostępna, monituj użytkownika końcowego o uprawnienie przed jego pobraniem, a następnie natychmiast zastosuj aktualizację. Jeśli aktualizacja została wydana przy użyciu mandatory flagi, użytkownik końcowy nadal będzie powiadamiany o aktualizacji, ale nie będzie miał wyboru, aby go zignorować.

    // Active update that lets the end user know
    // about each update, and displays it to them
    // immediately after downloading it
    class MyApp extends Component {}
    MyApp = codePush({ updateDialog: true, installMode: codePush.InstallMode.IMMEDIATE })(MyApp);
    
  4. Postęp rejestrowania/wyświetlania. Podczas synchronizacji aplikacji z serwerem w celu uzyskania aktualizacji należy użyć codePushStatusDidChange punktów zaczepienia zdarzeń lub codePushDownloadDidProgress , aby zarejestrować różne etapy tego procesu, a nawet wyświetlić pasek postępu dla użytkownika.

    // Make use of the event hooks to keep track of
    // the different stages of the sync process.
    class MyApp extends Component {
        codePushStatusDidChange(status) {
            switch(status) {
                case codePush.SyncStatus.CHECKING_FOR_UPDATE:
                    console.log("Checking for updates.");
                    break;
                case codePush.SyncStatus.DOWNLOADING_PACKAGE:
                    console.log("Downloading package.");
                    break;
                case codePush.SyncStatus.INSTALLING_UPDATE:
                    console.log("Installing update.");
                    break;
                case codePush.SyncStatus.UP_TO_DATE:
                    console.log("Up-to-date.");
                    break;
                case codePush.SyncStatus.UPDATE_INSTALLED:
                    console.log("Update installed.");
                    break;
            }
        }
    
        codePushDownloadDidProgress(progress) {
            console.log(progress.receivedBytes + " of " + progress.totalBytes + " received.");
        }
    }
    MyApp = codePush(MyApp);
    

CodePushOptions

Dekorator codePush akceptuje obiekt "options", który umożliwia dostosowanie wielu aspektów domyślnego zachowania wymienionego powyżej:

  • checkFrequency (codePush.CheckFrequency) — określa, kiedy chcesz sprawdzić dostępność aktualizacji. Wartość domyślna to codePush.CheckFrequency.ON_APP_START. Zapoznaj się z CheckFrequency dokumentacją wyliczenia, aby uzyskać opis dostępnych opcji i ich działania.

  • deploymentKey (ciąg) — określa klucz wdrożenia, dla którego chcesz wykonać zapytanie dotyczące aktualizacji. Domyślnie ta wartość pochodzi z pliku Info.plist (iOS) i pliku MainActivity.java (Android), ale ta opcja umożliwia zastąpienie go ze strony skryptu, jeśli trzeba dynamicznie używać innego wdrożenia.

  • installMode (codePush.InstallMode) — określa, kiedy chcesz zainstalować opcjonalne aktualizacje (te, które nie są oznaczone jako obowiązkowe). Wartość domyślna to codePush.InstallMode.ON_NEXT_RESTART. Zapoznaj się z InstallMode dokumentacją wyliczenia, aby uzyskać opis dostępnych opcji i ich działania.

  • mandatoryInstallMode (codePush.InstallMode) — określa, kiedy chcesz zainstalować aktualizacje, które są oznaczone jako obowiązkowe. Wartość domyślna to codePush.InstallMode.IMMEDIATE. Zapoznaj się z InstallMode dokumentacją wyliczenia, aby uzyskać opis dostępnych opcji i ich działania.

  • minimumBackgroundDuration (liczba) — określa minimalną liczbę sekund, przez które aplikacja ma znajdować się w tle przed ponownym uruchomieniem aplikacji. Ta właściwość ma zastosowanie tylko do aktualizacji zainstalowanych przy użyciu programu InstallMode.ON_NEXT_RESUME lub InstallMode.ON_NEXT_SUSPENDi może być przydatna do wcześniejszego pobrania aktualizacji przed użytkownikami końcowymi bez zbyt niestrudnego. Domyślnie wartość 0, która stosuje aktualizację natychmiast po wznowieniu lub chyba że zawieszenie aplikacji jest wystarczająco długie, aby nie miało znaczenia, jednak długo znajduje się w tle.

  • 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. Przed włączeniem tej opcji w aplikacji rozproszonej ze sklepu App Store zapoznaj się z tą uwagą.

    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, który jest wyświetlany 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ści domyślne " 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?".

    • title (String) — tekst używany jako nagłówek powiadomienia o aktualizacji wyświetlanego użytkownikowi końcowemu. Wartość domyślna to "Update available".

  • rollbackRetryOptions (RollbackRetryOptions) — mechanizm ponawiania wycofywania umożliwia aplikacji podjęcie próby ponownej instalacji aktualizacji, która została wcześniej wycofana (z ograniczeniami określonymi w opcjach). Jest to obiekt "options" używany do określenia, czy powinno nastąpić ponowne ponowienie próby wycofania, a jeśli tak, jakie ustawienia mają być używane na potrzeby ponawiania wycofywania. Domyślnie ma wartość null, co ma wpływ na wyłączenie mechanizmu ponawiania prób. Ustawienie tej wartości na dowolną wartość prawdy spowoduje włączenie mechanizmu ponawiania z ustawieniami domyślnymi, a przekazanie obiektu do tego parametru umożliwia włączenie ponawiania wycofywania, a także zastąpienie co najmniej jednej wartości domyślnej.

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

    • delayInHours (Liczba) — określa minimalny czas w godzinach oczekiwania aplikacji po ostatnim wycofaniu przed podjęciem próby ponownej instalacji tego samego wycofanego pakietu. Nie może być mniejszy niż 0. Może to być liczba zmiennoprzecinkowa. Wartość domyślna to 24.

    • maxRetryAttempts (Liczba) — określa maksymalną liczbę ponownych prób, które aplikacja może wykonać przed zatrzymanie próby. Nie może być mniejszy niż 1. Wartość domyślna to 1.

codePushStatusDidChange (punkt zaczepienia zdarzeń)

Wywoływane, gdy proces synchronizacji przechodzi z jednego etapu do drugiego w ogólnym procesie aktualizacji. Punkt zaczepienia zdarzeń jest wywoływany przy użyciu kodu stanu reprezentującego bieżący stan i może być dowolną SyncStatus z wartości.

codePushDownloadDidProgress (event hook)

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) — łączna liczba bajtów, które mają zostać odebrane dla tej aktualizacji (jest to 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.

codePush.allowRestart

codePush.allowRestart(): void;

Reallows programowe ponowne uruchomienia, które w przeciwnym razie zostałyby odrzucone z powodu poprzedniego wywołania metody disallowRestart. Jeśli disallowRestart nigdy nie została wywołana w pierwszej kolejności, wywołanie tej metody powoduje brak operacji.

Jeśli aktualizacja CodePush jest obecnie oczekująca, która próbowała ponownie uruchomić aplikację (na przykład użyto InstallMode.IMMEDIATEjej ), ale została zablokowana z disallowRestart powodu wywołania wywołania, wywołanie allowRestart spowoduje natychmiastowe ponowne uruchomienie. To ponowne uruchomienie umożliwia jak najszybsze zastosowanie aktualizacji bez przerywania pracy użytkownika końcowego podczas krytycznych przepływów pracy (na przykład procesu dołączania).

Na przykład wywołanie allowRestart wywołania spowoduje natychmiastowe ponowne uruchomienie, jeśli jeden z trzech scenariuszy wymienionych w disallowRestart dokumentacji wystąpił po disallowRestart wywołaniu. Jednak wywołanie allowRestart wywołania nie wyzwoli ponownego uruchomienia, jeśli spełnione są następujące kwestie:

  1. Nie zainstalowano żadnych aktualizacji CodePush od czasu ostatniego disallowRestart wywołania, a więc nie ma potrzeby ponownego uruchamiania.

  2. Obecnie istnieje oczekująca aktualizacja CodePush, ale została zainstalowana za pośrednictwem InstallMode.ON_NEXT_RESTARTmetody , więc ponowne uruchomienie programowe nie jest wymagane.

  3. Obecnie istnieje oczekująca aktualizacja CodePush, ale została zainstalowana za pośrednictwem programu InstallMode.ON_NEXT_RESUME , a aplikacja nie została jeszcze umieszczona w tle, więc nie ma jeszcze potrzeby programowego ponownego uruchamiania.

  4. Nie podjęto żadnych połączeń restartApp od czasu ostatniego disallowRestart wywołania.

To zachowanie gwarantuje, że w wyniku wywołania allowRestart nie zostaną wyzwolone żadne ponowne uruchomienia, chyba że zostanie jawnie zażądany w okresie niedozwolonym. W ten sposób allowRestart funkcja jest podobna do wywołania restartApp(true)metody , z wyjątkiem tego, że były wyzwala ponowne uruchomienie tylko wtedy, gdy aktualnie oczekująca aktualizacja chce się ponownie uruchomić, ale ta ostatnia zostanie uruchomiona ponownie tak długo, jak długo trwa oczekiwanie na aktualizację.

Zobacz nie zezwalajRestart , aby zapoznać się z przykładem użycia tej metody.

codePush.checkForUpdate

codePush.checkForUpdate(deploymentKey: String = null, handleBinaryVersionMismatchCallback: (update: RemotePackage) => void): Promise<RemotePackage>;

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 Info.plist (iOS) lub pliku MainActivity.java (Android), ale można zastąpić to, 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.

Drugi opcjonalny parametr handleBinaryVersionMismatchCallback to opcjonalna funkcja wywołania zwrotnego, która może służyć do powiadamiania użytkownika, jeśli istnieje jakakolwiek aktualizacja binarna. Rozważmy na przykład przypadek użycia, w którym obecnie zainstalowana wersja binarna to 1.0.1 z etykietą (etykietą wypychania kodu) w wersji 1. Później kod natywny został zmieniony w cyklu deweloperskim, a wersja binarna została zaktualizowana do wersji 1.0.2. Po wyzwoleniu sprawdzania aktualizacji codepush ignorujemy aktualizacje o niezgodności wersji binarnej (ponieważ aktualizacja nie jest przeznaczona dla wersji binarnej aktualnie zainstalowanej aplikacji). W takim przypadku zainstalowana aplikacja (1.0.1) zignoruje aktualizację przeznaczoną dla wersji 1.0.2. Możesz użyć handleBinaryVersionMismatchCallback polecenia , aby zapewnić punkt zaczepienia do obsługi takich sytuacji.

Ważne

Należy zachować ostrożność podczas używania alertów w ramach tego wywołania zwrotnego, jeśli tworzysz aplikację dla systemu iOS, ze względu na proces przeglądu sklepu App Store : aplikacje nie mogą wymuszać oceniania aplikacji, przeglądania aplikacji, pobierania innych aplikacji lub innych podobnych akcji w celu uzyskania dostępu do funkcji, zawartości lub korzystania z aplikacji.

Ta metoda zwraca Promisewartość , która rozpoznaje jedną z dwóch możliwych wartości:

  1. null jeśli nie ma dostępnej aktualizacji. Może to wystąpić w następujących scenariuszach:

    1. Skonfigurowane wdrożenie nie zawiera żadnych wydań, a więc nic do zaktualizowania.
    2. Najnowsza wersja w skonfigurowanym wdrożeniu jest przeznaczona dla innej wersji binarnej niż bieżąca wersja (starsza lub nowsza).
    3. Obecnie uruchomiona aplikacja ma już najnowszą wersję ze skonfigurowanego wdrożenia, dlatego nie wymaga jej ponownie.
    4. Najnowsza wersja w skonfigurowanym wdrożeniu jest obecnie oznaczona jako wyłączona, więc nie można jej pobrać.
    5. Najnowsza wersja w skonfigurowanym wdrożeniu jest w stanie "aktywnego wdrażania", a żądanie urządzenia nie mieści się w procentach użytkowników, którzy się do niego kwalifikują.
  2. Wystąpienie RemotePackage reprezentujące dostępną aktualizację, którą można sprawdzić lub później pobrać.

Przykładowe użycie:

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

codePush.disallowRestart

codePush.disallowRestart(): void;

Tymczasowo nie zezwala na programowe ponowne uruchamianie w wyniku jednego z następujących scenariuszy:

  1. Aktualizacja CodePush jest instalowana przy użyciu polecenia InstallMode.IMMEDIATE

  2. Aktualizacja CodePush jest instalowana przy użyciu i InstallMode.ON_NEXT_RESUME aplikacja jest wznawiana z poziomu tła (opcjonalnie ograniczana przez minimumBackgroundDuration właściwość)

  3. Wywołano restartApp metodę

    Uwaga

    Kroki 1 i 2 skutecznie działają, wzywając restartApp Cię do blokowania dowolnego wywołania restartApp, niezależnie od tego, disallowRestart czy aplikacja wywołuje ją bezpośrednio, czy pośrednio.

Po wywołaniu tej metody wszystkie wywołania sync nadal będą mogły sprawdzać dostępność aktualizacji, pobierać ją i instalować, ale próba ponownego uruchomienia aplikacji zostanie wstrzymana do momentu allowRestart wywołania wywołania. Dzięki temu żądanie ponownego uruchomienia jest przechwytywane i może być "opróżniane", gdy chcesz zezwolić na jego wystąpienie.

Jest to zaawansowany interfejs API i jest przydatny przede wszystkim wtedy, gdy poszczególne składniki w aplikacji (na przykład proces dołączania) muszą mieć pewność, że żadne przerwy użytkownika końcowego mogą wystąpić w okresie ich istnienia, a jednocześnie umożliwić aplikacji synchronizowanie z serwerem CodePush we własnym tempie i używanie dowolnego odpowiedniego trybu instalacji. Ma to korzyść z umożliwienia aplikacji odnajdywania i pobierania dostępnych aktualizacji tak szybko, jak to możliwe, przy jednoczesnym zapobieganiu zakłóceniom w kluczowych środowiskach użytkownika końcowego.

Alternatywnie można również użyć InstallMode.ON_NEXT_RESTART przy każdym wywołaniu sync (co nigdy nie będzie próbować programowo ponownie uruchomić aplikację), a następnie jawnie wywołać wywołanie restartApp punktów w aplikacji, które są "bezpieczne", aby to zrobić. disallowRestart Zapewnia alternatywne podejście do tego, gdy kod, który synchronizuje się z serwerem CodePush, jest oddzielony od kodu/składników, które chcą wymusić zasady bez ponownego uruchamiania.

Przykładowe użycie:

class OnboardingProcess extends Component {
    ...

    componentWillMount() {
        // Ensure that any CodePush updates that are
        // synchronized in the background can't trigger
        // a restart while this component is mounted.
        codePush.disallowRestart();
    }

    componentWillUnmount() {
        // Reallow restarts, and optionally trigger
        // a restart if one was currently pending.
        codePush.allowRestart();
    }

    ...
}

codePush.getCurrentPackage

Uwaga

Ta metoda jest uważana za przestarzałą w module v1.10.3-beta CodePush. Jeśli używasz tej wersji (lub nowszej), zalecamy użycie elementu codePush.getUpdateMetadata , ponieważ ma bardziej przewidywalne zachowanie.

codePush.getCurrentPackage(): Promise<LocalPackage>;

Pobiera metadane dotyczące aktualnie zainstalowanego "pakietu" (na przykład 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.

Ta metoda zwraca Promisewartość , która rozpoznaje jedną z dwóch możliwych wartości:

  1. null jeśli aplikacja aktualnie uruchamia pakiet JS z pliku binarnego, a nie aktualizację CodePush. Dzieje się tak w następujących scenariuszach:

    1. Użytkownik końcowy zainstalował plik binarny aplikacji i musi jeszcze zainstalować aktualizację CodePush
    2. Użytkownik końcowy zainstalował aktualizację pliku binarnego (na przykład ze sklepu), która wyczyściła stare aktualizacje CodePush i dała pierwszeństwo przed plikiem binarnym JS w pliku binarnym.
  2. Wystąpienie LocalPackage reprezentujące metadane aktualnie uruchomionej aktualizacji CodePush.

Przykładowe użycie:

codePush.getCurrentPackage()
.then((update) => {
    // 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.getUpdateMetadata

codePush.getUpdateMetadata(updateState: UpdateState = UpdateState.RUNNING): Promise<LocalPackage>;

Pobiera metadane zainstalowanej aktualizacji (na przykład opis, obowiązkowy), których stan jest zgodny z określonym updateState parametrem. 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. Aby uzyskać więcej informacji na temat możliwych stanów aktualizacji i ich reprezentacji, zobacz informacje o dokumentacji UpdateState.

Ta metoda zwraca Promisewartość , która rozpoznaje jedną z dwóch możliwych wartości:

  1. null jeśli aktualizacja o określonym stanie nie istnieje obecnie. Dzieje się tak w następujących scenariuszach:

    1. Użytkownik końcowy nie zainstalował jeszcze żadnych aktualizacji CodePush i dlatego żadne metadane nie są dostępne dla żadnych aktualizacji, bez względu na to, co określisz updateState jako parametr.

    2. Użytkownik końcowy zainstalował aktualizację pliku binarnego (na przykład ze sklepu), która wyczyściła stare aktualizacje CodePush i dała pierwszeństwo przed plikiem binarnym JS w pliku binarnym. Będzie to miało takie samo zachowanie jak #1

    3. Parametr updateState jest ustawiony na UpdateState.RUNNINGwartość , ale aplikacja nie uruchamia obecnie aktualizacji CodePush. Może istnieć oczekująca aktualizacja, ale aplikacja nie została jeszcze ponownie uruchomiona, aby była aktywna.

    4. Parametr updateState jest ustawiony na UpdateState.PENDINGwartość , ale aplikacja nie ma obecnie oczekujących aktualizacji.

  2. LocalPackage Wystąpienie, które reprezentuje metadane aktualnie żądanej aktualizacji CodePush (uruchomione lub oczekujące).

Przykładowe użycie:

// Check if there's currently a CodePush update running, and if
// so, register it with the HockeyApp SDK (https://github.com/slowpath/react-native-hockeyapp)
// so that crash reports will correctly display the JS bundle version the user was running.
codePush.getUpdateMetadata().then((update) => {
    if (update) {
        hockeyApp.addMetadata({ CodePushRelease: update.label });
    }
});

// Check to see if there's still an update pending.
codePush.getUpdateMetadata(UpdateState.PENDING).then((update) => {
    if (update) {
        // There's a pending update, do we want to force a restart?
    }
});

codePush.notifyAppReady

codePush.notifyAppReady(): Promise<void>;

Powiadamia środowisko uruchomieniowe CodePush, że świeżo zainstalowana aktualizacja powinna zostać uznana za pomyślną, dlatego 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 notifyAppReady 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 stanowi dobre przybliżenie pomyślnego uruchomienia.

Uwaga

Ta metoda jest również aliasowana jako notifyApplicationReady (w przypadku zgodności z poprzednimi wersjami).

codePush.restartApp

codePush.restartApp(onlyIfUpdateIsPending: Boolean = false): void;

Natychmiast ponownie uruchomi aplikację. Jeśli do parametru onlyIfUpdateIsPending zostanie podana wartość prawda, aplikacja zostanie uruchomiona ponownie tylko wtedy, gdy w rzeczywistości będzie czekać na zastosowanie oczekującej aktualizacji.

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

  1. Aplikacja określa wartość ON_NEXT_RESTART trybu instalacji lub ON_NEXT_RESUME podczas wywoływania sync metod lub LocalPackage.install . Ta aktualizacja nie zostanie zastosowana do momentu ponownego uruchomienia aplikacji (przez użytkownika końcowego lub systemu operacyjnego) ani wznowienia, a więc aktualizacja nie zostanie natychmiast wyświetlona użytkownikowi końcowemu.

  2. Masz zdarzenie użytkownika specyficzne dla aplikacji (na przykład 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ę do użytkownika końcowego wcześniej niż oczekiwanie na następne ponowne uruchomienie lub wznowienie.

codePush.sync

codePush.sync(options: Object, syncStatusChangeCallback: function(syncStatus: Number), downloadProgressCallback: function(progress: DownloadProgress), handleBinaryVersionMismatchCallback: function(update: RemotePackage)): Promise<Number>;

Synchronizuje pakiet JavaScript aplikacji i zasoby obrazów z najnowszą wersją do skonfigurowanego wdrożenia. W przeciwieństwie do metody checkForUpdate, która sprawdza obecność aktualizacji, i określimy, co należy zrobić dalej, sync obsługuje sprawdzanie aktualizacji, pobieranie i instalację.

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) automatycznie pobiera dostępne aktualizacje i stosuje je przy następnym ponownym uruchomieniu aplikacji (na przykład 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 mandatory flagi, 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, which lets the end user know
// about each update, and displays it to them
// immediately after downloading it
codePush.sync({ updateDialog: true, installMode: codePush.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 sync w warunku, który gwarantuje, że wywołanie jest wywoływane tylko wtedy, gdy jest potrzebne.

SyncOptions

sync Metoda próbuje ułatwić cichą i aktywną aktualizację z niewielką konfiguracją, ale akceptuje obiekt "opcje", który umożliwia dostosowanie wielu aspektów domyślnego zachowania wymienionego powyżej. Dostępne opcje są identyczne z opcjami CodePushOptions, z wyjątkiem checkFrequency opcji:

Przykładowe użycie:

// Use a different deployment key for this
// specific call, instead of the one configured
// in the Info.plist file
codePush.sync({ deploymentKey: "KEY" });

// 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({ installMode: codePush.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({ mandatoryInstallMode: codePush.InstallMode.ON_NEXT_RESUME });

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

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

// Shortening the retry delay and increasing
// the number of maximum retry attempts
// in comparison to defaults
codePush.sync({
   rollbackRetryOptions: {
    delayInHours: 8,
    maxRetryAttempts: 3
   }
});

Oprócz opcji sync metoda akceptuje również kilka opcjonalnych parametrów funkcji, które umożliwiają subskrybowanie cyklu życia sync "potoku", aby wyświetlić dodatkowy interfejs użytkownika zgodnie z potrzebami (na przykład "sprawdzanie modalne aktualizacji lub postęp pobierania):

  • syncStatusChangedCallback ((syncStatus: Number) => void) — 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, który reprezentuje bieżący stan i może być dowolną z SyncStatus wartości.

  • downloadProgressCallback ((progress: DownloadProgress) => void) — wywoływany 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) — łączna liczba bajtów, które mają zostać odebrane dla tej aktualizacji (jest to 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.

  • handleBinaryVersionMismatchCallback ((update: RemotePackage) => void) — wywoływana, gdy dostępna jest dowolna aktualizacja binarna. Metoda jest wywoływana z obiektem RemotePackage . Aby uzyskać więcej informacji, zobacz sekcję codePush.checkForUpdate .

Przykładowe użycie:

// Prompt the user when an update is available
// and then display a "downloading" modal
codePush.sync({ updateDialog: true },
  (status) => {
      switch (status) {
          case codePush.SyncStatus.DOWNLOADING_PACKAGE:
              // Show "downloading" modal
              break;
          case codePush.SyncStatus.INSTALLING_UPDATE:
              // Hide "downloading" modal
              break;
      }
  },
  ({ receivedBytes, totalBytes, }) => {
    /* Update download modal progress */
  }
);

Ta metoda zwraca metodę Promise, która jest rozpoznawana jako SyncStatus kod wskazujący, dlaczego sync wywołanie powiodło się. Ten kod może być jedną z następujących SyncStatus wartości:

  • codePush.SyncStatus.UP_TO_DATE (4) — aplikacja jest aktualna na serwerze CodePush.

  • codePush.SyncStatus.UPDATE_IGNORED (5) — aplikacja miała opcjonalną aktualizację, którą użytkownik końcowy zdecydował się zignorować. (Ma to zastosowanie tylko wtedy, gdy updateDialog jest używany)

  • codePush.SyncStatus.UPDATE_INSTALLED (6) — aktualizacja została zainstalowana i zostanie uruchomiona natychmiast po syncStatusChangedCallback powrocie funkcji lub następnym wznowieniu/ponownym uruchomieniu aplikacji w zależności od określonego InstallMode w SyncOptionselem.

  • codePush.SyncStatus.SYNC_IN_PROGRESS (7) — trwa operacjasync, która uniemożliwia wykonanie bieżącego wywołania.

Metodę sync można wywołać w dowolnym miejscu, w którym chcesz sprawdzić aktualizację. Może to być zdarzenie componentWillMount cyklu życia składnika głównego, program obsługi <TouchableHighlight> onPress składnika, w wywołaniu zwrotnym okresowego czasomierza lub cokolwiek innego ma sens dla Twoich potrzeb. Podobnie jak metoda checkForUpdate , wykonuje żą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 getUpdateMetadata zwracają Promise obiekty, które po rozpoznaniu zapewniają dostęp do obiektów "package". Pakiet reprezentuje aktualizację kodu i wszelkie dodatkowe metadane (takie jak 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 metodę na poziomie getUpdateMetadata modułu lub jako wartość obietnicy zwróconej przez metodę RemotePackage.download .

Właściwości
  • appVersion: wersja binarna aplikacji zależna od tej aktualizacji. Jest to wartość określona za pośrednictwem parametru appStoreVersion podczas wywoływania polecenia interfejsu wiersza polecenia release . (Ciąg)
  • deploymentKey: klucz wdrożenia, który został użyty do pierwotnego pobrania tej aktualizacji. (Ciąg)
  • description: Opis aktualizacji. Jest to ta sama wartość określona w interfejsie wiersza polecenia po wydaniu aktualizacji. (Ciąg)
  • failedInstall: wskazuje, czy ta aktualizacja została wcześniej zainstalowana, ale została wycofana. Metoda sync automatycznie zignoruje aktualizacje, które wcześniej zakończyły się niepowodzeniem, więc musisz martwić się tylko o tę właściwość, jeśli używasz polecenia checkForUpdate. (Wartość logiczna)
  • isFirstRun: wskazuje, czy po raz pierwszy aktualizacja została uruchomiona po zainstalowaniu. Jest to przydatne do określania, czy chcesz wyświetlić "Co nowego?" Interfejs użytkownika użytkownika końcowego po zainstalowaniu aktualizacji. (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)
  • isPending: wskazuje, czy ta aktualizacja jest w stanie "oczekiwanie". Gdy trueoznacza to, że aktualizacja została pobrana i zainstalowana, ale ponowne uruchomienie aplikacji wymagane do jej zastosowania nie miało jeszcze miejsca i dlatego jego zmiany nie są obecnie widoczne dla użytkownika końcowego. (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(installMode: codePush.InstallMode = codePush.InstallMode.ON_NEXT_RESTART, minimumBackgroundDuration = 0): Promise<void>: instaluje aktualizację, zapisując ją na dysku, na którym środowisko uruchomieniowe oczekuje znalezienia najnowszej wersji aplikacji. Parametr installMode określa, kiedy zmiany są prezentowane użytkownikowi końcowemu. Wartością domyślną jest zaczekać na ponowne uruchomienie następnej aplikacji, aby wyświetlić zmiany, ale możesz zapoznać się z odwołaniem do wyliczenia, aby zapoznać się InstallMode z opisem dostępnych opcji i ich działania. installMode Jeśli parametr jest ustawiony na InstallMode.ON_NEXT_RESUMEwartość , minimumBackgroundDuration parametr umożliwia kontrolowanie, jak długo aplikacja musi znajdować się w tle przed wymuszeniem instalacji po wznowieniu.

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 checkForUpdate metodę, gdy aktualizacja jest dostępna. Jeśli używasz interfejsu sync API, 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 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
  • download(downloadProgressCallback?: Funkcja): Promise<LocalPackage>: pobiera dostępną aktualizację z usługi CodePush. downloadProgressCallback Jeśli parametr zostanie określony, będzie okresowo wywoływany z obiektem DownloadProgress ({ totalBytes: Number, receivedBytes: Number }), który zgłasza postęp pobierania do momentu ukończenia. Zwraca obietnicę, która jest rozpoznawana za pomocą .LocalPackage

Wyliczenia

Interfejs API CodePush zawiera następujące wyliczenia, które mogą służyć do dostosowywania środowiska aktualizacji:

InstallMode

To wyliczenie określa, kiedy 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:

  • codePush.InstallMode.IMMEDIATE (0) — wskazuje, że chcesz zainstalować aktualizację i natychmiast ponownie uruchomić aplikację. Ta wartość jest odpowiednia dla scenariuszy debugowania, a także podczas wyświetlania użytkownikowi monitu o aktualizację, ponieważ spodziewa się, że zmiany zostaną wyświetlone natychmiast po zaakceptowaniu instalacji. Ponadto ten tryb może służyć do wymuszania obowiązkowych aktualizacji, ponieważ usuwa potencjalnie niepożądane opóźnienie między instalacją aktualizacji a następnym ponownym uruchomieniem lub wznowienia aplikacji przez użytkownika końcowego.

  • codePush.InstallMode.ON_NEXT_RESTART (1) — 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 podczas przeprowadzania dyskretnych aktualizacji, ponieważ prawdopodobnie zakłóca działanie użytkownika końcowego, jeśli aplikacja nagle uruchamia się ponownie znikąd. Nie zdawali sobie sprawy, że aktualizacja została nawet pobrana. Jest to tryb domyślny używany zarówno dla metod , jak sync i LocalPackage.install .

  • codePush.InstallMode.ON_NEXT_RESUME (2) — 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.

  • codePush.InstallMode.ON_NEXT_SUSPEND (3) — wskazuje, że chcesz zainstalować aktualizację w tle, ale dopiero po jej przejściu w tle przez minimumBackgroundDuration sekundy (domyślnie 0), aby kontekst użytkownika nie został utracony, chyba że zawieszenie aplikacji jest wystarczająco długie, aby nie miało znaczenia.

CheckFrequency

To wyliczenie określa, kiedy aplikacja ma być synchronizowana z serwerem aktualizacji i może zostać przekazana do dekoratora codePushify . Zawiera następujące wartości:

  • codePush.CheckFrequency.ON_APP_START (0) — wskazuje, że chcesz sprawdzić dostępność aktualizacji za każdym razem, gdy proces aplikacji zostanie uruchomiony.

  • codePush.CheckFrequency.ON_APP_RESUME (1) — wskazuje, że chcesz sprawdzić dostępność aktualizacji za każdym razem, gdy aplikacja zostanie przywrócona na pierwszym planie po naciśnięciu przycisku Strona główna, aplikacja uruchamia oddzielny proces płatności itd.

  • codePush.CheckFrequency.MANUAL (2) — wyłącz automatyczne sprawdzanie aktualizacji, ale sprawdzaj tylko, kiedy codePush.sync() jest wywoływana w kodzie aplikacji.

SyncStatus

To wyliczenie syncStatusChangedCallback jest udostępniane funkcji, którą można przekazać do sync metody, aby podłączyć się do ogólnego procesu aktualizacji. Zawiera następujące wartości:

  • codePush.SyncStatus.CHECKING_FOR_UPDATE (0) — serwer CodePush jest odpytywany o aktualizację.
  • codePush.SyncStatus.AWAITING_USER_ACTION (1) — 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)
  • codePush.SyncStatus.DOWNLOADING_PACKAGE (2) — dostępna aktualizacja jest pobierana z serwera CodePush.
  • codePush.SyncStatus.INSTALLING_UPDATE (3) — pobrano dostępną aktualizację i zostanie ona zainstalowana.
  • codePush.SyncStatus.UP_TO_DATE (4) — aplikacja jest w pełni aktualna w przypadku skonfigurowanego wdrożenia.
  • codePush.SyncStatus.UPDATE_IGNORED (5) — aplikacja ma opcjonalną aktualizację, którą użytkownik końcowy zdecydował się zignorować. (Ma to zastosowanie tylko wtedy, gdy updateDialog jest używany)
  • codePush.SyncStatus.UPDATE_INSTALLED (6) — dostępna aktualizacja została zainstalowana i zostanie uruchomiona natychmiast po syncStatusChangedCallback powrocie funkcji lub następnym wznowieniu/ponownym uruchomieniu aplikacji w zależności od określonego InstallMode w SyncOptions.
  • codePush.SyncStatus.SYNC_IN_PROGRESS (7) — trwa operacja sync uniemożliwiająca wykonanie bieżącego wywołania.
  • codePush.SyncStatus.UNKNOWN_ERROR (-1) — operacja synchronizacji wykryła nieznany błąd.

UpdateState

To wyliczenie określa stan, w jaki obecnie znajduje się aktualizacja, i można go określić podczas wywoływania getUpdateMetadata metody. Zawiera następujące wartości:

  • codePush.UpdateState.RUNNING (0) — wskazuje, że aktualizacja reprezentuje wersję aktualnie uruchomionej aplikacji. Może to być przydatne w przypadku identyfikowania atrybutów aplikacji w scenariuszach, takich jak wyświetlanie opisu wydania w oknie dialogowym "co nowego?" lub raportowanie najnowszej wersji do usługi analizy lub raportowania awarii.

  • codePush.UpdateState.PENDING (1) — wskazuje, że zainstalowano aktualizację, ale aplikacja nie została jeszcze ponownie uruchomiona, aby ją zastosować. Może to być przydatne do określenia, czy istnieje oczekująca aktualizacja, którą można wymusić programowe ponowne uruchomienie (za pośrednictwem restartApp) do zastosowania.

  • codePush.UpdateState.LATEST (2) — wskazuje, że aktualizacja reprezentuje najnowszą dostępną wersję i może być aktualnie uruchomiona lub oczekująca.

Dokumentacja interfejsu API języka Objective-C (iOS)

Interfejs API języka Objective-C jest udostępniany przez zaimportowanie nagłówka CodePush.h do pliku AppDelegate.m i składa się z pojedynczej klasy publicznej o nazwie CodePush.

CodePush

Zawiera metody statyczne pobierania NSURL pliku, który reprezentuje najnowszy plik pakietu JavaScript, i może zostać przekazany do RCTRootViewmetody "s initWithBundleURL podczas uruchamiania aplikacji w pliku AppDelegate.m .

CodePush Metody klasy można traktować jako złożone rozwiązania rozpoznawania, które zawsze ładują odpowiedni pakiet, aby uwzględnić następujące scenariusze:

  1. Gdy użytkownik końcowy zainstaluje aplikację ze sklepu (na przykład 1.0.0), otrzyma pakiet JS zawarty w pliku binarnym. Jest to zachowanie, które można uzyskać bez użycia koduPush, ale upewniamy się, że nie przerywa :)

  2. Po rozpoczęciu wydawania aktualizacji CodePush użytkownicy końcowi otrzymają pakiet JS reprezentujący najnowszą wersję skonfigurowanego wdrożenia. Jest to zachowanie, które umożliwia iterowanie poza tym, co zostało wysłane do sklepu.

  3. Gdy tylko wydasz aktualizację do sklepu z aplikacjami (na przykład 1.1.0), a użytkownicy końcowi ją zaktualizują, po raz kolejny uzyskają pakiet JS zawarty w pliku binarnym. To zachowanie gwarantuje, że aktualizacje codePush, które są objęte poprzednią wersją binarną, nie są używane (ponieważ nie wiemy, że będą działać), a użytkownicy końcowi zawsze mają działającą wersję aplikacji.

  4. Powtórz elementy #2 i #3, ponieważ wydania CodePush i wydania ze sklepu z aplikacjami będą kontynuowane w nieskończoność (i poza nią?)

Ze względu na to zachowanie można bezpiecznie wdrażać aktualizacje zarówno w sklepach z aplikacjami, jak i w razie potrzeby CodePush, i mieć pewność, że użytkownicy końcowi zawsze otrzymają najnowszą wersję.

Metody

  • (NSURL *)bundleURL — zwraca najnowszy pakiet NSURL JS zgodnie z powyższym opisem. Ta metoda zakłada, że nazwa pakietu JS zawartego w pliku binarnym aplikacji to main.jsbundle.

  • (NSURL *)bundleURLForResource:(NSString *)resourceName — odpowiednik bundleURL metody, ale umożliwia również dostosowanie nazwy pakietu JS wyszukiwanego w pliku binarnym aplikacji. Jest to przydatne, jeśli nie nazywasz tego pliku main (co jest konwencją domyślną). W tej metodzie przyjęto założenie, że rozszerzenie pakietu JS to *.jsbundle.

  • (NSURL *)bundleURLForResource:(NSString *)resourceName withExtension:(NSString *)resourceExtension: Odpowiednik bundleURLForResource: metody, ale umożliwia również dostosowanie rozszerzenia używanego przez pakiet JS wyszukiwany w pliku binarnym aplikacji. Jest to przydatne, jeśli nie nazywasz tego pliku *.jsbundle (co jest konwencją domyślną).

  • (void)overrideAppVersion:(NSString *)appVersionOverride — ustawia wersję interfejsu binarnego aplikacji, która w przeciwnym razie będzie domyślna dla wersji sklepu App Store określonej jako CFBundleShortVersionString w pliku Info.plist. Powinno to być wywoływane pojedynczo przed załadowaniem adresu URL pakietu.

  • (void)setDeploymentKey:(NSString *)deploymentKey — ustawia klucz wdrożenia, którego aplikacja powinna używać podczas wykonywania zapytań o aktualizacje. Jest to dynamiczna alternatywa dla ustawienia klucza wdrożenia w pliku Info.plist lub określenia klucza wdrożenia w języku JS podczas wywoływania checkForUpdate lub sync.

Dokumentacja interfejsu API języka Java (Android)

Interfejs API dla oprogramowania React Native w wersji 0.60 lub nowszej

Ponieważ autolinking używa react-native.config.js metody do łączenia wtyczek, konstruktory są określone w tym pliku. Można jednak zastąpić zmienne niestandardowe, aby zarządzać wtyczką CodePush, umieszczając te wartości w zasobach ciągów.

  • Klucz publiczny — używany do weryfikacji pakietu w funkcji podpisywania kodu. Aby uzyskać więcej informacji na temat funkcji podpisywania kodu, zobacz sekcję Podpisywanie kodu. Aby ustawić klucz publiczny, należy dodać zawartość klucza publicznego do strings.xml elementu o nazwie CodePushPublicKey. Funkcja CodePush automatycznie pobiera tę właściwość i włącza funkcję podpisywania kodu. Na przykład:

    <string moduleConfig="true" name="CodePushPublicKey">your-public-key</string>
    
  • Adres URL serwera — służy do określania adresu URL serwera CodePush. Wartość domyślna: "https://codepush.appcenter.ms/" parametr jest zastępowany przez dodanie ścieżki do elementu strings.xml o nazwie CodePushServerUrl. KodPush automatycznie pobiera tę właściwość i użyje tej ścieżki do wysyłania żądań. Na przykład:

    <string moduleConfig="true" name="CodePushServerUrl">https://yourcodepush.server.com</string>
    

Interfejs API dla platformy React Native niższy niż 0,60

Interfejs API języka Java jest udostępniany przez zaimportowanie com.microsoft.codepush.react.CodePush klasy do pliku MainActivity.java i składa się z jednej klasy publicznej o nazwie CodePush.

CodePush

Tworzy środowisko uruchomieniowe klienta CodePush i reprezentuje ReactPackage wystąpienie dodawane do listy pakietów aplikacji.

Konstruktory

  • CodePush(String deploymentKey, Activity mainActivity) — tworzy nowe wystąpienie środowiska uruchomieniowego CodePush, które będzie używane do wykonywania zapytań o usługę pod kątem aktualizacji za pośrednictwem podanego klucza wdrożenia. Parametr mainActivity powinien być zawsze ustawiany na this wartość podczas konfigurowania listy pakietów React wewnątrz MainActivity klasy. Ten konstruktor umieszcza środowisko uruchomieniowe CodePush w trybie wydania, więc jeśli chcesz włączyć zachowanie debugowania, zamiast tego użyj następującego konstruktora.

  • CodePush(String deploymentKey, Activity mainActivity, bool isDebugMode) — odpowiednik poprzedniego konstruktora, ale umożliwia określenie, czy środowisko uruchomieniowe CodePush ma być w trybie debugowania, czy nie. W przypadku korzystania z tego konstruktora isDebugMode parametr powinien być zawsze ustawiony tak, aby BuildConfig.DEBUG zachować synchronizację z typem kompilacji. Podczas wprowadzania koduPush w tryb debugowania są włączone następujące zachowania:

    1. Stare aktualizacje CodePush nie są usuwane z magazynu za każdym razem, gdy nowy plik binarny zostanie wdrożony w emulatorze/urządzeniu. To zachowanie umożliwia wdrażanie nowych plików binarnych bez zwiększania wersji podczas programowania i bez ciągłego pobierania tej samej aktualizacji za każdym razem, gdy aplikacja wywołuje metodę sync.

    2. Lokalna pamięć podręczna przechowywana przez środowisko uruchomieniowe React Native w trybie debugowania jest usuwana przy każdym zainstalowaniu aktualizacji CodePush. Gwarantuje to, że po ponownym uruchomieniu aplikacji po zastosowaniu aktualizacji można zobaczyć oczekiwane zmiany. Po scaleniu tego żądania ściągnięcia nie będziemy już musieli tego robić.

  • CodePush(String deploymentKey, Context context, boolean isDebugMode, Integer publicKeyResourceDescriptor) — odpowiednik poprzedniego konstruktora, ale umożliwia określenie deskryptora zasobów klucza publicznego potrzebnego do odczytu zawartości klucza publicznego. Aby uzyskać więcej informacji na temat funkcji podpisywania kodu, zobacz sekcję Podpisywanie kodu.

  • CodePush(String deploymentKey, Context context, boolean isDebugMode, String serverUrl) — konstruktor umożliwia określenie adresu URL serwera CodePush. Wartość domyślna: "https://codepush.appcenter.ms/" jest zastępowana przez wartość określoną w pliku serverUrl.

Metody statyczne

  • getBundleUrl() — zwraca ścieżkę do najnowszej wersji pliku pakietu JS aplikacji, zakładając, że nazwa zasobu to index.android.bundle. Jeśli aplikacja używa innej nazwy pakietu, użyj przeciążonej wersji tej metody, która umożliwia jej określenie. Ta metoda ma takie samo zachowanie rozwiązywania, jak w przypadku odpowiednika Objective-C opisanego powyżej.

  • getBundleUrl(String bundleName) — zwraca ścieżkę do najnowszej wersji pliku pakietu JS aplikacji przy użyciu określonej nazwy zasobu (na przykład index.android.bundle). Ta metoda ma takie samo zachowanie rozwiązywania, jak w przypadku odpowiednika Objective-C opisanego powyżej.

  • overrideAppVersion(String appVersionOverride) — ustawia wersję interfejsu binarnego aplikacji, która w przeciwnym razie będzie domyślna dla wersji Sklepu Play określonej jako versionName w pliku build.gradle. Powinno to być wywoływane pojedynczo, zanim zostanie skonstruowane wystąpienie CodePush.