Sdílet prostřednictvím


React Native Client SDK

Důležité

31. března 2025 je naplánované vyřazení sady Visual Studio App Center. I když můžete Visual Studio App Center dál používat, dokud nebude plně vyřazený, existuje několik doporučených alternativ, na které můžete zvážit migraci.

Přečtěte si další informace o časových osách podpory a alternativách.

Tento modul plug-in poskytuje integraci na straně klienta pro službu CodePush, která umožňuje snadné přidání dynamického prostředí aktualizace do aplikací React Native.

Jak to funguje?

Aplikace React Native se skládají ze souborů JavaScriptu a všech přidružených imagí, které se sbalí a distribuují jako součást binárního souboru specifického pro platformu .ipa (nebo .apk souboru). Po vydání aplikace je potřeba znovu zkompilovat a distribuovat celý binární soubor, který zahrnuje čas kontroly úložišť, do kterých publikujete, a aktualizovat kód JavaScriptu (například opravy chyb, přidání nových funkcí) nebo prostředky obrázků.

Modul plug-in CodePush pomáhá okamžitě získat vylepšení produktů před koncovými uživateli tím, že udržuje JavaScript a obrázky synchronizované s aktualizacemi, které vydáte na server CodePush. Díky tomu vaše aplikace získá výhody offline mobilního prostředí a také "webovou" flexibilitu při načítání aktualizací bokem, jakmile budou k dispozici.

Aby koncoví uživatelé měli vždy funkční verzi aplikace, modul plug-in CodePush udržuje kopii předchozí aktualizace, takže v případě náhodného nasdílení aktualizace, která zahrnuje chybové ukončení, se může automaticky vrátit zpět. Díky tomu můžete mít jistotu, že vaše nová flexibility vydané verze nebude mít zablokované uživatele, než budete mít možnost vrátit se zpět na server.

Poznámka:

Všechny změny produktu, které se dotknou nativního kódu (např. úprava souboru AppDelegate.m/MainActivity.java, přidání nového modulu plug-in), není možné distribuovat prostřednictvím CodePush, a proto je nutné je aktualizovat prostřednictvím příslušných obchodů.

Podporované nativní platformy React

  • iOS (7+)
  • Android (5.0+)
  • Windows (UWP)

Snažíme se zachovat zpětnou kompatibilitu modulu plug-in s předchozími verzemi React Native, ale vzhledem k povaze platformy a existenci zásadních změn mezi verzemi je možné, že k podpoře přesné verze modulu plug-in CodePush, kterou používáte, potřebujete použít konkrétní verzi modulu plug-in CodePush. Následující tabulka popisuje, které verze modulu plug-in CodePush oficiálně podporují příslušné verze React Native:

React Native versions Podpora verzí CodePush
<0.14 Nepodporuje se
v0.14 v1.3 (zavedená podpora Androidu)
v0.15-v0.18 v1.4-v1.6 (zavedená podpora prostředků iOS)
v0.19-v0.28 v1.7-v1.17 (zavedená podpora prostředků Androidu)
v0.29-v0.30 v1.13-v1.17 (refaktorovaný nativní kód hostování RN)
v0.31-v0.33 v1.14.6-v1.17 (refaktorovaný nativní hostitelský kód RN)
v0.34-v0.35 v1.15-v1.17 (refaktorovaný nativní kód hostování RN)
v0.36-v0.39 v1.16-v1.17 (obslužná rutina obnovení refaktoringu RN)
v0.40-v0.42 v1.17 (refaktorované soubory hlaviček iOSu RN)
v0.43-v0.44 v2.0+ (refaktorované závislosti uimanageru RN)
v0.45 v3.0+ (refaktorovaný kód správce instancí RN)
v0.46 v4.0+ (refaktorovaný kód zavaděče sady prostředků RN)
v0.46-v0.53 v5.1 nebo novější (RN odebral nepoužívané registrace modulů JS)
v0.54-v0.55 v5.3+ (integrace modulu plug-in Android Gradle 3.x)
v0.56-v0.58 v5.4 nebo novější (upgradované verze RN pro nástroje pro Android)
v0.59 v5.6 nebo novější (refaktorovaný kód zavaděče sady prostředků RN)
v0.60-v0.61 v6.0+ (migrace RN na automatické propojení)

Snažíme se reagovat na nové verze React Native, ale občas nás zlomí. Tento graf aktualizujeme každou verzí React Native, aby uživatelé mohli zkontrolovat, co je naše oficiální podpora.

Podporované komponenty

Při použití systému prostředků React Native (například pomocí require("./foo.png") syntaxe) představuje následující seznam sadu základních komponent (a props), které podporují aktualizaci jejich odkazovaných obrázků a videí prostřednictvím CodePush:

Komponenta Prop(y)
Image source
MapView.Marker
(Vyžaduje mapy react-native-maps>=O.3.2.
image
ProgressViewIOS progressImage, trackImage
TabBarIOS.Item icon, selectedIcon
ToolbarAndroid
(React Native 0.21.0+)
actions[].icon, , logooverflowIcon
Video source

Následující seznam představuje sadu komponent (a props), které aktuálně nepodporují aktualizace jejich prostředků prostřednictvím CodePush, protože jsou závislé na statických obrázcích a videích (jako je použití { uri: "foo" } syntaxe):

Komponenta Prop(y)
SliderIOS maximumTrackImage, minimumTrackImage, , thumbImagetrackImage
Video source

Tento seznam aktualizujeme, protože jsou vydány nové základní komponenty, které podporují odkazování na prostředky, aby uživatelé věděli, co přesně můžou očekávat, že budou aktualizovat pomocí CodePush.

Poznámka:

CodePush funguje pouze s komponentami videa při použití require ve zdrojovém propu. Například:

<Video source={require("./foo.mp4")} />

Dodržování zásad ukládání

I když Google Play a interně distribuované aplikace (například Enterprise, Fabric, App Center) nemají žádná omezení týkající se publikování aktualizací pomocí CodePush, App Store pro iOS a odpovídající pokyny mají přesnější pravidla, o kterých byste měli vědět před integrací řešení ve vaší aplikaci.

Licenční smlouva s Programem pro vývojáře společnosti Apple podle odstavce 3.3.2 plně povolená prostřednictvím air aktualizací JavaScriptu a prostředků – a ve své nejnovější verzi (20210607) ke stažení je toto rozhodnutí ještě širší:

Interpretovaný kód lze stáhnout do aplikace, ale pouze tak dlouho, dokud takový kód: (a) nezmění primární účel aplikace tím, že poskytuje funkce, které nejsou konzistentní s zamýšleným a inzerovaným účelem aplikace, jak je odesláno do App Storu, (b) nevytvoří obchod nebo výkladní skříň pro jiný kód nebo aplikace, a (c) neobejde podepisování, sandbox ani jiné funkce zabezpečení operačního systému.

CodePush umožňuje postupovat podle těchto pravidel v plném dodržování předpisů, pokud se aktualizace, kterou odešlete, výrazně nerozlišuje produkt od původního schváleného záměru App Storu.

Abychom dále zůstali v souladu s pokyny společnosti Apple, doporučujeme, aby distribuované aplikace app Storu updateDialog při volání syncnepovolily možnost , protože v App Storu review Guidelines je napsané, že:

Aplikace nesmí uživatele vynutit, aby aplikaci ohodnotit, zkontrolovali, stáhli jiné aplikace nebo jiné podobné akce pro přístup k funkcím, obsahu nebo používání aplikace.

To není nutně případ updateDialog, protože to nebude vynutit, aby si uživatel stáhl novou verzi, ale alespoň byste si měli být vědomi tohoto rozhodnutí, pokud se rozhodnete, že to ukážete.

Ukázkové aplikace / úvodní sady

Komunita ReactNativech (React Native) vytvořila některé úžasné opensourcové aplikace, které můžou sloužit jako příklady pro vývojáře, kteří začínají. Následující seznam obsahuje aplikace OSS React Native, které také používají CodePush, a lze je použít k zobrazení toho, jak službu používají ostatní:

  • F8 App – oficiální konferenční aplikace pro F8 2016.
  • Feline for Product Hunt - Klient Android pro vyhledávání produktů.
  • GeoEncoding – aplikace od společnosti Lynx IT Digital, která ukazuje, jak používat řadu komponent a modulů React Native.
  • Matematická fakta – aplikace od Khan Academy, která pomáhá snadněji zapamatovat matematické fakty.

Kromě toho, pokud chcete začít s React Native + CodePush a hledáte úžasnou úvodní sadu, měli byste se podívat na následující:

  • Native Starter Pro

  • Pepperoni

    Poznámka:

    Pokud jste pomocí KóduPush vyvinuli nativní aplikaci React, dejte nám vědět. Rádi bychom ho přidali do tohoto seznamu.

Kontinuální integrace / doručování

Kromě použití rozhraní příkazového řádku CodePush k ručním aktualizacím vydání věříme, že je důležité vytvořit opakovatelné a udržitelné řešení pro průběžné doručování aktualizací vaší aplikace. Díky tomu je pro vás nebo váš tým jednoduchý, abyste mohli vytvářet a udržovat rytmus agilních nasazení. Pokud chcete pomoct s nastavením kanálu CD založeného na CodePush, projděte si následující integrace s různými servery CI:

Spotřeba TypeScriptu

Tento modul dodává soubor *.d.ts jako součást balíčku NPM, který vám import umožňuje, a přijímá intellisense v podpůrných editorech (jako je Visual Studio Code) a také kontrolu typů kompilace, pokud používáte TypeScript. Ve většině případů by toto chování mělo fungovat, ale pokud jste jako hodnotu pro možnost nebo module možnost kompilátoru v tsconfig.json souboru zadalies6, ujistěte se, že jste také nastavili moduleResolution možnost node. target Tím zajistíte, že kompilátor TypeScriptu bude hledat v rámci node_modules definic typů importovaných modulů. V opačném případě se při pokusu react-native-code-push o import modulu zobrazí chyba podobná této: error TS2307: Cannot find module 'react-native-code-push'