Freigeben über


React Native Client SDK-API-Referenz

Wichtig

Visual Studio App Center wird am 31. März 2025 eingestellt. Sie können Visual Studio App Center zwar weiterhin verwenden, bis sie vollständig eingestellt ist, es gibt jedoch mehrere empfohlene Alternativen, zu denen Sie die Migration in Betracht ziehen können.

Erfahren Sie mehr über die Fristen für den Support sowie über mögliche Alternativen.

Das CodePush-Plug-In besteht aus zwei Komponenten:

  1. Ein JavaScript-Modul, das importiert/erforderlich werden kann und die App während der Laufzeit mit dem Dienst interagieren kann (z. B. auf Updates überprüfen, die Metadaten zum aktuell ausgeführten App-Update überprüfen).

  2. Eine systemeigene API (Objective-C und Java), die es dem React Native-App-Host ermöglicht, sich selbst mit dem richtigen JS-Bundlespeicherort zu bootstrapieren.

In den folgenden Abschnitten werden die Form und das Verhalten dieser APIs ausführlich beschrieben:

JavaScript-API-Referenz

Bei Bedarf react-native-code-pushstellt das Modulobjekt zusätzlich zum Komponentendekoror der Stammebene die folgenden Methoden auf oberster Ebene bereit:

  • allowRestart: Reallows programmatic restarts to occur as a update being installed, and optional, immediately restarts the app if a pending update had attempted to restart the app while restarts while restarts were disallowed. Diese Methode ist eine erweiterte API und ist nur erforderlich, wenn Ihre App explizit neustarts über die disallowRestart Methode nicht zugelassen hat.

  • checkForUpdate: Fragt den CodePush-Dienst, ob die konfigurierte App-Bereitstellung über ein Update verfügt.

  • disallowRestart: Verbietet vorübergehend alle programmgesteuerten Neustarts, wenn ein CodePush-Update installiert wird. Diese Methode ist eine erweiterte API und ist nützlich, wenn eine Komponente in Ihrer App (z. B. ein Onboardingprozess) sicherstellen muss, dass während der Lebensdauer keine Unterbrechungen des Endbenutzers auftreten können.

  • getCurrentPackage: Ruft die Metadaten zum aktuell installierten Update ab (z. B. Beschreibung, Installationszeit, Größe).

    Hinweis

    Ab dem v1.10.3-beta CodePush-Modul getCurrentPackage wird für *veraltet getUpdateMetadata.

  • getUpdateMetadata: Ruft die Metadaten für ein installiertes Update ab (z. B. Beschreibung, obligatorisch).

  • notifyAppReady: Benachrichtigt die CodePush-Laufzeit, dass ein installiertes Update als erfolgreich betrachtet wird. Wenn Sie manuell nach Updates suchen und installieren (d. h. die Synchronisierungsmethode nicht für Sie verwendet), muss diese Methode aufgerufen werden. Andernfalls behandelt CodePush das Update als fehlgeschlagen und führt einen Rollback auf die vorherige Version durch, wenn die App das nächste Mal neu startet.

  • restartApp: Startet die App sofort neu. Wenn ein Update aussteht, wird es dem Endbenutzer sofort angezeigt. Andernfalls hat das Aufrufen dieser Methode dasselbe Verhalten wie das Töten und Neustarten des Prozesses durch den Endbenutzer.

  • sync: Ermöglicht die Überprüfung auf ein Update, das Herunterladen und Installieren des Updates, alles mit einem einzigen Anruf. Sofern Sie keine benutzerdefinierte Benutzeroberfläche oder ein benutzerdefiniertes Verhalten benötigen, empfehlen wir den meisten Entwicklern, diese Methode beim Integrieren von CodePush in ihre Apps zu verwenden.

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)

Wird verwendet, um eine React-Komponente in eine "höhere Reihenfolge" React-Komponente einzuschließen, die weiß, wie Sie das JavaScript-Bundle und die Bildressourcen Ihrer App synchronisieren, wenn sie bereitgestellt wird. Intern ruft sync die Komponente mit höherer Reihenfolge innerhalb des componentDidMount Lebenszyklushandle auf, die eine Updateüberprüfung ausführt, das Update herunterlädt, falls vorhanden, und installiert das Update für Sie.

Dieser Dekorateur bietet Unterstützung, mit der Sie sein Verhalten anpassen können, um Apps mit unterschiedlichen Anforderungen einfach zu aktivieren. Im Folgenden finden Sie einige Beispiele für Die Verwendungsmöglichkeiten (Sie können eine oder sogar eine Kombination verwenden):

  1. Automatische Synchronisierung beim Starten der App (einfachstes Standardverhalten) Ihre App lädt automatisch verfügbare Updates herunter und wendet sie an, wenn die App das nächste Mal neu gestartet wird (z. B. das Betriebssystem oder der Endbenutzer hat sie beendet, oder das Gerät wurde neu gestartet). Auf diese Weise ist die gesamte Updateumgebung für den Endbenutzer "unbeaufsichtigt", da keine Aktualisierungsaufforderung oder "synthetische" App-Neustarts angezeigt werden.

    // 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. Automatische Synchronisierung jedes Mal, wenn die App fortgesetzt wird. Identisch mit 1, es sei denn, wir suchen nach Updates, oder wenden sie ein Update an, wenn jedes Mal vorhanden ist, wenn die App nach dem "Hintergrund" in den Vordergrund zurückkehrt.

    // 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. Interaktiv. Wenn ein Update verfügbar ist, fordern Sie den Endbenutzer vor dem Herunterladen zur Berechtigung auf, und wenden Sie das Update sofort an. Wenn ein Update mit der mandatory Kennzeichnung veröffentlicht wurde, wird der Endbenutzer weiterhin über das Update benachrichtigt, hat aber nicht die Möglichkeit, es zu ignorieren.

    // 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. Protokoll-/Anzeigestatus. Während die App mit dem Server für Updates synchronisiert wird, verwenden Sie die codePushStatusDidChange Hooks oder codePushDownloadDidProgress Ereignisse, um die verschiedenen Phasen dieses Prozesses abzumelden oder dem Benutzer sogar eine Statusanzeige anzuzeigen.

    // 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

