Freigeben über


Cordova Client SDK

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.

Dieses Plug-In bietet clientseitige Integration für den CodePush-Dienst, sodass Sie Ihrer Cordova-App(n) auf einfache Weise eine dynamische Aktualisierungsoberfläche hinzufügen können.

Hinweis

Der Support für Cordova Apps wurde im April 2022 eingestellt. Weitere Informationen finden Sie im App Center-Blog.

Wie funktioniert dies?

Eine Cordova-App besteht aus HTML-, CSS- und JavaScript-Dateien und allen zugehörigen Bildern, die von der Cordova CLI gebündelt und als Teil einer plattformspezifischen Binärdatei (d. h. einer IPA- oder .apk-Datei) gebündelt werden. Nach der Veröffentlichung der App müssen Sie die gesamte Binärdatei neu kompilieren und neu verteilen, indem Sie entweder den Code oder die Bildressourcen aktualisieren. Dieser Vorgang umfasst die Überprüfungszeit für den Store(n), in dem Sie veröffentlichen.

Das CodePush-Plug-In trägt dazu bei, Produktverbesserungen vor Ihren Endbenutzern sofort zu erhalten, indem Ihr Code und Ihre Bilder mit Updates synchronisiert werden, die Sie auf dem CodePush-Server freigeben. Auf diese Weise erhält Ihre App die Vorteile einer mobilen Offlineumgebung sowie die "webähnliche" Flexibilität beim Querladen von Updates, sobald sie verfügbar sind. Es ist eine Win-Win-Situation!

Um sicherzustellen, dass Ihre Endbenutzer immer über eine funktionierende Version Ihrer App verfügen, verwaltet das CodePush-Plug-In eine Kopie des vorherigen Updates, sodass im Falle eines versehentlichen Pushs eines Updates, das einen Absturz enthält, automatisch ein Rollback ausgeführt werden kann. Auf diese Weise können Sie sicher sein, dass Ihre neu gefundene Release-Flexibilität nicht dazu führt, dass Benutzer blockiert werden, bevor Sie die Möglichkeit haben, einen Rollback auf dem Server zu ermöglichen. Es ist ein win-win-win!

Hinweis

Alle Produktänderungen, die nativen Code berühren (z. B. das Upgrade von Cordova-Versionen, das Hinzufügen eines neuen Plug-Ins), können nicht über CodePush verteilt werden und müssen daher über den entsprechenden Store(n) aktualisiert werden.

Unterstützte Cordova-Plattformen

Cordova 5.0.0+ wird vollständig unterstützt, zusammen mit den folgenden zugeordneten Plattformen:

Um die Versionen der derzeit verwendeten Cordova-Plattform zu überprüfen, können Sie den folgenden Befehl ausführen und die Installed platforms Liste überprüfen:

    cordova platform ls

Wenn Sie eine ältere Android- oder iOS-Plattform ausführen, als oben erwähnt wird und für ein Upgrade geöffnet wäre, können Sie dies ganz einfach tun, indem Sie die folgenden Befehle ausführen (eine Plattform weglassen, wenn dies nicht erforderlich ist):

    cordova platform update android
    cordova platform update ios

Erste Schritte

Hinweis

Dieser Artikel enthält Verweise auf den Begriff Whitelist, den Microsoft nicht länger verwendet. Sobald der Begriff aus der Software entfernt wurde, wird er auch aus diesem Artikel entfernt.

Nachdem Sie die allgemeinen Anweisungen "Erste Schritte" zum Einrichten Ihres CodePush-Kontos befolgt haben, können Sie codePush-ifizieren Ihre Cordova-App starten, indem Sie den folgenden Befehl aus dem Stammverzeichnis Ihrer App ausführen:

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

Konfigurieren Sie Ihre App mit dem installierten CodePush-Plug-In so, dass sie mit den folgenden Schritten verwendet wird:

  1. Fügen Sie die Bereitstellungsschlüssel zur datei config.xml hinzu, und stellen Sie sicher, dass Sie den richtigen Schlüssel für jede Cordova-Plattform einschließen:
    <platform name="android">
        <preference name="CodePushDeploymentKey" value="YOUR-ANDROID-DEPLOYMENT-KEY" />
    </platform>
    <platform name="ios">
        <preference name="CodePushDeploymentKey" value="YOUR-IOS-DEPLOYMENT-KEY" />
    </platform>

