React Native Client SDK

Důležité

31. března 2025 je naplánované vyřazení z provozu. I když můžete dál používat Visual Studio App Center, dokud ho úplně vyřadíte, 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 a alternativách podpory.

Tento modul plug-in poskytuje integraci na straně klienta pro službu CodePush a umožňuje snadno přidávat dynamické aktualizace do React Native aplikací.

Jak to funguje?

React Native aplikace se skládají ze souborů JavaScriptu a všech přidružených obrázků, které jsou zabalené společně pomocí packageru a distribuované jako součást binárního souboru specifického pro konkrétní platformu (nebo .ipa.apk souboru). Při vydání aplikace je při aktualizaci kódu JavaScriptu (například opravy chyb, přidání nových funkcí) nebo prostředků image nutné znovu zkompilovat a redistribuovat celý binární soubor, což zahrnuje čas kontroly úložišť, do kterých publikujete.

Modul plug-in CodePush pomáhá okamžitě získat vylepšení produktů před vašimi koncovými uživateli tím, že udržuje JavaScript a obrázky synchronizované s aktualizacemi, které vydáváte na server CodePush. Aplikace tak získá výhody offline mobilního prostředí a také flexibilitu aktualizací podobných webu, které se načítají bokem, jakmile budou dostupné.

Aby měli koncoví uživatelé vždy funkční verzi vaší aplikace, modul plug-in CodePush udržuje kopii předchozí aktualizace, takže v případě, že omylem nasdílíte aktualizaci, která obsahuje chybu, se může automaticky vrátit zpět. Díky tomu můžete mít jistotu, že vaše nově nabytá 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), nelze distribuovat prostřednictvím CodePush, a proto se musí aktualizovat prostřednictvím příslušných obchodů.

Podporované platformy React Native

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

Snažíme se zachovat zpětnou kompatibilitu našeho 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 budete muset použít konkrétní verzi modulu plug-in CodePush, abyste podporovali přesnou verzi React Native, kterou používáte. Následující tabulka uvádí, které verze modulu plug-in CodePush oficiálně podporují příslušné verze React Native:

React Native verze Podpora verzí CodePush
<0.14 Nepodporuje se
v0.14 v1.3 (zavedená podpora Androidu)
v0.15-v0.18 v1.4-v1.6 (zavedení podpory prostředků pro iOS)
v0.19-v0.28 v1.7-v1.17 (zavedená podpora prostředků Androidu)
v0.29–v0.30 v1.13-v1.17 (refaktorovaný nativní hostitelský kód 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í hostitelský kód RN)
v0.36-v0.39 v1.16-v1.17 (refaktorovaná obslužná rutina životopisu RN)
v0.40-v0.42 v1.17 (refaktorované soubory hlaviček RN pro iOS)
v0.43-v0.44 v2.0+ (ZÁVISLOSTI uimanager refaktorovaného RN)
v0.45 v3.0+ (kód správce instancí refaktorovaného RN)
v0.46 v4.0+ (kód zavaděče sad sad js refaktorovaných RN)
v0.46-v0.53 v5.1+ (RN odebrala nepoužívané registrace modulů JS)
v0.54–v0.55 v5.3 nebo novější (integrace modulu plug-in Android Gradle 3.x)
v0.56-v0.58 v5.4 nebo novější (upgradované verze RN pro nástroje androidu)
v0.59 v5.6+ (kód zavaděče sad sad js refaktorovaných RN)
v0.60-v0.61 v6.0+ (RN migrované na automatické propojení)

Usilovně pracujeme na tom, abychom reagovali na nové verze React Native, ale občas nás narušují. Tento graf budeme aktualizovat s každou React Native verzí, aby uživatelé mohli zkontrolovat, jaká je naše oficiální podpora.

Podporované komponenty

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