Der codePush Dekorateur akzeptiert ein "Options"-Objekt, mit dem Sie zahlreiche Aspekte des oben genannten Standardverhaltens anpassen können:

  • checkFrequency (codePush.CheckFrequency) – Gibt an, wann Sie nach Updates suchen möchten. Wird standardmäßig auf codePush.CheckFrequency.ON_APP_START festgelegt. In der CheckFrequency Enumerationsreferenz finden Sie eine Beschreibung der verfügbaren Optionen und deren Funktionsweise.

  • deploymentKey (String) – Gibt den Bereitstellungsschlüssel an, für den Sie eine Aktualisierung abfragen möchten. Dieser Wert wird standardmäßig von der Info.plist-Datei (iOS) und MainActivity.java Datei (Android) abgeleitet, aber mit dieser Option können Sie ihn von der Skriptseite außer Kraft setzen, wenn Sie eine andere Bereitstellung dynamisch verwenden müssen.

  • installMode (codePush.InstallMode) – Gibt an, wann Optionale Updates installiert werden sollen (die nicht als obligatorisch gekennzeichnet sind). Wird standardmäßig auf codePush.InstallMode.ON_NEXT_RESTART festgelegt. In der InstallMode Enumerationsreferenz finden Sie eine Beschreibung der verfügbaren Optionen und deren Funktionsweise.

  • obligatorInstallMode (codePush.InstallMode) – Gibt an, wann Sie Updates installieren möchten, die als obligatorisch gekennzeichnet sind. Wird standardmäßig auf codePush.InstallMode.IMMEDIATE festgelegt. In der InstallMode Enumerationsreferenz finden Sie eine Beschreibung der verfügbaren Optionen und deren Funktionsweise.

  • minimumBackgroundDuration (Number) – Gibt die mindeste Anzahl von Sekunden an, damit sich die App im Hintergrund befindet, bevor Sie die App neu starten. Diese Eigenschaft gilt nur für Updates, die mit InstallMode.ON_NEXT_RESUME oder InstallMode.ON_NEXT_SUSPENDoder installiert werden, und kann nützlich sein, um Ihr Update früher vor Endbenutzern zu erhalten, ohne zu stören. 0Der Standardwert ist , der das Update unmittelbar nach einem Fortsetzen anwendet, oder es sei denn, die App ist lange genug, um keine Rolle zu spielen, jedoch lange im Hintergrund.

  • updateDialog (UpdateDialogOptions) – Ein "options"-Objekt, das verwendet wird, um zu bestimmen, ob dem Endbenutzer ein Bestätigungsdialogfeld angezeigt werden soll, wenn eine Aktualisierung verfügbar ist, und wenn ja, welche Zeichenfolgen verwendet werden sollen. nullStandardmäßig wird das Dialogfeld deaktiviert. Wenn Sie diesen Wert auf einen beliebigen true Wert festlegen, wird das Dialogfeld mit den Standardzeichenfolgen aktiviert, und das Übergeben eines Objekts an diesen Parameter ermöglicht das Aktivieren des Dialogfelds sowie das Überschreiben einer oder mehrerer der Standardzeichenfolgen. Bevor Sie diese Option in einer app store-verteilten App aktivieren, lesen Sie diese Notiz.

    Die folgende Liste stellt die verfügbaren Optionen und deren Standardwerte dar:

    • appendReleaseDescription (Boolean) – Gibt an, ob Sie die Beschreibung einer verfügbaren Version an die Benachrichtigung anfügen möchten, die dem Endbenutzer angezeigt wird. Wird standardmäßig auf false festgelegt.

    • descriptionPrefix (String) – Gibt die Zeichenfolge an, der sie der Versionsbeschreibung voranstellen möchten, wenn vorhanden, wenn die Updatebenachrichtigung für den Endbenutzer angezeigt wird. Der Standardwert lautet " Description: ".

    • obligatorContinueButtonLabel (String) – Der Text, der für die Schaltfläche verwendet werden soll, die der Endbenutzer drücken muss, um ein obligatorisches Update zu installieren. Wird standardmäßig auf "Continue" festgelegt.

    • obligatorUpdateMessage (String) – Der Text, der als Textkörper einer Updatebenachrichtigung verwendet wird, wenn das Update als obligatorisch angegeben wird. Wird standardmäßig auf "An update is available that must be installed." festgelegt.

    • optionalIgnoreButtonLabel (String) – Der für die Schaltfläche zu verwendende Text, den der Endbenutzer drücken kann, um ein optionales Update zu ignorieren, das verfügbar ist. Wird standardmäßig auf "Ignore" festgelegt.

    • optionalInstallButtonLabel (String) – Der Für die Schaltfläche zu verwendende Text, den der Endbenutzer drücken kann, um ein optionales Update zu installieren. Wird standardmäßig auf "Install" festgelegt.

    • optionalUpdateMessage (String) – Der Text, der als Textkörper einer Updatebenachrichtigung verwendet wird, wenn das Update optional ist. Wird standardmäßig auf "An update is available. Would you like to install it?" festgelegt.

    • title (String) – Der Text, der als Kopfzeile einer Aktualisierungsbenachrichtigung verwendet wird, die dem Endbenutzer angezeigt wird. Wird standardmäßig auf "Update available" festgelegt.

  • rollbackRetryOptions (RollbackRetryOptions) – Mit dem Rollback-Wiederholungsmechanismus kann die Anwendung versuchen, ein Update neu zu installieren, das zuvor zurückgesetzt wurde (mit den in den Optionen angegebenen Einschränkungen). Es handelt sich um ein "options"-Objekt, das verwendet wird, um zu bestimmen, ob ein Rollback-Wiederholungsversuche erfolgen soll, und wenn ja, welche Einstellungen für den Rollback-Wiederholungsversuche verwendet werden sollen. Dieser Standardwert ist null, wodurch der Wiederholungsmechanismus deaktiviert wird. Wenn Sie dies auf einen wahrheitswerten Wert festlegen, wird der Wiederholungsmechanismus mit den Standardeinstellungen aktiviert, und das Übergeben eines Objekts an diesen Parameter ermöglicht das Aktivieren des Rollback-Wiederholungsversuches sowie das Überschreiben eines oder mehrerer Standardwerte.

    Die folgende Liste stellt die verfügbaren Optionen und deren Standardwerte dar:

    • delayInHours (Number) – Gibt die Mindestzeit in Stunden an, die die App nach dem neuesten Rollback wartet, bevor Sie versuchen, dasselbe rolld-back-Paket neu zu installieren. Darf nicht kleiner als 0sein. Dies kann eine Gleitkommanummer sein. Wird standardmäßig auf 24 festgelegt.

    • maxRetryAttempts (Number) – Gibt die maximale Anzahl von Wiederholungsversuchen an, die die App vornehmen kann, bevor der Versuch beendet wird. Darf nicht kleiner als 1sein. Wird standardmäßig auf 1 festgelegt.

codePushStatusDidChange (Ereignishaken)

Wird aufgerufen, wenn der Synchronisierungsprozess im gesamten Updateprozess von einer Phase zu einer anderen wechselt. Der Ereignishaken wird mit einem Statuscode aufgerufen, der den aktuellen Zustand darstellt und jeder der SyncStatus Werte sein kann.

codePushDownloadDidProgress (Ereignishaken)

Wird regelmäßig aufgerufen, wenn ein verfügbares Update vom CodePush-Server heruntergeladen wird. Die Methode wird mit einem DownloadProgress Objekt aufgerufen, das die folgenden beiden Eigenschaften enthält:

  • totalBytes (Number) – Die Gesamtanzahl der Bytes, die für dieses Update empfangen werden sollen (dies ist die Größe der Gruppe von Dateien, die sich von der vorherigen Version geändert haben).

  • receivedBytes (Number) – Die Anzahl der bisher heruntergeladenen Bytes, die zum Nachverfolgen des Downloadfortschritts verwendet werden können.