Als Erinnerung werden diese Schlüssel für Sie generiert, wenn Sie Ihre CodePush-App über die CLI erstellt haben. Wenn Sie sie abrufen müssen, können Sie ausführen appcenter codepush deployment list -a <ownerName>/<appName> --displayKeysund den Schlüssel für die bestimmte Bereitstellung abrufen, die Sie verwenden möchten (z. B. Staging, Production).

Wichtig

Es wird empfohlen , eine separate CodePush-App für iOS und Android zu erstellen, weshalb im obigen Beispiel separate Schlüssel für Android und iOS deklariert werden. Wenn Sie nur für eine einzelne Plattform entwickeln, müssen Sie nur den Bereitstellungsschlüssel für Android oder iOS angeben, sodass Sie das zusätzliche <platform> Element nicht hinzufügen müssen, wie oben dargestellt.

Ab Version 1.10.0 können Sie Ihre Updatepakete signieren (weitere Informationen zur Codesignierung finden Sie im entsprechenden Dokumentationsbereich). Um die Codesignierung für eine Cordova-Anwendung zu aktivieren, sollten Sie einen öffentlichen Schlüssel einrichten, um die Signatur des Bündels zu überprüfen, indem Sie eine preference Einstellung in config.xml:

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

Sie können für jede Plattform dasselbe paar private/öffentliche Schlüssel verwenden.

  1. Wenn Sie ein <access origin="*" /> Element in Ihrer config.xml-Datei verwenden, darf Ihre App bereits mit den CodePush-Servern kommunizieren, und Sie können diesen Schritt sicher überspringen. Fügen Sie andernfalls die folgenden zusätzlichen <access /> Elemente hinzu:
    <access origin="https://codepush.appcenter.ms" />
    <access origin="https://codepush.blob.core.windows.net" />
    <access origin="https://codepushupdates.azureedge.net" />
  1. Um sicherzustellen, dass Ihre App auf den CodePush-Server auf CSP-kompatiblen Plattformen zugreifen kann, fügen Sie https://codepush.appcenter.ms das meta Content-Security-Policy Tag in Ihrer index.html Datei hinzu:
    <meta http-equiv="Content-Security-Policy" content="default-src https://codepush.appcenter.ms 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *" />
  1. Überprüfen Sie abschließend, ob das Plug-In bereits cordova-plugin-whitelist installiert ist (die meisten Apps werden verwendet). Führen Sie zum Überprüfen den folgenden Befehl aus:
    cordova plugin ls    

Wenn cordova-plugin-whitelist sie sich in der Liste befindet, können Sie losgehen. Führen Sie andernfalls den folgenden Befehl aus, um ihn hinzuzufügen:

    cordova plugin add cordova-plugin-whitelist

Sie sind jetzt bereit, das Plug-In im Anwendungscode zu verwenden. Weitere Details finden Sie in den Beispielanwendungen und in der API-Dokumentation.

Plug-In-Nutzung

Nachdem das CodePush-Plug-In installiert und konfiguriert wurde, müssen Sie Ihrer App nur den erforderlichen Code hinzufügen, um die folgenden Richtlinien zu steuern:

  1. Wann (und wie oft) sie nach einem Update suchen? (e.g. app beginnen, als Reaktion auf das Klicken auf eine Schaltfläche auf einer Einstellungsseite, in regelmäßigen Abständen)
  2. Wann ein Update verfügbar ist, wie sie dem Endbenutzer präsentiert wird? Die einfachste Möglichkeit besteht darin, Folgendes im Ereignishandler Ihrer App deviceready auszuführen:
codePush.sync();

Wenn ein Update verfügbar ist, wird es automatisch heruntergeladen und installiert, wenn die App das nächste Mal neu gestartet wird (entweder explizit vom Endbenutzer oder vom Betriebssystem), wodurch die am wenigsten invasive Erfahrung für Ihre Endbenutzer gewährleistet wird. Wenn ein verfügbares Update obligatorisch ist, wird es sofort installiert, um sicherzustellen, dass der Endbenutzer es so bald wie möglich erhält.

Wenn Ihre App Updates schneller finden soll, können Sie auch jedes Mal aufrufen sync , wenn die App aus dem Hintergrund fortgesetzt wird, indem Sie den folgenden Code (oder etwas Gleichwertiges) als Teil des Startverhaltens Ihrer App hinzufügen. Sie können so häufig wie gewünscht anrufen sync , also wann und wo Sie sie anrufen, hängt von Ihrer persönlichen Vorliebe ab.

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

