React Native 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 React Native-App(n) auf einfache Weise eine dynamische Updateerfahrung hinzufügen können.
Wie funktioniert dies?
React Native-Apps bestehen aus JavaScript-Dateien und allen zugehörigen Bildern, die vom Packager gebündelt und als Teil einer plattformspezifischen Binärdatei (eine .ipa
oder .apk
Datei) verteilt werden. Wenn die App veröffentlicht wird, müssen Sie entweder den JavaScript-Code (z. B. Fehlerkorrekturen erstellen, neue Features hinzufügen) oder Bildressourcen aktualisieren, um die gesamte Binärdatei neu zu kompilieren und neu zu verteilen, was die Überprüfungszeit für die Stores umfasst, in denen Sie veröffentlichen.
Mit dem CodePush-Plug-In können Sie produktverbesserungen vor Ihren Endbenutzern sofort erhalten, indem Sie Ihr JavaScript und Ihre Bilder mit Updates synchronisieren, 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.
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.
Hinweis
Alle Produktänderungen, die systemeigenen Code per Toucheingabe (z. B. Das Ändern Ihrer AppDelegate.m/MainActivity.java Datei, 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 React Native-Plattformen
- iOS (7+)
- Android (5.0+)
- Windows (UWP)
Wir versuchen, die Abwärtskompatibilität unseres Plug-Ins mit früheren Versionen von React Native aufrechtzuerhalten, aber aufgrund der Art der Plattform und des Vorhandenseins von Änderungen zwischen Versionen ist es möglich, dass Sie eine bestimmte Version des CodePush-Plug-Ins verwenden müssen, um die genaue Version von React Native zu unterstützen, die Sie verwenden. In der folgenden Tabelle wird beschrieben, welche CodePush-Plug-In-Versionen offiziell die jeweiligen React Native-Versionen unterstützen:
React Native-Versionen | Unterstützen von CodePush-Versionen |
---|---|
<0.14 | Nicht unterstützt |
v0.14 | v1.3 (Eingeführte Android-Unterstützung) |
v0.15-v0.18 | v1.4-v1.6 (eingeführte iOS-Asset-Unterstützung) |
v0.19-v0.28 | v1.7-v1.17 (Eingeführte Android-Asset-Unterstützung) |
v0.29-v0.30 | v1.13-v1.17 (RN umgestaltet nativer Hostingcode) |
v0.31-v0.33 | v1.14.6-v1.17 (RN umgestaltet nativer Hostingcode) |
v0.34-v0.35 | v1.15-v1.17 (RN umgestaltet nativer Hostingcode) |
v0.36-v0.39 | v1.16-v1.17 (RN refactored resume handler) |
v0.40-v0.42 | v1.17 (RN umgestaltete iOS-Headerdateien) |
v0.43-v0.44 | v2.0+ (RN umgestaltete Uimanagerabhängigkeiten) |
v0.45 | v3.0+ (RN refactored instance manager code) |
v0.46 | v4.0+ (RN refactored js bundle loader code) |
v0.46-v0.53 | v5.1+ (RN entfernt nicht verwendete Registrierung von JS-Modulen) |
v0.54-v0.55 | v5.3+ (Android Gradle Plugin 3.x Integration) |
v0.56-v0.58 | v5.4+ (RN aktualisierte Versionen für Android-Tools) |
v0.59 | v5.6+ (RN refactored js bundle loader code) |
v0.60-v0.61 | v6.0+ (RN wurde zu AutoLinking migriert) |
Wir arbeiten hart daran, auf neue React Native-Versionen zu reagieren, aber sie brechen uns gelegentlich. Wir aktualisieren dieses Diagramm mit jeder React Native-Version, damit Benutzer überprüfen können, was unser offizieller Support ist.
Unterstützte Komponenten
Bei Verwendung des React Native-Ressourcensystems (z. B. mithilfe der require("./foo.png")
Syntax) stellt die folgende Liste die Gruppe der Kernkomponenten (und Props) dar, die unterstützen, dass ihre referenzierten Bilder und Videos über CodePush aktualisiert werden:
Komponente | Prop(en) |
---|---|
Image |
source |
MapView.Marker (Erfordert react-native-maps >=O.3.2 ) |
image |
ProgressViewIOS |
progressImage , trackImage |
TabBarIOS.Item |
icon , selectedIcon |
ToolbarAndroid (React Native 0.21.0+) |
actions[].icon , logo overflowIcon |
Video |
source |
Die folgende Liste stellt den Satz von Komponenten (und Props) dar, die ihre Ressourcen derzeit nicht unterstützen, die über CodePush aktualisiert werden, weil sie von statischen Bildern und Videos abhängig sind (z. B. die Syntax { uri: "foo" }
):
Komponente | Prop(en) |
---|---|
SliderIOS |
maximumTrackImage , , minimumTrackImage thumbImage trackImage |
Video |
source |
Wir aktualisieren diese Liste, da neue Kernkomponenten veröffentlicht werden, die verweisende Ressourcen unterstützen, um sicherzustellen, dass Benutzer wissen, was genau sie mit CodePush aktualisieren können.
Hinweis
CodePush funktioniert nur bei Videokomponenten bei Verwendung require
im Quellproper. Zum Beispiel:
<Video source={require("./foo.mp4")} />
Compliance der Store-Richtlinien
Während Google Play und intern verteilte Apps (z. B. Enterprise, Fabric, App Center) keine Einschränkungen hinsichtlich der Veröffentlichung von Updates mit CodePush haben, weisen der iOS App Store und die entsprechenden Richtlinien genauere Regeln auf, die Sie beachten sollten, bevor Sie die Lösung in Ihre Anwendung integrieren.
Der Lizenzvertrag für das Entwicklerprogramm von Apple, gemäß Absatz 3.3.2, erlaubte vollständig over-the-air-Updates von JavaScript und Assets - und in seiner neuesten Version (20210607) ist diese Entscheidung noch breiter:
Interpretierter Code kann in eine Anwendung heruntergeladen werden, aber nur so lange wie dieser Code: (a) ändert nicht den Hauptzweck der Anwendung, indem Features oder Funktionen bereitgestellt werden, die mit dem beabsichtigten und angekündigten Zweck der Anwendung, wie sie an den App Store übermittelt werden, (b) keinen Store oder Storefront für andere Code oder Anwendungen erstellt, und (c) umgehen keine Signatur-, Sandkasten- oder andere Sicherheitsfeatures des Betriebssystems.
CodePush ermöglicht es Ihnen, diese Regeln in voller Compliance zu befolgen, solange das push übertragene Update Ihr Produkt nicht wesentlich von seiner ursprünglich genehmigten Absicht im App Store abweicht.
Um die Richtlinien von Apple weiter einzuhalten, empfehlen wir, dass app Store-verteilte Apps die updateDialog
Option beim Aufrufen sync
nicht aktivieren, da in den App Store-Überprüfungsrichtlinien folgendes geschrieben wird:
Apps dürfen benutzer nicht zwingen, die App zu bewerten, die App zu überprüfen, andere Apps herunterzuladen oder andere ähnliche Aktionen für den Zugriff auf Funktionen, Inhalte oder die Verwendung der App auszuführen.
Dies ist nicht unbedingt der Fall, updateDialog
da der Benutzer nicht erzwingt, die neue Version herunterzuladen, aber zumindest sollten Sie sich dieser Entscheidung bewusst sein, wenn Sie sich entschließen, sie anzuzeigen.
Beispiel-Apps/Starter
Die React Native-Community hat einige großartige Open-Source-Apps erstellt, die als Beispiele für Entwickler dienen können, die erste Schritte sind. Die folgende Liste enthält OSS React Native-Apps, die auch CodePush verwenden, und kann verwendet werden, um zu sehen, wie andere Benutzer den Dienst verwenden:
- F8 App – Die offizielle Konferenz-App für F8 2016.
- Feline für Produktsuche - Ein Android-Client für Die Produktsuche.
- GeoEncoding – Eine App von Lynx IT Digital, die veranschaulicht, wie zahlreiche React Native-Komponenten und -Module verwendet werden.
- Mathematische Fakten - Eine App von Khan Academy, um mathematische Fakten einfacher zu merken.
Wenn Sie mit React Native + CodePush beginnen möchten und nach einem tollen Starter-Kit suchen, sollten Sie folgendes sehen:
-
Hinweis
Wenn Sie eine React Native-App mit CodePush entwickelt haben, teilen Sie uns das mit. Wir freuen uns, sie dieser Liste hinzuzufügen!
Kontinuierliche Integration /Lieferung
Neben der Verwendung der CodePush CLI zum "manuellen" Releaseupdates glauben wir, dass es wichtig ist, eine wiederholbare und nachhaltige Lösung für die kontinuierliche Bereitstellung von Updates für Ihre App zu erstellen. Auf diese Weise ist es für Sie oder Ihr Team einfach genug, den Rhythmus agiler Bereitstellungen zu erstellen und aufrechtzuerhalten. Informationen zum Einrichten einer CodePush-basierten CD-Pipeline finden Sie in den folgenden Integrationen mit verschiedenen CI-Servern:
- Azure DevOps – Azure DevOps (früher als VSTS bezeichnet) verfügt auch über Erweiterungen für die Veröffentlichung im App Center und im Google Play Store, sodass es eine ziemlich großartige mobile CD-Lösung im Allgemeinen bietet.
- Travis CI
TypeScript-Verbrauch
Dieses Modul enthält seine *.d.ts
Datei als Teil des NPM-Pakets, das Ihnen import
dies ermöglicht, und erhält IntelliSense in unterstützenden Editoren (z. B. Visual Studio Code) sowie die Überprüfung des Kompilierungszeittyps, wenn Sie TypeScript verwenden. In den meisten Fällen sollte dieses Verhalten jedoch außerhalb des Felds funktionieren, wenn Sie den Wert für die Datei oder module
die Compileroption tsconfig.json
angegeben es6
haben, stellen Sie sicher, dass Sie auch die moduleResolution
Option auf "node
.target
Dadurch wird sichergestellt, dass der TypeScript-Compiler innerhalb der node_modules
Typdefinitionen importierter Module sucht. Andernfalls wird beim Versuch, das react-native-code-push
Modul zu importieren, eine Fehlermeldung wie folgt angezeigt: error TS2307: Cannot find module 'react-native-code-push'