codePush.allowRestart

codePush.allowRestart(): void;

Reallows programmatic restarts to occur, that would's otherwise been rejected because of a previous call to disallowRestart. Wenn disallowRestart sie nie an erster Stelle aufgerufen wurde, führt das Aufrufen dieser Methode zu einem No-Op.

Wenn ein CodePush-Update zurzeit aussteht, das versucht hat, die App neu zu starten (z. B InstallMode.IMMEDIATE. verwendet), wurde aber aufgrund des disallowRestart Aufrufs blockiert, führt der Aufruf allowRestart zu einem sofortigen Neustart. Mit diesem Neustart kann das Update so schnell wie möglich angewendet werden, ohne den Endbenutzer während kritischer Workflows zu unterbrechen (z. B. ein Onboardingprozess).

Das Aufrufen allowRestart würde z. B. einen sofortigen Neustart auslösen, wenn eines der drei in den disallowRestart Dokumenten erwähnten Szenarien nach disallowRestart dem Aufruf aufgetreten ist. Der Aufruf allowRestart würde jedoch keinen Neustart auslösen, wenn die folgenden Punkte zutreffen:

  1. Seit dem letzten Aufruf disallowRestart wurden keine CodePush-Updates installiert. Daher ist es nicht erforderlich, trotzdem neu zu starten.

  2. Es gibt derzeit ein ausstehendes CodePush-Update, aber es wurde über InstallMode.ON_NEXT_RESTARTinstalliert, daher ist kein programmgesteuerter Neustart erforderlich.

  3. Es gibt derzeit ein ausstehendes CodePush-Update, aber es wurde über InstallMode.ON_NEXT_RESUME die App installiert, und die App wurde noch nicht im Hintergrund platziert, sodass noch kein programmgesteuerter Neustart erforderlich ist.

  4. Seit dem letzten Aufruf disallowRestart wurden keine Anrufe restartApp getätigt.

Dieses Verhalten stellt sicher, dass keine Neustarts aufgrund eines Aufrufs allowRestart ausgelöst werden, es sei denn, eine wurde während des unzulässigen Zeitraums explizit angefordert. Auf diese Weise ähnelt es dem AufrufenrestartApp(true), mit der Ausnahme, allowRestart dass der vorherige Aufruf nur dann einen Neustart auslöst, wenn das aktuell ausstehende Update neu gestartet werden soll, aber letzteres neu gestartet würde, solange ein Update aussteht.

Ein Beispiel dafür, wie diese Methode verwendet werden kann, finden Sie unter "disallowRestart ".

codePush.checkForUpdate

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

Fragt den CodePush-Dienst ab, um festzustellen, ob die konfigurierte App-Bereitstellung über ein Update verfügt. Standardmäßig wird der Bereitstellungsschlüssel verwendet, der in Ihrer Info.plist-Datei (iOS) oder MainActivity.java Datei (Android) konfiguriert ist. Sie können dies jedoch überschreiben, indem Sie einen Wert über den optionalen deploymentKey Parameter angeben. Dies kann nützlich sein, wenn Sie einen Benutzer dynamisch zu einer bestimmten Bereitstellung umleiten möchten, z. B. den "frühen Zugriff" über ein Osterei oder einen Benutzereinstellungsschalter zuzulassen.

Der zweite optionale Parameter handleBinaryVersionMismatchCallback ist eine optionale Rückruffunktion, die verwendet werden kann, um den Benutzer zu benachrichtigen, wenn eine binäre Aktualisierung vorhanden ist. Ziehen Sie z. B. einen Anwendungsfall in Betracht, in dem die derzeit installierte Binärversion 1.0.1 mit einer Bezeichnung (Code-Pushbezeichnung) v1 ist. Später wurde der systemeigene Code im Entwicklungszyklus geändert, und die Binärversion wurde auf 1.0.2 aktualisiert. Wenn eine Codepush-Updateüberprüfung ausgelöst wird, ignorieren wir Updates, die eine binäre Versionsübereinstimmung aufweisen (da das Update nicht auf die binäre Version der aktuell installierten App ausgerichtet ist). In diesem Fall ignoriert die installierte App (1.0.1) die Updatezielversion 1.0.2. Sie können einen handleBinaryVersionMismatchCallback Haken für solche Situationen bereitstellen.

Wichtig

Seien Sie vorsichtig, Benachrichtigungen in diesem Rückruf zu verwenden, wenn Sie iOS-Anwendung entwickeln, aufgrund des App Store-Überprüfungsprozesses : Apps dürfen nicht erzwingen, die App bewerten, die App überprüfen, andere Apps herunterladen oder andere ähnliche Aktionen für den Zugriff auf Funktionen, Inhalte oder die Verwendung der App durchführen.

Diese Methode gibt einen Promise, der zu einem von zwei möglichen Werten aufgelöst wird:

  1. null wenn kein Update verfügbar ist. Dies kann in den folgenden Situationen passieren:

    1. Die konfigurierte Bereitstellung enthält keine Versionen, und daher kann nichts aktualisiert werden.
    2. Die neueste Version innerhalb der konfigurierten Bereitstellung richtet sich an eine andere binäre Version als die, die Sie derzeit ausführen (entweder älter oder neuer).
    3. Die derzeit ausgeführte App verfügt bereits über die neueste Version der konfigurierten Bereitstellung und benötigt sie daher nicht mehr.
    4. Die neueste Version in der konfigurierten Bereitstellung ist derzeit als deaktiviert gekennzeichnet, sodass sie nicht heruntergeladen werden darf.
    5. Die neueste Version innerhalb der konfigurierten Bereitstellung befindet sich im Status "aktives Rollout", und das anfordernde Gerät fällt nicht in den Prozentsatz der Benutzer, die für die Bereitstellung berechtigt sind.
  2. Eine RemotePackage Instanz, die ein verfügbares Update darstellt, das überprüft oder später heruntergeladen werden kann.

Beispielverwendung:

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;

Programmgesteuerte Neustarts werden vorübergehend aufgrund einer der folgenden Szenarien nicht zugelassen:

  1. Ein CodePush-Update wird mithilfe von InstallMode.IMMEDIATE

  2. Ein CodePush-Update wird mithilfe InstallMode.ON_NEXT_RESUME installiert, und die App wird aus dem Hintergrund fortgesetzt (optional durch die minimumBackgroundDuration Eigenschaft gedrosselt)

  3. Die restartApp Methode wurde aufgerufen.

    Hinweis

    Die Schritte 1 und 2 funktionieren effektiv, indem Sie für Sie anrufen restartApp , sodass Sie sich disallowRestart vorstellen können, dass sie jeden Anruf restartAppblockieren, unabhängig davon, ob Ihre App sie direkt oder indirekt aufruft.

Nach dem Aufrufen dieser Methode konnten alle Aufrufe sync nach einem Update noch nach einem Update suchen, sie herunterladen und installieren, aber ein Versuch, die App neu zu starten, wird in die Warteschlange gestellt, bis allowRestart sie aufgerufen wird. Auf diese Weise wird die Neustartanforderung erfasst und kann immer dann "geleert" werden, wenn sie auftreten soll.