Wenn Sie ein Aktualisierungsbestätigungsdialogfeld (eine "aktive Installation") anzeigen möchten, konfigurieren Sie außerdem, wann ein verfügbares Update installiert wird (z. B. einen sofortigen Neustart erzwingen) oder die Updateerfahrung auf irgendeine Weise anpassen möchten, finden Sie in der API-Referenz der sync Methode Informationen zum Optimieren dieses Standardverhaltens.

Wichtig

Die Apple-Entwicklervereinbarung ermöglicht zwar vollständig over-the-air-Updates von JavaScript und Ressourcen (was CodePush ermöglicht!), es ist jedoch gegen ihre Richtlinie, dass eine App eine Aktualisierungsaufforderung anzeigt. Aus diesem Gründen wird empfohlen, dass app Store-verteilte Apps die updateDialog Option beim Aufrufen syncnicht aktivieren, während Google Play und intern verteilte Apps (z. B. Enterprise, Fabric, HockeyApp) die Option aktivieren/anpassen können.

Veröffentlichen von Updates

Nachdem Ihre App für Ihre Benutzer konfiguriert und verteilt wurde und Sie Code- oder Objektänderungen vorgenommen haben, ist es an der Zeit, sie sofort freizugeben! Die einfachste (und empfohlene) Methode hierfür ist die Verwendung des release-cordova Befehls in der CodePush CLI, der das Vorbereiten und Freigeben Ihres Updates auf dem CodePush-Server behandelt.

Hinweis

Bevor Sie mit der Veröffentlichung von Updates beginnen können, melden Sie sich beim App Center an, indem Sie den appcenter login Befehl ausführen.

In ihrer einfachsten Form erfordert dieser Befehl nur einen Parameter: Ihren Besitzernamen + "/" + App-Name.

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

Tipp

Mit der App Center CLI-Funktion set-current müssen Sie nicht das Flag "-a" verwenden, um anzugeben, dass die App an einen Befehl gerichtet ist.

Tipp

Beim Veröffentlichen von Updates für CodePush müssen Sie die App-Version in der config.xml-Datei nicht stoßen, da Sie die binäre Version überhaupt nicht ändern. Sie müssen diese Version nur stoßen, wenn Sie Cordova oder eines Ihrer Plug-Ins aktualisieren, zu diesem Zeitpunkt müssen Sie ein Update für den nativen Store(n) freigeben. CodePush generiert automatisch eine "Bezeichnung" für jede von Ihnen vorgenommene Version (z. B. v3), um sie innerhalb Ihres Veröffentlichungsverlaufs zu identifizieren.

Der release-cordova Befehl ermöglicht einen so einfachen Workflow, da er das Standardlayout einer Cordova-App versteht und so Ihr Update generieren und genau wissen kann, welche Dateien hochgeladen werden sollen. Darüber hinaus stellt der release-cordova Befehl zur Unterstützung flexibler Releasestrategien zahlreiche optionale Parameter bereit, mit denen Sie anpassen können, wie das Update an Ihre Endbenutzer verteilt werden soll (z. B. mit welchen binärversionen kompatibel sind? Sollte die Veröffentlichung als obligatorisch angesehen werden?).

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

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

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

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

Der CodePush-Client unterstützt differenzielle Updates. Obwohl Sie Ihren App-Code für jedes Update veröffentlichen, laden Ihre Endbenutzer nur die benötigten Dateien herunter. Der Dienst behandelt dies automatisch, damit Sie sich auf die Erstellung großartiger Apps konzentrieren können, und wir können uns gedanken über die Optimierung von Endbenutzerdownloads machen.

Weitere Informationen zur Funktionsweise des release-cordova Befehls sowie zu den verschiedenen verfügbaren Parametern finden Sie in den CLI-Dokumenten. Wenn Sie das Ausführen des cordova prepare Befehls auch selbst behandeln möchten, möchten Sie außerdem eine noch flexiblere Lösung als release-cordovaden Befehl, um release weitere Details zu erhalten.

Wenn Sie Probleme haben oder Fragen/Kommentare/Feedback haben, können Sie uns per E-Mail senden oder ein neues Problem in diesem Repository öffnen, und wir antworten ASAP! Siehe auch Hilfe und Feedback.

API-Referenz

