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:
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).
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-push
stellt 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-ModulgetCurrentPackage
wird für *veraltetgetUpdateMetadata
.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):
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);
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);
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);
Protokoll-/Anzeigestatus. Während die App mit dem Server für Updates synchronisiert wird, verwenden Sie die
codePushStatusDidChange
Hooks odercodePushDownloadDidProgress
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 derCheckFrequency
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 derInstallMode
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 derInstallMode
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
oderInstallMode.ON_NEXT_SUSPEND
oder installiert werden, und kann nützlich sein, um Ihr Update früher vor Endbenutzern zu erhalten, ohne zu stören.0
Der 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.
null
Standardmäßig wird das Dialogfeld deaktiviert. Wenn Sie diesen Wert auf einen beliebigentrue
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
0
sein. Dies kann eine Gleitkommanummer sein. Wird standardmäßig auf24
festgelegt.maxRetryAttempts (Number) – Gibt die maximale Anzahl von Wiederholungsversuchen an, die die App vornehmen kann, bevor der Versuch beendet wird. Darf nicht kleiner als
1
sein. Wird standardmäßig auf1
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:
Seit dem letzten Aufruf
disallowRestart
wurden keine CodePush-Updates installiert. Daher ist es nicht erforderlich, trotzdem neu zu starten.Es gibt derzeit ein ausstehendes CodePush-Update, aber es wurde über
InstallMode.ON_NEXT_RESTART
installiert, daher ist kein programmgesteuerter Neustart erforderlich.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.Seit dem letzten Aufruf
disallowRestart
wurden keine AnruferestartApp
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:
null
wenn kein Update verfügbar ist. Dies kann in den folgenden Situationen passieren:- Die konfigurierte Bereitstellung enthält keine Versionen, und daher kann nichts aktualisiert werden.
- 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 und benötigt sie daher nicht mehr.
- Die neueste Version in der konfigurierten Bereitstellung ist derzeit als deaktiviert gekennzeichnet, sodass sie nicht heruntergeladen werden darf.
- 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.
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:
Ein CodePush-Update wird mithilfe von
InstallMode.IMMEDIATE
Ein CodePush-Update wird mithilfe
InstallMode.ON_NEXT_RESUME
installiert, und die App wird aus dem Hintergrund fortgesetzt (optional durch dieminimumBackgroundDuration
Eigenschaft gedrosselt)Die
restartApp
Methode wurde aufgerufen.Hinweis
Die Schritte 1 und 2 funktionieren effektiv, indem Sie für Sie anrufen
restartApp
, sodass Sie sichdisallowRestart
vorstellen können, dass sie jeden AnrufrestartApp
blockieren, 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:
null
wenn die App derzeit das JS-Bundle 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, das die alten CodePush-Updates entfernt hat und der JS-Binärdatei in der Binärdatei Vorrang gab.
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:
null
wenn derzeit kein Update mit dem angegebenen Zustand vorhanden ist. Dies geschieht in den folgenden Szenarien: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.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.
Der
updateState
Parameter ist auf ",UpdateState.RUNNING
aber 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.Der
updateState
Parameter ist aufUpdateState.PENDING
", aber die App verfügt derzeit nicht über ausstehende Updates.
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:
Ihre App gibt einen Installationsmoduswert oder
ON_NEXT_RESTART
beim Aufrufen dersync
Methoden anON_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.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:
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.
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:
deploymentKey (String) – Verweisen Sie auf
CodePushOptions
.installMode (codePush.InstallMode) - Verweisen Sie auf
CodePushOptions
.obligatorInstallMode (codePush.InstallMode) – Verweisen Sie auf
CodePushOptions
.minimumBackgroundDuration (Zahl) – Verweisen Sie auf
CodePushOptions
.updateDialog (UpdateDialogOptions) – Verweisen Sie auf
CodePushOptions
.rollbackRetryOptions (RollbackRetryOptions) – Verweisen Sie auf
CodePushOptions
.
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 Promise
Code 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 derInstallMode
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 denappStoreVersion
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 VerwendungcheckForUpdate
nur 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 denInstallMode
Enumerationsverweis beziehen, um eine Beschreibung der verfügbaren Optionen und deren Funktionsweise zu erhalten. Wenn derinstallMode
Parameter auf "InstallMode.ON_NEXT_RESUME
" festgelegt ist, können Sie mit demminimumBackgroundDuration
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 RemotePackage
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
- 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 einemDownloadProgress
Objekt ({ totalBytes: Number, receivedBytes: Number }
) aufgerufen, das den Fortschritt des Downloads meldet, bis er abgeschlossen ist. Gibt eine Zusage zurück, die mit demLocalPackage
Wert 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 diesync
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 derInstallMode
angegebenenSyncOptions
Angabe. - 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 RCTRootView
Methode "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:
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 :)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.
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.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 istmain.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 Dateimain
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
odersync
Angeben 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 NamenCodePushPublicKey
hinzufü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 NamenCodePushServerUrl
hinzufü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 derMainActivity
Klasse festgelegtthis
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, dassBuildConfig.DEBUG
er mit Dem Buildtyp synchronisiert bleibt. Wenn CodePush in den Debugmodus versetzt wird, werden die folgenden Verhaltensweisen aktiviert: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.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 inserverUrl
.
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.