Dies ist eine erweiterte API und ist in erster Linie nützlich, wenn einzelne Komponenten in Ihrer App (z. B. ein Onboardingprozess) sicherstellen müssen, dass während ihrer Lebensdauer keine Unterbrechungen des Endbenutzers auftreten können, während die App weiterhin die Synchronisierung mit dem CodePush-Server in ihrem eigenen Tempo und die Verwendung der geeigneten Installationsmodi ermöglicht. Dies hat den Vorteil, dass die App verfügbare Updates so schnell wie möglich entdecken und herunterladen kann und gleichzeitig Unterbrechungen bei wichtigen Endbenutzererfahrungen verhindert.

Alternativ können Sie auch immer dann verwenden InstallMode.ON_NEXT_RESTART , wenn Sie die App aufrufen sync (die niemals versuchen, die App programmgesteuert neu zu starten), und dann explizit an Punkten in Ihrer App aufrufen restartApp , die dafür "sicher" ist. disallowRestart bietet einen alternativen Ansatz dazu, wenn der Code, der mit dem CodePush-Server synchronisiert wird, von dem Code/komponenten getrennt ist, der eine Richtlinie ohne Neustart erzwingen möchte.

Beispielverwendung:

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

Hinweis

Diese Methode gilt als veraltet im v1.10.3-beta CodePush-Modul. Wenn Sie diese Version (oder neuer) ausführen, empfehlen wir die Verwendung stattdessen codePush.getUpdateMetadata , da sie ein vorhersehbares Verhalten aufweist.

codePush.getCurrentPackage(): Promise<LocalPackage>;

Ruft die Metadaten zum aktuell installierten "Paket" ab (z. B. Beschreibung, Installationszeit). Dies kann für Szenarien hilfreich sein, z. B. das Anzeigen eines Dialogfelds "Neuerungen", nachdem ein Update angewendet wurde, oder ob ein ausstehendes Update vorhanden ist, das über einen Lebenslauf oder Neustart angewendet werden soll.

Diese Methode gibt einen Promise, der zu einem von zwei möglichen Werten aufgelöst wird:

  1. null wenn die App derzeit das JS-Bundle aus der Binärdatei und kein CodePush-Update ausführt. Dies geschieht in den folgenden Szenarien:

    1. Der Endbenutzer hat die App-Binärdatei installiert und muss noch ein CodePush-Update installieren.
    2. Der Endbenutzer hat ein Update der Binärdatei (z. B. aus dem Speicher) installiert, das die alten CodePush-Updates entfernt hat und der JS-Binärdatei in der Binärdatei Vorrang gab.
  2. Eine LocalPackage Instanz, die die Metadaten für das derzeit ausgeführte CodePush-Update darstellt.

Beispielverwendung:

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>;

Ruft die Metadaten für ein installiertes Update (z. B. Beschreibung, obligatorisch) ab, dessen Status mit dem angegebenen updateState Parameter übereinstimmt. Dies kann für Szenarien hilfreich sein, z. B. das Anzeigen eines Dialogfelds "Neuerungen", nachdem ein Update angewendet wurde, oder ob ein ausstehendes Update vorhanden ist, das über einen Lebenslauf oder Neustart angewendet werden soll. Weitere Informationen zu den möglichen Updatezuständen und deren Darstellung finden Sie in der UpdateState-Referenz.

Diese Methode gibt einen Promise, der zu einem von zwei möglichen Werten aufgelöst wird:

  1. null wenn derzeit kein Update mit dem angegebenen Zustand vorhanden ist. Dies geschieht in den folgenden Szenarien:

    1. Der Endbenutzer hat noch keine CodePush-Updates installiert, und deshalb stehen keine Metadaten für Updates zur Verfügung, unabhängig davon, was Sie als updateState Parameter angeben.

    2. Der Endbenutzer hat ein Update der Binärdatei (z. B. aus dem Speicher) installiert, das die alten CodePush-Updates entfernt hat und der JS-Binärdatei in der Binärdatei Vorrang gab. Es würde das gleiche Verhalten wie #1 aufweisen.

    3. Der updateState Parameter ist auf ", UpdateState.RUNNINGaber die App führt derzeit kein CodePush-Update aus. Es kann ein ausstehendes Update geben, aber die App wurde noch nicht neu gestartet, um sie zu aktivieren.

    4. Der updateState Parameter ist auf UpdateState.PENDING", aber die App verfügt derzeit nicht über ausstehende Updates.

  2. Eine LocalPackage Instanz, die die Metadaten für das aktuell angeforderte CodePush-Update darstellt (entweder das ausführende oder ausstehende).

Beispielverwendung:

// 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>;

Benachrichtigt die CodePush-Laufzeit, dass ein neu installiertes Update als erfolgreich betrachtet werden sollte, und daher ist kein automatischer clientseitiger Rollback erforderlich. Es ist obligatorisch, diese Funktion irgendwo im Code des aktualisierten Bundles aufzurufen. Andernfalls wird beim nächsten Neustart der App von der CodePush-Laufzeit davon ausgegangen, dass das installierte Update fehlgeschlagen ist und ein Rollback auf die vorherige Version erfolgt ist. Dieses Verhalten ist vorhanden, um sicherzustellen, dass Ihre Endbenutzer nicht durch ein fehlerhaftes Update blockiert werden.

Wenn Sie die sync Funktion verwenden und die Aktualisierungsprüfung beim Starten der App ausführen, müssen Sie sie nicht manuell aufrufen notifyAppReady , da sync sie für Sie aufgerufen wird. Dieses Verhalten ist aufgrund der Annahme vorhanden, dass bei sync Aufruf in Ihrer App eine gute Annäherung an einen erfolgreichen Start darstellt.

Hinweis

Diese Methode wird auch als notifyApplicationReady Alias (aus Gründen der Abwärtskompatibilität) verwendet.

codePush.restartApp

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

Startet die App sofort neu. Wenn dem onlyIfUpdateIsPending Parameter ein Wahrheitswert bereitgestellt wird, wird die App nur neu gestartet, wenn tatsächlich ein ausstehendes Update auf die Anwendung wartet.

Diese Methode eignet sich für erweiterte Szenarien und ist in erster Linie nützlich, wenn die folgenden Bedingungen zutreffen:

  1. Ihre App gibt einen Installationsmoduswert oder ON_NEXT_RESTART beim Aufrufen der sync Methoden an ON_NEXT_RESUME LocalPackage.install. Dies gilt nicht für Ihr Update, bis die App neu gestartet wurde (entweder vom Endbenutzer oder Betriebssystem) oder fortgesetzt wurde. Daher wird das Update dem Endbenutzer nicht sofort angezeigt.

  2. Sie haben ein appspezifisches Benutzerereignis (z. B. den Endbenutzer, der zurück zur Startseitenroute der App navigiert hat), mit der Sie das Update auf unaufdringliche Weise anwenden können und das Update möglicherweise früher als warten, bis der nächste Neustart oder der nächste Vorgang fortgesetzt wird.