Die CodePush-API wird ihrer App über das globale codePush Objekt verfügbar gemacht, das nach dem Auslösen des deviceready Ereignisses verfügbar ist. Diese API macht die folgenden Methoden der obersten Ebene verfügbar:

  • checkForUpdate: Fragt den CodePush-Dienst, ob die konfigurierte App-Bereitstellung über ein Update verfügt.
  • getCurrentPackage: Ruft die Metadaten zum aktuell installierten Update ab (z. B. Beschreibung, Installationszeit, Größe).
  • getPendingPackage: Ruft die Metadaten für ein Update ab (sofern vorhanden), das heruntergeladen und installiert wurde, aber noch nicht über einen Neustart angewendet wurde.
  • notifyApplicationReady: Benachrichtigt die CodePush-Laufzeit, dass ein installiertes Update als erfolgreich angesehen wird. Wenn Sie manuell nach Updates suchen und installieren (d. h. die Synchronisierungsmethode nicht für Sie zu verwenden), 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.
  • restartApplication: Startet die App sofort neu. Wenn ein Update aussteht, wird es dem Endbenutzer sofort angezeigt.
  • sync: Ermöglicht die Überprüfung auf ein Update, das Herunterladen und Installieren des Updates, alles mit einem einzigen Anruf. Wenn 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.

Darüber hinaus werden die folgenden Objekte und Enumerationen global als Teil der CodePush-API verfügbar gemacht:

codePush.checkForUpdate

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

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 config.xml-Datei 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. "Früher Zugriff" über ein Osterei oder einen Benutzereinstellungsschalter zulassen.

Nach Abschluss der Updateüberprüfung wird der onUpdateCheck Rückruf mit einem von zwei möglichen Werten ausgelöst:

  1. null wenn kein Update verfügbar ist. Dies geschieht in den folgenden Szenarien:
    • Die konfigurierte Bereitstellung enthält keine Versionen, daher gibt es nichts zu aktualisieren.
    • 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).
    • Die derzeit ausgeführte App verfügt bereits über die neueste Version der konfigurierten Bereitstellung, sodass die Version nicht erneut benötigt wird.
  2. Eine RemotePackage Instanz, die ein verfügbares Update darstellt, das überprüft und später heruntergeladen werden kann.

Parameter:

  • onSuccess: Rückruf, der aufgerufen wird, nachdem eine erfolgreiche Antwort vom Server empfangen wurde. Der Rückruf empfängt einen einzelnen Parameter, der oben beschrieben wird.
  • onError: Optionaler Rückruf, der im Falle eines Fehlers aufgerufen wird. Der Rückruf akzeptiert einen Fehlerparameter, der die Details des Fehlers enthält.
  • deploymentKey: Optionaler Bereitstellungsschlüssel, der die einstellung config.xml außer Kraft setzt.

Beispielverwendung:

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

codePush.getCurrentPackage

codePush.getCurrentPackage(onSuccess, onError?);

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.

Nach Abschluss des Aktualisierungsabrufs wird der onSuccess Rückruf mit einem von zwei möglichen Werten ausgelöst:

  1. null wenn die App derzeit die HTML-Startseite aus der Binärdatei und kein CodePush-Update ausführt. Dies geschieht in den folgenden Szenarien:
    • Der Endbenutzer hat die App-Binärdatei installiert und muss noch ein CodePush-Update installieren.
    • Der Endbenutzer hat ein Update der Binärdatei (z. B. aus dem Speicher) installiert, wodurch die alten CodePush-Updates entfernt wurden und der Binärdatei Vorrang gegeben hat.
  2. Eine LocalPackage Instanz, die die Metadaten für das derzeit ausgeführte CodePush-Update darstellt.

Parameter:

  • onSuccess: Rückruf, der aufgerufen wird, wenn die Metadaten zu dem aktuell ausgeführten Update empfangen werden. Der Rückruf empfängt einen einzelnen Parameter, der oben beschrieben wird.
  • onError: Optionaler Rückruf, der im Falle eines Fehlers aufgerufen wird. Der Rückruf akzeptiert einen Fehlerparameter, der die Details des Fehlers enthält.

Beispielverwendung:

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

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

codePush.getPendingPackage

codePush.getPendingPackage(onSuccess, onError?);

Ruft die Metadaten für das derzeit ausstehende Update ab (sofern vorhanden). Ein Update gilt als "ausstehend", wenn es heruntergeladen und installiert wurde, aber noch nicht über einen App-Neustart angewendet wurde. Ein Update konnte sich jemals in diesem Zustand befinden, wenn InstallMode.ON_NEXT_RESTART bzwInstallMode.ON_NEXT_RESUME. beim Aufrufen LocalPackage.installsync angegeben oder angegeben wurde und die App noch nicht neu gestartet oder fortgesetzt wurde (bzw. fortgesetzt wurde). Diese Methode kann nützlich sein, wenn Sie ermitteln möchten, ob ein ausstehendes Update vorhanden ist, und dann den Benutzer auffordern, ihn sofort (über codePush.restartApplication) neu zu starten, um es anzuwenden.