Součást Prop(s)
Image source
MapView.Marker
(Vyžaduje 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

Následující seznam představuje sadu komponent (a rekvizit), které v současné době nepodporují aktualizaci prostředků prostřednictvím CodePush kvůli jejich závislosti na statických obrázcích a videích (jako je použití { uri: "foo" } syntaxe):

Součást Prop(s)
SliderIOS maximumTrackImage, minimumTrackImage, thumbImage, trackImage
Video source

Tento seznam aktualizujeme, jakmile budou vydávány nové základní komponenty, které podporují odkazování na prostředky, abychom zajistili, že uživatelé vědí, co přesně mohou očekávat od aktualizace pomocí CodePush.

Poznámka

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

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

Dodržování předpisů podle pokynů pro store

Zatímco Google Play a interně distribuované aplikace (například Enterprise, Fabric, App Center) nemají žádná omezení, pokud chcete publikovat aktualizace pomocí CodePush, App Store pro iOS a příslušné pokyny mají přesnější pravidla, o kterých byste měli vědět před integrací řešení do vaší aplikace.

Licenční smlouva programu Apple Developer Program, v odstavci 3.3.2, plně povolena prostřednictvím air aktualizace JavaScriptu a prostředků – a ve své nejnovější verzi (20210607) ke stažení je toto rozhodnutí ještě širší:

Interpretovaný kód může být stažen do aplikace, ale pouze za předpokladu, že takový kód: (a) nezmění primární účel aplikace tím, že poskytuje funkce, které nejsou v souladu se zamýšleným a inzerovaným účelem aplikace, jak jsou odeslány do App Store, (b) nevytvoří úložiště nebo výkladní skříň pro jiný kód nebo aplikace, a (c) nevynechá podepisování, sandbox ani jiné funkce zabezpečení operačního systému.

CodePush vám umožňuje dodržovat tato pravidla v plném souladu, pokud aktualizace, kterou nasdílíte, výrazně neodchýlí váš produkt od původního App Store schváleného záměru.

Pokud chcete dále dodržovat pokyny společnosti Apple, doporučujeme, aby App Store distribuované aplikace při volání syncnepovolily updateDialog možnost , protože v pokynech pro recenze App Store je napsáno, že:

Aplikace nesmí nutit uživatele, aby aplikaci ohodnotěli, zkontrolovali ji, stáhli jiné aplikace nebo jiné podobné akce, aby mohli získat přístup k funkcím, obsahu nebo používání aplikace.

To nemusí nutně platit pro updateDialog, protože to uživatele nebude nutit ke stažení nové verze, ale alespoň byste o tomto rozhodnutí měli vědět, pokud se ho rozhodnete zobrazit.

Ukázkové aplikace / Startéry

Komunita React Native laskavě vytvořila několik skvělých opensourcových aplikací, 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 můžete ho použít k zobrazení toho, jak službu používají ostatní uživatelé:

  • Aplikace F8 – oficiální konferenční aplikace pro F8 2016.
  • Feline for Product Hunt – klient Androidu pro vyhledávání produktů.
  • GeoEncoding – aplikace od společnosti Lynx IT Digital, která ukazuje, jak používat řadu React Native komponent a modulů.
  • Matematická fakta – aplikace od Khan Academy, která usnadňuje zapamatování matematických faktů.

Pokud navíc chcete začít s React Native + CodePush a hledáte skvělou úvodní sadu, měli byste se podívat na následující:

  • Native Starter Pro

  • Pepperoni

    Poznámka

    Pokud jste vyvinuli React Native aplikaci pomocí CodePush, to je open source, 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ímu vydání aktualizací jsme přesvědčeni, že je důležité vytvořit opakovatelné a udržitelné řešení pro průběžné doručování aktualizací do vaší aplikace. Díky tomu je pro vás nebo váš tým dostatečně jednoduché vytvářet a udržovat rytmus agilních nasazení. Pomoc s nastavením kanálu CD založeného na CodePush najdete v následujících integracích 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žní získat intellisense v podpůrných editorech (jako je Visual Studio Code) a také kontrolu typů při kompilaci, pokud používáte TypeScript. Ve většině případů by toto chování mělo fungovat okamžitě, ale pokud jste jako hodnotu pro možnost kompilátorutarget nebo module v tsconfig.json souboru zadali es6 hodnotu, ujistěte se, že jste tuto možnost také nastavili moduleResolution na node. Tím zajistíte, že kompilátor TypeScriptu bude hledat definice typů importovaných modulů v rámci node_modules pole . V opačném případě se při pokusu o import react-native-code-push modulu zobrazí chyba podobná následující: error TS2307: Cannot find module 'react-native-code-push'.