codePush.sync

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

Synchronisiert das JavaScript-Bundle und die Imageressourcen Ihrer App mit der neuesten Version mit der konfigurierten Bereitstellung. Anders als bei der CheckForUpdate-Methode , die auf das Vorhandensein eines Updates überprüft und sie steuern möchten, was als Nächstes zu tun ist, sync behandelt die Updateüberprüfung, den Download und die Installationsumgebung für Sie.

Diese Methode bietet Unterstützung für zwei verschiedene (aber anpassbare) "Modi", um Apps mit unterschiedlichen Anforderungen einfach zu aktivieren:

  1. Der unbeaufsichtigte Modus (Standardverhalten) lädt automatisch verfügbare Updates herunter und wendet sie an, wenn die App das nächste Mal neu gestartet wird (z. B. das Betriebssystem oder der Endbenutzer, oder das Gerät wurde neu gestartet). Auf diese Weise ist die gesamte Updateumgebung für den Endbenutzer "unbeaufsichtigt", da keine Aktualisierungsaufforderung oder "synthetische" App-Neustarts angezeigt werden.

  2. Aktiver Modus, der bei Verfügbarkeit eines Updates den Endbenutzer zur Berechtigung auffordert, bevor es heruntergeladen wird, und wendet dann sofort das Update an. Wenn ein Update mit der mandatory Kennzeichnung veröffentlicht wurde, wird der Endbenutzer weiterhin über das Update benachrichtigt, hat aber nicht die Möglichkeit, es zu ignorieren.

Beispielverwendung:

// 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 });

Tipp

Wenn Sie entscheiden möchten, ob Sie ein verfügbares Update basierend auf dem Akkustand des Geräts des Endbenutzers, den Netzwerkbedingungen usw. überprüfen oder herunterladen möchten, schließen Sie den Anruf sync in eine Bedingung ein, die sicherstellt, dass Sie es nur bei Bedarf anrufen.

SyncOptions

Während die sync Methode versucht, automatische und aktive Updates mit wenig Konfiguration zu erledigen, akzeptiert sie ein "Options"-Objekt, mit dem Sie viele Aspekte des oben genannten Standardverhaltens anpassen können. Die verfügbaren Optionen sind identisch mit codePushOptions, mit Ausnahme der checkFrequency Option:

Beispielverwendung:

// 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
   }
});

Zusätzlich zu den Optionen akzeptiert die sync Methode auch mehrere optionale Funktionsparameter, mit denen Sie den Lebenszyklus der sync "Pipeline" abonnieren können, um zusätzliche UI nach Bedarf anzuzeigen (z. B. eine "Überprüfung auf update modal oder ein Download-Status modal):

  • syncStatusChangedCallback ((syncStatus: Number) => void) – Wird aufgerufen, wenn der Synchronisierungsprozess von einer Phase zu einer anderen im gesamten Updateprozess wechselt. Die Methode wird mit einem Statuscode aufgerufen, der den aktuellen Zustand darstellt und beliebige Werte SyncStatus sein kann.

  • downloadProgressCallback ((progress: DownloadProgress) => void) – Wird regelmäßig aufgerufen, wenn ein verfügbares Update vom CodePush-Server heruntergeladen wird. Die Methode wird mit einem DownloadProgress Objekt aufgerufen, das die folgenden beiden Eigenschaften enthält:

    • totalBytes (Number) – Die Gesamtanzahl der Bytes, die für dieses Update empfangen werden sollen (dies ist die Größe der Gruppe von Dateien, die sich von der vorherigen Version geändert haben).

    • receivedBytes (Number) – Die Anzahl der bisher heruntergeladenen Bytes, die zum Nachverfolgen des Downloadfortschritts verwendet werden können.

  • handleBinaryVersionMismatchCallback ((update: RemotePackage) => void) – Wird aufgerufen, wenn ein binäres Update verfügbar ist. Die Methode wird mit einem RemotePackage Objekt aufgerufen. Weitere Informationen finden Sie im Abschnitt "codePush.checkForUpdate" .

Beispielverwendung:

// 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 */
  }
);

Diese Methode gibt einen PromiseCode zurück, der angibt SyncStatus , warum der sync Aufruf erfolgreich war. Dieser Code kann einen der folgenden SyncStatus Werte aufweisen:

  • codePush.SyncStatus.UP_TO_DATE (4) – Die App ist mit dem CodePush-Server auf dem neuesten Stand.

  • codePush.SyncStatus.UPDATE_IGNORED (5) – Die App hatte ein optionales Update, das der Endbenutzer ignoriert hat. (Dies gilt nur, wenn sie updateDialog verwendet wird)

  • codePush.SyncStatus.UPDATE_INSTALLED (6) – Das Update wurde installiert und wird entweder unmittelbar nach dem Zurückgeben der syncStatusChangedCallback Funktion oder beim nächsten Fortsetzen/Neustart der App ausgeführt, je nach der InstallMode angegebenen AngabeSyncOptions.

  • codePush.SyncStatus.SYNC_IN_PROGRESS (7) – Es wird ein fortlaufender sync Vorgang ausgeführt, der verhindert, dass der aktuelle Aufruf ausgeführt wird.

Die sync Methode kann an einer beliebigen Stelle aufgerufen werden, die Sie auf ein Update überprüfen möchten. Dies könnte sich im componentWillMount Lebenszyklusereignis Ihrer Stammkomponente, dem onPress-Handler einer <TouchableHighlight> Komponente, im Rückruf eines regelmäßigen Timers befinden oder was sonst für Ihre Anforderungen sinnvoll ist. Wie bei der checkForUpdate Methode wird die Netzwerkanforderung ausgeführt, um im Hintergrund nach einer Aktualisierung zu suchen, sodass sie sich nicht auf die Reaktionsfähigkeit des UI-Threads oder JavaScript-Threads auswirkt.

Package-Objekte

Die checkForUpdate Und getUpdateMetadata Methoden geben Objekte zurück Promise , die beim Auflösen Zugriff auf "package"-Objekte ermöglichen. Das Paket stellt die Codeaktualisierung und alle zusätzlichen Metadaten (z. B. Beschreibung, obligatorisch?) dar. Die CodePush-API weist den Unterschied zwischen den folgenden Pakettypen auf:

  • LocalPackage: Stellt ein heruntergeladenes Update dar, das entweder bereits ausgeführt wird oder installiert wurde und ein App-Neustart aussteht.

  • RemotePackage: Stellt ein verfügbares Update auf dem CodePush-Server dar, der noch nicht heruntergeladen wurde.

LocalPackage

Enthält Details zu einem Update, das lokal oder bereits installiert wurde. Sie können einen Verweis auf eine Instanz dieses Objekts abrufen, indem Sie entweder die Methode auf Modulebene getUpdateMetadata oder als Wert der von der RemotePackage.download Methode zurückgegebenen Zusage aufrufen.