Nach Abschluss des Aktualisierungsabrufs wird der onSuccess Rückruf mit einem von zwei möglichen Werten ausgelöst:

  1. null wenn die App derzeit nicht über ein ausstehendes Update verfügt (z. B. die App wird bereits die neueste verfügbare Version ausgeführt).
  2. Eine LocalPackage Instanz, die die Metadaten für das aktuell ausstehende CodePush-Update darstellt.

Parameter:

  • onSuccess: Rückruf, der aufgerufen wird, nachdem die Metadaten über das aktuell ausstehende Update empfangen wurden. Der Rückruf empfängt einen einzelnen Parameter, der oben beschrieben wird.
  • onError: Optionaler Rückruf, der im Falle eines Fehlers aufgerufen wird. Der Rückruf akzeptiert einen Fehlerparameter, der die Details des Fehlers enthält.

Beispielverwendung:

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

codePush.notifyApplicationReady

codePush.notifyApplicationReady(notifySucceeded?, notifyFailed?);

Benachrichtigt die CodePush-Laufzeit, dass ein neu installiertes Update als erfolgreich betrachtet werden sollte, sodass ein automatisches clientseitiges Rollback nicht erforderlich ist. 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 notifyApplicationReady , 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.

Parameter:

  • notifySucceeded: Optionaler Rückruf aufgerufen, wenn das Plug-In erfolgreich benachrichtigt wurde.
  • notifyFailed: Optionaler Rückruf wird aufgerufen, wenn ein Fehler vorliegt, der das Plug-In benachrichtigt.

codePush.restartApplication

codePush.restartApplication();

Startet die App sofort neu. 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 wird (entweder vom Endbenutzer oder Betriebssystem) oder fortgesetzt wird, sodass das Update dem Endbenutzer nicht sofort angezeigt wird.
  2. Sie haben ein appspezifisches Benutzerereignis (z. B. der Endbenutzer navigiert zurück zur Heimroute der App), mit dem Sie das Update auf unaufdringliche Weise anwenden können und das Update möglicherweise früher vor dem Endbenutzer erhält, als bis zum nächsten Neustart oder Fortsetzen zu warten.

codePush.sync

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