Eigenschaften
  • appVersion: Die Binärversion der App, von der dieses Update abhängig ist. Dies ist der Wert, der beim Aufrufen des CLI-Befehls release über den appStoreVersion Parameter angegeben wurde. (Zeichenfolge)
  • deploymentKey: Der Bereitstellungsschlüssel, der zum ursprünglichen Herunterladen dieses Updates verwendet wurde. (Zeichenfolge)
  • beschreibung: Die Beschreibung des Updates. Dies ist derselbe Wert, den Sie bei der Veröffentlichung des Updates in der CLI angegeben haben. (Zeichenfolge)
  • failedInstall: Gibt an, ob dieses Update zuvor installiert, aber zurückgesetzt wurde. Die sync Methode ignoriert automatisch Aktualisierungen, die zuvor fehlgeschlagen sind, daher müssen Sie sich bei Verwendung checkForUpdatenur um diese Eigenschaft kümmern. (Boolescher Wert)
  • isFirstRun: Gibt an, ob dies das erste Mal ist, wenn das Update nach der Installation ausgeführt wurde. Dies ist nützlich, um zu bestimmen, ob Sie ein "Was ist neu?" anzeigen möchten. Benutzeroberfläche für den Endbenutzer nach der Installation eines Updates. (Boolescher Wert)
  • isMandatory: Gibt an, ob das Update als obligatorisch betrachtet wird. Dies ist der Wert, der bei der Veröffentlichung des Updates in der CLI angegeben wurde. (Boolescher Wert)
  • isPending: Indicates whether this update is in a "pending" state. Wenn true, das bedeutet, dass das Update heruntergeladen und installiert wurde, aber der App-Neustart erforderlich ist, um es anzuwenden, ist noch nicht aufgetreten, und deshalb sind die Änderungen für den Endbenutzer derzeit nicht sichtbar. (Boolescher Wert)
  • label: Die interne Bezeichnung wird automatisch an die Aktualisierung vom CodePush-Server übergeben, z v5. B. . Dieser Wert identifiziert das Update innerhalb der Bereitstellung eindeutig. (Zeichenfolge)
  • packageHash: Der SHA-Hashwert des Updates. (Zeichenfolge)
  • packageSize: Die Größe des Codes, der in der Aktualisierung enthalten ist, in Byte. (Zahl)
Methoden
  • install(installMode: codePush.InstallMode = codePush.InstallMode.ON_NEXT_RESTART, minimumBackgroundDuration = 0): Promise<void>: Installs the update by saving it to the location on disk where the runtime expects to find the latest version of the app. Der installMode Parameter steuert, wann die Änderungen für den Endbenutzer angezeigt werden. Der Standardwert besteht darin, bis der nächste App-Neustart wartet, um die Änderungen anzuzeigen. Sie können sich jedoch auf den InstallMode Enumerationsverweis beziehen, um eine Beschreibung der verfügbaren Optionen und deren Funktionsweise zu erhalten. Wenn der installMode Parameter auf " InstallMode.ON_NEXT_RESUME" festgelegt ist, können Sie mit dem minimumBackgroundDuration Parameter steuern, wie lange sich die App im Hintergrund befinden muss, bevor sie nach dem Fortsetzen der Installation erzwungen wird.

RemotePackage

Enthält Details zu einem Update, das vom CodePush-Server heruntergeladen werden kann. Sie erhalten einen Verweis auf eine Instanz dieses Objekts, indem Sie die checkForUpdate Methode aufrufen, wenn eine Aktualisierung verfügbar ist. Wenn Sie die sync API verwenden, müssen Sie sich keine Gedanken über die RemotePackageApi machen, da er den Download- und Installationsprozess automatisch für Sie verarbeitet.

Eigenschaften

Die RemotePackage Erbt alle gleichen Eigenschaften wie die LocalPackage, enthält jedoch eine weitere:

  • downloadUrl: Die URL, unter der das Paket zum Download verfügbar ist. Diese Eigenschaft wird nur für die erweiterte Verwendung benötigt, da die download Methode automatisch den Erwerb von Updates für Sie verarbeitet. (Zeichenfolge)
Methoden
  • download(downloadProgressCallback?: Function): Promise<LocalPackage>: Lädt das verfügbare Update vom CodePush-Dienst herunter. Wenn ein downloadProgressCallback Wert angegeben wird, wird er in regelmäßigen Abständen mit einem DownloadProgress Objekt ({ totalBytes: Number, receivedBytes: Number }) aufgerufen, das den Fortschritt des Downloads meldet, bis er abgeschlossen ist. Gibt eine Zusage zurück, die mit dem LocalPackageWert aufgelöst wird.

Enumerationen

Die CodePush-API enthält die folgenden Enumerationen, die zum Anpassen der Updateumgebung verwendet werden können:

InstallMode

Diese Enumeration gibt an, wann ein installiertes Update tatsächlich angewendet werden soll und an die sync Methoden LocalPackage.install übergeben werden kann. Sie enthält die folgenden Werte:

  • codePush.InstallMode.IMMEDIATE (0) – Gibt an, dass Sie das Update installieren und die App sofort neu starten möchten. Dieser Wert eignet sich sowohl für Debuggingszenarien als auch beim Anzeigen einer Aktualisierungsaufforderung für den Benutzer, da sie erwarten würden, dass die Änderungen unmittelbar nach der Annahme der Installation angezeigt werden. Darüber hinaus kann dieser Modus verwendet werden, um obligatorische Updates zu erzwingen, da er die potenziell unerwünschte Latenz zwischen der Updateinstallation und dem nächsten Neustart des Endbenutzers entfernt oder die App fortsetzt.

  • codePush.InstallMode.ON_NEXT_RESTART (1) – Gibt an, dass Sie das Update installieren möchten, aber nicht die App erneut starten möchten. Wenn die App "natürlich" neu gestartet wird (aufgrund des Betriebssystems oder des Endbenutzers, das sie tötet), wird das Update nahtlos aufgenommen. Dieser Wert ist geeignet, wenn automatische Updates ausgeführt werden, da der Endbenutzer wahrscheinlich störend ist, wenn die App plötzlich aus dem Nichts neu gestartet wird. Sie würden nicht erkennen, dass ein Update sogar heruntergeladen wurde. Dies ist der Standardmodus, der sowohl für die als LocalPackage.install auch für die sync Methoden verwendet wird.

  • codePush.InstallMode.ON_NEXT_RESUME (2) – Gibt an, dass Sie das Update installieren möchten, die App aber erst neu starten möchten, wenn der Endbenutzer sie das nächste Mal aus dem Hintergrund fortsetzt. Auf diese Weise unterbrechen Sie ihre aktuelle Sitzung nicht, aber Sie können das Update früher vor ihnen erhalten, als auf den nächsten natürlichen Neustart warten zu müssen. Dieser Wert eignet sich für automatische Installationen, die auf die Fortsetzung auf nicht-invasive Weise angewendet werden können.

  • codePush.InstallMode.ON_NEXT_SUSPEND (3) – Gibt an, dass Sie das Update installieren möchten, während es sich im Hintergrund befindet, aber erst, nachdem es sekundenlang minimumBackgroundDuration im Hintergrund war (standardmäßig 0), sodass der Benutzerkontext nicht verloren geht, es sei denn, die App ist lange genug, um keine Rolle zu spielen.

CheckFrequency

Diese Enumeration gibt an, wann Ihre App mit dem Server für Updates synchronisiert werden soll und an den codePushify Dekorateur übergeben werden kann. Sie enthält die folgenden Werte:

  • codePush.CheckFrequency.ON_APP_START (0) – Gibt an, dass Sie bei jedem Start der App nach Updates suchen möchten.

  • codePush.CheckFrequency.ON_APP_RESUME (1) – Gibt an, dass Sie nach dem "Hintergrund" der App nach dem "Hintergrund" auf Updates überprüfen möchten (Der Benutzer hat die Startschaltfläche gedrückt, die App startet einen separaten Zahlungsvorgang usw.).

  • codePush.CheckFrequency.MANUAL (2) – Automatische Überprüfung auf Updates deaktivieren, aber nur überprüfen, wenn codePush.sync() im App-Code aufgerufen wird.

SyncStatus

Diese Enumeration wird der syncStatusChangedCallback Funktion bereitgestellt, die an die sync Methode übergeben werden kann, um den gesamten Aktualisierungsprozess zu verbinden. Sie enthält die folgenden Werte:

  • codePush.SyncStatus.CHECKING_FOR_UPDATE (0) – Der CodePush-Server wird für ein Update abgefragt.
  • codePush.SyncStatus.AWAITING_USER_ACTION (1) – Ein Update ist verfügbar, und dem Endbenutzer wurde ein Bestätigungsdialogfeld angezeigt. (Dies gilt nur, wenn sie updateDialog verwendet wird)
  • codePush.SyncStatus.DOWNLOADING_PACKAGE (2) – Ein verfügbares Update wird vom CodePush-Server heruntergeladen.
  • codePush.SyncStatus.INSTALLING_UPDATE (3) – Ein verfügbares Update wurde heruntergeladen und wird installiert.
  • codePush.SyncStatus.UP_TO_DATE (4) – Die App ist mit der konfigurierten Bereitstellung vollständig auf dem neuesten Stand.
  • codePush.SyncStatus.UPDATE_IGNORED (5) – Die App verfügt über ein optionales Update, das der Endbenutzer ignoriert hat. (Dies gilt nur, wenn sie updateDialog verwendet wird)
  • codePush.SyncStatus.UPDATE_INSTALLED (6) – Ein verfügbares Update wurde installiert und wird entweder unmittelbar nach dem Zurückgeben der syncStatusChangedCallback Funktion oder beim nächsten Fortsetzen/Neustart der App ausgeführt, je nach der InstallMode angegebenen SyncOptionsAngabe.
  • codePush.SyncStatus.SYNC_IN_PROGRESS (7) – Es gibt einen laufenden sync Vorgang, der verhindert, dass der aktuelle Aufruf ausgeführt wird.
  • codePush.SyncStatus.UNKNOWN_ERROR (-1) – Der Synchronisierungsvorgang hat einen unbekannten Fehler gefunden.

UpdateState

Diese Enumeration gibt den Zustand an, in dem sich ein Update gerade befindet, und kann beim Aufrufen der getUpdateMetadata Methode angegeben werden. Sie enthält die folgenden Werte:

  • codePush.UpdateState.RUNNING (0) – Gibt an, dass ein Update die Aktuell ausgeführte Version der App darstellt. Dies kann hilfreich sein, um Attribute für die App zu identifizieren, für Szenarien wie das Anzeigen der Versionsbeschreibung in einem Dialogfeld "Was ist neu?" oder das Melden der neuesten Version an einen Analyse- oder Absturzberichtsdienst.

  • codePush.UpdateState.PENDING (1) – Gibt an, dass ein Update installiert wurde, aber die App noch nicht neu gestartet wurde, um es anzuwenden. Dies kann hilfreich sein, um zu bestimmen, ob ein ausstehendes Update vorhanden ist, das Sie möglicherweise erzwingen möchten, dass ein programmgesteuerter Neustart (via restartApp) angewendet wird.

  • codePush.UpdateState.LATEST (2) – Gibt an, dass ein Update die neueste verfügbare Version darstellt und entweder aktuell ausgeführt oder aussteht.

Objective-C-API-Referenz (iOS)

Die Objective-C-API wird durch Importieren des CodePush.h Headers in die Datei "AppDelegate.m " verfügbar gemacht und besteht aus einer einzigen öffentlichen Klasse mit dem Namen CodePush.

CodePush

Enthält statische Methoden zum Abrufen der NSURL Aktuellen JavaScript-Bundledatei und kann beim Bootstrapping Ihrer App in der Datei "AppDelegate.m" an die RCTRootViewMethode "sinitWithBundleURL" übergeben werden.

Die CodePush Methoden der Klasse können als zusammengesetzte Resolver betrachtet werden, die immer das entsprechende Bündel laden, um die folgenden Szenarien zu berücksichtigen:

  1. Wenn ein Endbenutzer Ihre App aus dem Store installiert (z 1.0.0. B.), erhält er das JS-Bündel, das in der Binärdatei enthalten ist. Dies ist das Verhalten, das Sie ohne Die Verwendung von CodePush erhalten, aber wir stellen sicher, dass dies nicht :)

  2. Sobald Sie mit der Veröffentlichung von CodePush-Updates beginnen, erhalten Ihre Endbenutzer das JS-Bundle, das die neueste Version für die konfigurierte Bereitstellung darstellt. Dies ist das Verhalten, mit dem Sie über das, was Sie an den Store versandt haben, durchlaufen können.

  3. Sobald Sie ein Update für den App Store freigeben (z 1.1.0. B. ), und Ihre Endbenutzer es aktualisieren, erhalten sie erneut das JS-Bündel, das in der Binärdatei enthalten ist. Dieses Verhalten stellt sicher, dass CodePush-Updates, die auf eine frühere Binärversion abzielen, nicht verwendet werden (da wir nicht wissen, dass sie funktionieren würden), und Ihre Endbenutzer verfügen immer über eine funktionierende Version Ihrer App.

  4. Wiederholen Sie #2 und #3, während die CodePush-Versionen und App Store-Versionen in unendlich (und darüber hinaus) fortgesetzt werden.

Aufgrund dieses Verhaltens können Sie Updates sowohl für den App Store(n) als auch für CodePush nach Bedarf sicher bereitstellen und sicher sein, dass Ihre Endbenutzer immer die neueste Version erhalten.