Synchronisiert den Code und die Images Ihrer App mit der neuesten Version mit der konfigurierten Bereitstellung. Anders als bei der checkForUpdate Methode, die das Vorhandensein eines Updates überprüft, und Sie können steuern, was als Nächstes zu tun ist, sync die Updateüberprüfung, das Herunterladen und die Installation für Sie behandeln.

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

  1. Hintergrundmodus (Standardverhalten), der verfügbare Updates automatisch herunterlädt und sie beim nächsten Neustart der App anwendet (z. B. das Betriebssystem oder der Endbenutzer hat es getötet oder das Gerät 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 dem obligatorischen Flag 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 that lets the end user know
// about each update, and displays it to them
// immediately after downloading it
codePush.sync(null, { updateDialog: true, installMode: InstallMode.IMMEDIATE });

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 um, um die Synchronisierung in einer Bedingung durchzuführen, die sicherstellt, dass Sie es nur bei Bedarf aufrufen.

Während die Synchronisierungsmethode versucht, automatische und aktive Updates mit geringer Konfiguration zu erledigen, akzeptiert sie die folgenden optionalen Parameter, mit denen Sie zahlreiche Aspekte des oben erwähnten Standardverhaltens anpassen können:

  • syncCallback: Wird aufgerufen, wenn der Synchronisierungsprozess im gesamten Updateprozess von einer Phase zu einer anderen wechselt. Die Methode wird mit einem Statuscode aufgerufen, der den aktuellen Zustand darstellt und beliebige Werte SyncStatus sein kann.
  • syncOptions: Optionaler SyncOptions Parameter, der das Verhalten des Synchronisierungsvorgangs konfiguriert.
  • downloadProgress: 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 (d. h. die Größe der Dateigruppe, die sich aus der vorherigen Version geändert hat).
    • receivedBytes (Number) – Die Anzahl der bisher heruntergeladenen Bytes, die zum Nachverfolgen des Downloadfortschritts verwendet werden können.
  • syncErrback: Wird aufgerufen, wenn bei internen Synchronisierungsschritten ein Fehler auftritt. Die Methode wird mit einem standardmäßigen Javascript-Objekt Error als erstes Argument aufgerufen.

SyncOptions

Während die sync Methode versucht, automatische und aktive Updates mit geringer Konfiguration zu erledigen, akzeptiert sie ein "Options"-Objekt, mit dem Sie zahlreiche Aspekte des oben erwähnten Standardverhaltens anpassen können:

  • deploymentKey (String) – Gibt den Bereitstellungsschlüssel an, für den Sie eine Aktualisierung abfragen möchten. Dieser Wert wird standardmäßig von der config.xml Datei abgeleitet, aber mit dieser Option können Sie ihn von der Skriptseite außer Kraft setzen, wenn Sie eine andere Bereitstellung für einen bestimmten Aufruf syncdynamisch verwenden müssen.
  • installMode (InstallMode) – Gibt an, wann Sie optionale Updates installieren möchten (d. h. solche, die nicht als obligatorisch gekennzeichnet sind). Wird standardmäßig auf InstallMode.ON_NEXT_RESTART festgelegt. In der InstallMode Enumerationsreferenz finden Sie eine Beschreibung der verfügbaren Optionen und deren Funktionsweise.
  • obligatorInstallMode (InstallMode) – Gibt an, wann Updates installiert werden sollen, die als obligatorisch gekennzeichnet sind. Wird standardmäßig auf 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_RESUMEinstalliert werden, und kann nützlich sein, um Ihr Update früher vor Endbenutzern zu erhalten, ohne zu stören. Der Standardwert ist 0, der das Update unmittelbar nach einem Fortsetzen anwendet, jedoch lange im Hintergrund.
  • ignoreFailedUpdates (Boolean) – Gibt an, ob ein verfügbares Update ignoriert werden soll, wenn es zuvor installiert und auf dem Client zurückgesetzt wurde (da notifyApplicationReady nicht erfolgreich aufgerufen wurde). Wird standardmäßig auf true festgelegt.
  • 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.

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. Wird standardmäßig auf " Description: " festgelegt.
  • 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. *- updateTitle (String) – Der Text, der als Kopfzeile einer Aktualisierungsbenachrichtigung verwendet wird, die dem Endbenutzer angezeigt wird. Wird standardmäßig auf "Update available" festgelegt.

Beispielverwendung:

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

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

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

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

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

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

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

Die sync Methode kann an einer beliebigen Stelle aufgerufen werden, die Sie auf ein Update überprüfen möchten. Dies könnte sich deviceready im Ereignishandler, im click Ereignisereignis einer Schaltfläche, im Rückruf eines regelmäßigen Timers oder in anderen Feldern befinden, was 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 Methoden getCurrentPackage rufen Erfolgsrückrufe auf, die beim Auslösen zugriff auf "package"-Objekte ermöglichen. Das Paket stellt Ihre Codeaktualisierung sowie zusätzliche Metadaten (z. B. Beschreibung, obligatorisch?) dar. Die CodePush-API weist den Unterschied zwischen den folgenden Pakettypen auf:

  1. LocalPackage: Stellt ein heruntergeladenes Update dar, das entweder bereits ausgeführt wird oder installiert wurde und ein App-Neustart aussteht.
  2. 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, entweder durch Aufrufen der codePush.getCurrentPackage Methode oder als Wert, der für den Erfolgsrückruf der RemotePackage.download Methode bereitgestellt wird.

Eigenschaften
  • appVersion: Die systemeigene Version der Anwendung, für die dieses Paketupdate vorgesehen ist. (Zeichenfolge)
  • deploymentKey: Bereitstellungsschlüssel des Pakets. (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 Updates, die zuvor fehlgeschlagen sind, daher müssen Sie sich bei Verwendung checkForUpdatenur um diese Eigenschaft kümmern. (Boolescher Wert)
  • isFirstRun: Flag, das angibt, ob die aktuelle Anwendungsausführung der erste ist, nachdem das Paket angewendet wurde. (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)
  • 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(installSuccess, installError, installOptions): Installiert dieses Paket in der Anwendung. Das Installationsverhalten hängt vom bereitgestellten installOptionsVerhalten ab. Standardmäßig wird das Updatepaket im Hintergrund installiert, und die Anwendung wird mit dem neuen Inhalt auf dem nächsten Anwendungsstart neu geladen. Bei der ersten Ausführung nach dem Update wartet die Anwendung auf einen codePush.notifyApplicationReady() Anruf. Sobald dieser Aufruf erfolgt ist, wird der Installationsvorgang als Erfolg betrachtet. Andernfalls wird der Installationsvorgang als fehlgeschlagen gekennzeichnet, und die Anwendung wird in der nächsten Ausführung auf die vorherige Version zurückgesetzt.
InstallOptions

Schnittstelle, die mehrere Optionen zum Anpassen des Installationsvorgangsverhaltens definiert.

  • installMode: Wird verwendet, um den installMode anzugeben, der für den Installationsvorgang verwendet wird. Wird standardmäßig auf InstallMode.ON_NEXT_RESTART festgelegt.
  • obligatorInstallMode: Wird verwendet, um den installMode anzugeben, der für den Installationsvorgang verwendet wird, wenn das Paket obligatorisch ist. Wird standardmäßig auf InstallMode.IMMEDIATE festgelegt.
  • minimumBackgroundDuration: Wenn installMode verwendet wird InstallMode.ON_NEXT_RESUME, um anzugeben, wie lange die App im Hintergrund sein muss, bevor das Update installiert wird, wenn es fortgesetzt wird. Wird standardmäßig auf 0 festgelegt.

Beispielverwendung:

// App version 1 (current version)

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

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

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

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

window.codePush.checkForUpdate(onUpdateCheck, onError);

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

Ein Beispiel dazu, wie Sie vor einem fehlerhaften Update geschützt sind, finden Sie in der Dokumentation "notifyApplicationReady()".

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 codePush.checkForUpdate Methode aufrufen, wenn eine Aktualisierung verfügbar ist. Wenn Sie die Synchronisierungs-API verwenden, müssen Sie sich keine Gedanken über die RemotePackageSynchronisierungs-API 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
  • abortDownload(abortSuccess, abortError): Bricht die aktuelle Downloadsitzung ab, falls vorhanden.
  • download(downloadSuccess, downloadError, downloadProgress): Lädt das Paketupdate vom CodePush-Dienst herunter. Der downloadSuccess Rückruf wird mit einem LocalPackage-Argument aufgerufen, das das heruntergeladene Paket darstellt. Der optionale downloadProgress Rückruf wird mehrmals während des Downloadfortschritts mit einem DownloadProgress Parameter aufgerufen.
DownloadProgress

Definiert das Format des DownloadProgress-Objekts, das verwendet wird, um regelmäßige Aktualisierungsbenachrichtigungen über den Fortschritt des Updatedownloads zu senden.

Eigenschaften
  • totalBytes: Die Größe des downloadenden Updatepakets in Byte. (Zahl)
  • receivedBytes: Die Anzahl der bereits heruntergeladenen Bytes. (Zahl)

Beispielverwendung:

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

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

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

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

window.codePush.checkForUpdate(onUpdateCheck, onError);

Enumerationen

Die CodePush-API enthält die folgenden Enumerationsobjekte, die zum Anpassen der Aktualisierungsoberfläche verwendet werden können und global außerhalb des window Objekts verfügbar sind:

InstallMode

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

  • DIREKT: Das Update wird sofort auf die ausgeführte Anwendung angewendet. Die Anwendung wird sofort mit dem neuen Inhalt neu geladen.
  • ON_NEXT_RESTART: Gibt an, dass Sie das Update installieren möchten, aber nicht die App versehentlich neu 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 es für den Endbenutzer wahrscheinlich stören würde, wenn die App plötzlich aus dem Nichts neu gestartet wurde, da sie nicht erkannt hätten, 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.

Ein Beispiel dazu, wie Sie vor einem fehlerhaften Update geschützt sind, finden Sie in der Dokumentation "notifyApplicationReady()".

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 codePush.checkForUpdate Methode aufrufen, wenn eine Aktualisierung verfügbar ist. Wenn Sie die Synchronisierungs-API verwenden, müssen Sie sich keine Gedanken über die RemotePackageSynchronisierungs-API 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
  • abortDownload(abortSuccess, abortError): Bricht die aktuelle Downloadsitzung ab, falls vorhanden.
  • download(downloadSuccess, downloadError, downloadProgress): Lädt das Paketupdate vom CodePush-Dienst herunter. Der downloadSuccess Rückruf wird mit einem LocalPackage-Argument aufgerufen, das das heruntergeladene Paket darstellt. Der optionale downloadProgress Rückruf wird mehrmals während des Downloadfortschritts mit einem DownloadProgress Parameter aufgerufen.
DownloadProgress

Definiert das Format des DownloadProgress-Objekts, das verwendet wird, um regelmäßige Aktualisierungsbenachrichtigungen über den Fortschritt des Updatedownloads zu senden.

# Eigenschaften
  • totalBytes: Die Größe des downloadenden Updatepakets in Byte. (Zahl)
  • receivedBytes: Die Anzahl der bereits heruntergeladenen Bytes. (Zahl)

Beispielverwendung:

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

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

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

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

window.codePush.checkForUpdate(onUpdateCheck, onError);

Enumerationen

Die CodePush-API enthält die folgenden Enumerationsobjekte, die zum Anpassen der Aktualisierungsoberfläche verwendet werden können und global außerhalb des window Objekts verfügbar sind:

InstallMode

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

  • DIREKT: Das Update wird sofort auf die ausgeführte Anwendung angewendet. Die Anwendung wird sofort mit dem neuen Inhalt neu geladen.
  • ON_NEXT_RESTART: Gibt an, dass Sie das Update installieren möchten, aber nicht die App versehentlich neu 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 es für den Endbenutzer wahrscheinlich stören würde, wenn die App plötzlich aus dem Nichts neu gestartet wurde, da sie nicht erkannt hätten, 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.
  • ON_NEXT_RESUME: 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.

SyncStatus

Definiert die möglichen Status des Synchronisierungsvorgangs . Es gibt zwei Kategorien von Status: Zwischen- und Ergebnis (endend). Die Zwischenstatus stellen Statusstatus des Synchronisierungsvorgangs dar und sind nicht abgeschlossen. Die Ergebnisstatus stellen endgültige Status des Synchronisierungsvorgangs dar. Jeder Synchronisierungsvorgang endet nur mit einem Ergebnisstatus, kann jedoch null oder mehr Zwischenstatus aufweisen.

  • UP_TO_DATE: Die App ist mit der konfigurierten Bereitstellung vollständig auf dem neuesten Stand.
  • UPDATE_INSTALLED: Ein verfügbares Update wurde installiert und wird entweder unmittelbar nach der Rückgabe der Rückruffunktion oder beim nächsten Fortsetzen/Neustart der App ausgeführt, je nach der InstallMode angegebenen SyncOptionsAngabe.
  • UPDATE_IGNORED: Die App verfügt über ein optionales Update, das der Endbenutzer ignoriert hat. (Dies gilt nur, wenn sie updateDialog verwendet wird)
  • FEHLER: Während des sync Vorgangs ist ein Fehler aufgetreten. Dies kann beim Kommunizieren mit dem Server, beim Herunterladen oder Aufheben des Updates ein Fehler sein. Die Konsolenprotokolle sollten weitere Informationen darüber enthalten, was passiert ist. In diesem Fall wurde kein Update angewendet.
  • IN_PROGRESS: Eine andere Synchronisierung wird bereits ausgeführt, sodass dieser Versuch, die Synchronisierung durchzuführen, abgebrochen wurde.
  • CHECKING_FOR_UPDATE: Der CodePush-Server wird für ein Update abgefragt.
  • AWAITING_USER_ACTION: Ein Update ist verfügbar, und dem Endbenutzer wurde ein Bestätigungsdialogfeld angezeigt. (Dies gilt nur, wenn sie updateDialog verwendet wird)
  • DOWNLOADING_PACKAGE: Ein verfügbares Update wird vom CodePush-Server heruntergeladen.
  • INSTALLING_UPDATE: Ein verfügbares Update wurde heruntergeladen und wird installiert.

PhoneGap Build

Dieses Plug-In ist mit PhoneGap Build kompatibel und unterstützt das Erstellen von Android- und iOS-Builds sofort einsatzbereit. Damit CodePush jedoch den Hash Ihrer binären Inhalte unter Android berechnen kann, muss PhoneGap Build Gradle verwenden, um Ihre App zu erstellen, was nicht ihr Standardverhalten ist (es verwendet Ant). Um dies zu beheben, fügen Sie das folgende Element zur config.xml Datei des Projekts als untergeordnetes Element des <platform name="android"> Elements hinzu:

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

Beispiel-Apps

Die Cordova-Community hat einige großartige Open Source-Apps erstellt, die als Beispiele für Entwickler dienen können, die beginnen. Die folgende Liste enthält OSS Cordova-Apps, die auch CodePush verwenden, und kann verwendet werden, um zu sehen, wie andere Benutzer den Dienst verwenden:

Hinweis

Wenn Sie eine Cordova-App mit CodePush entwickelt haben, teilen Sie uns das mit. Wir freuen uns, sie dieser Liste hinzuzufügen!