Methoden

  • (NSURL *)bundleURL - Gibt das neueste JS-Bundle NSURL wie oben beschrieben zurück. Bei dieser Methode wird davon ausgegangen, dass der Name des JS-Bundles, das in Ihrer App-Binärdatei enthalten ist main.jsbundle.

  • (NSURL *)bundleURLForResource:(NSString *)resourceName – Entspricht der bundleURL Methode, ermöglicht aber auch das Anpassen des Namens des JS-Bündels, das innerhalb der App-Binärdatei gesucht wird. Dies ist nützlich, wenn Sie diese Datei main nicht benennen (dies ist die Standardkonvention). Bei dieser Methode wird davon ausgegangen, dass die Erweiterung des JS-Bundles lautet *.jsbundle.

  • (NSURL *)bundleURLForResource:(NSString *)resourceName withExtension:(NSString *)resourceExtension: Equivalent to the bundleURLForResource: method, but also allows customizing the extension used by the JS bundle that's searched for within the app binary. Dies ist nützlich, wenn Sie diese Datei *.jsbundle nicht benennen (dies ist die Standardkonvention).

  • (void)overrideAppVersion:(NSString *)appVersionOverride – Legt die Version der binären Schnittstelle der Anwendung fest, was andernfalls standardmäßig auf die app Store-Version festgelegt würde, die als in der CFBundleShortVersionString Info.plist angegeben ist. Dies sollte ein mal aufgerufen werden, bevor die Bundle-URL geladen wird.

  • (void)setDeploymentKey:(NSString *)deploymentKey – Legt den Bereitstellungsschlüssel fest, den die App beim Abfragen nach Updates verwenden soll. Dies ist eine dynamische Alternative zum Festlegen des Bereitstellungsschlüssels in Ihrer Info.plist oder das Angeben eines Bereitstellungsschlüssels in JS beim Aufrufen checkForUpdate oder syncAngeben eines Bereitstellungsschlüssels.

Java-API-Referenz (Android)

API für React Native 0.60 Version und höher

Da autolinking Plug-Ins react-native.config.js verknüpft werden, werden Konstruktoren in dieser Datei angegeben. Sie können jedoch benutzerdefinierte Variablen überschreiben, um das CodePush-Plug-In zu verwalten, indem Sie diese Werte in Zeichenfolgenressourcen platzieren.

  • Öffentlicher Schlüssel – wird für die Paketüberprüfung im Codesignaturfeature verwendet. Weitere Informationen zum Codesignaturfeature finden Sie im Abschnitt "Codesignatur ". Um den öffentlichen Schlüssel festzulegen, sollten Sie den Inhalt des öffentlichen Schlüssels strings.xml mit dem Namen CodePushPublicKeyhinzufügen. CodePush ruft diese Eigenschaft automatisch ab und aktiviert die Codesignaturfunktion. Zum Beispiel:

    <string moduleConfig="true" name="CodePushPublicKey">your-public-key</string>
    
  • Server-URL – wird zum Angeben der CodePush-Server-URL verwendet. Standardwert: "https://codepush.appcenter.ms/" wird überschrieben, indem Sie Ihren Pfad mit strings.xml dem Namen CodePushServerUrlhinzufügen. CodePush ruft diese Eigenschaft automatisch ab und verwendet diesen Pfad zum Senden von Anforderungen. Zum Beispiel:

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

API für React Native niedriger als 0.60

Die Java-API wird durch Importieren der com.microsoft.codepush.react.CodePush Klasse in ihre MainActivity.java Datei verfügbar gemacht und besteht aus einer einzelnen öffentlichen Klasse mit dem Namen CodePush.

CodePush

Erstellt die CodePush-Clientlaufzeit und stellt die ReactPackage Instanz dar, die Sie der Liste der Pakete Ihrer App hinzufügen.

Konstruktoren

  • CodePush(String deploymentKey, Activity mainActivity) – Erstellt eine neue Instanz der CodePush-Laufzeit, die verwendet wird, um den Dienst über den bereitgestellten Bereitstellungsschlüssel nach Updates abzufragen. Der mainActivity Parameter sollte immer beim Konfigurieren der React-Paketliste innerhalb der MainActivity Klasse festgelegt this werden. Mit diesem Konstruktor wird die CodePush-Laufzeit in den "Releasemodus" versetzt. Wenn Sie also das Debuggingverhalten aktivieren möchten, verwenden Sie stattdessen den folgenden Konstruktor.

  • CodePush(String deploymentKey, Activity mainActivity, bool isDebugMode) – Entspricht dem vorherigen Konstruktor, ermöglicht ihnen jedoch anzugeben, ob die CodePush-Laufzeit im Debugmodus ausgeführt werden soll oder nicht. Bei Verwendung dieses Konstruktors sollte der isDebugMode Parameter immer so festgelegt werden, dass BuildConfig.DEBUG er mit Dem Buildtyp synchronisiert bleibt. Wenn CodePush in den Debugmodus versetzt wird, werden die folgenden Verhaltensweisen aktiviert:

    1. Alte CodePush-Updates werden nicht aus dem Speicher gelöscht, wenn eine neue Binärdatei für den Emulator/das Gerät bereitgestellt wird. Mit diesem Verhalten können Sie neue Binärdateien bereitstellen, ohne die Version während der Entwicklung zu stoßen, und ohne jedes Mal, wenn Ihre App aufruft sync, dasselbe Update zu erhalten.

    2. Der lokale Cache, den die React Native-Laufzeit im Debugmodus verwaltet, wird gelöscht, wenn ein CodePush-Update installiert wird. Dadurch wird sichergestellt, dass beim Neustart der App, nachdem ein Update angewendet wurde, die erwarteten Änderungen angezeigt werden können. Sobald diese PR zusammengeführt wird, müssen wir dies nicht mehr tun.

  • CodePush(String deploymentKey, Context context, boolean isDebugMode, Integer publicKeyResourceDescriptor) – Entspricht dem vorherigen Konstruktor, ermöglicht ihnen jedoch die Angabe des Public Key-Ressourcendeskriptors, der zum Lesen von Inhalten mit öffentlichen Schlüsseln erforderlich ist. Weitere Informationen zum Codesignaturfeature finden Sie im Abschnitt "Codesignatur ".

  • CodePush(String deploymentKey, Context context, boolean isDebugMode, String serverUrl) – Mit Konstruktor können Sie CodePush-Server-URL angeben. Der Standardwert: "https://codepush.appcenter.ms/" wird durch den wert überschrieben, der in serverUrl.

Statische Methoden

  • getBundleUrl() – Gibt den Pfad zur neuesten Version der JS-Bundledatei Ihrer App zurück, vorausgesetzt, der Ressourcenname ist index.android.bundle. Wenn Ihre App einen anderen Bündelnamen verwendet, verwenden Sie die überladene Version dieser Methode, mit der sie angegeben werden kann. Diese Methode hat das gleiche Auflösungsverhalten wie die oben beschriebene Objective-C-Entsprechung.

  • getBundleUrl(String bundleName) – Gibt den Pfad zur neuesten Version der JS-Bundledatei Ihrer App mithilfe des angegebenen Ressourcennamens (z index.android.bundle. B. ) zurück. Diese Methode hat das gleiche Auflösungsverhalten wie die oben beschriebene Objective-C-Entsprechung.

  • overrideAppVersion(String appVersionOverride) – Legt die Version der binären Schnittstelle der Anwendung fest, was andernfalls standardmäßig auf die Play Store-Version festgelegt würde, die versionName als in " build.gradle" angegeben ist. Dies sollte ein mal aufgerufen werden, bevor die CodePush-Instanz erstellt wird.