Zestaw SDK klienta platformy React Native
Ważne
Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Mimo że można nadal używać programu Visual Studio App Center do momentu jego pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.
Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.
Ta wtyczka zapewnia integrację po stronie klienta dla usługi CodePush, umożliwiając łatwe dodawanie dynamicznego środowiska aktualizacji do aplikacji React Native.
Jak to działa?
Aplikacje react native składają się z plików JavaScript i wszystkich skojarzonych obrazów, które są łączone razem przez program packager i dystrybuowane w ramach pliku binarnego specyficznego dla platformy (pliku .ipa
lub .apk
). Po wydaniu aplikacji aktualizacja kodu JavaScript (na przykład wprowadzania poprawek usterek, dodawania nowych funkcji) lub zasobów obrazów wymaga ponownego kompilowania i redystrybucji całego pliku binarnego, który obejmuje czas przeglądu sklepów, do których publikujesz.
Wtyczka CodePush ułatwia natychmiastowe uzyskiwanie ulepszeń produktu przed użytkownikami końcowymi dzięki zachowaniu synchronizacji kodu JavaScript i obrazów z aktualizacjami udostępnianymi na serwerze CodePush. Dzięki temu aplikacja uzyskuje korzyści płynące z korzystania z aplikacji mobilnej w trybie offline, a także "podobną do internetu" elastyczność aktualizacji ładowania bezpośredniego natychmiast po ich udostępnieniu.
Aby upewnić się, że użytkownicy końcowi zawsze mają działającą wersję aplikacji, wtyczka CodePush utrzymuje kopię poprzedniej aktualizacji, dzięki czemu w przypadku przypadkowego wypchnięcia aktualizacji zawierającej awarię może ona automatycznie wycofać. Dzięki temu możesz mieć pewność, że nowo odnaleziona elastyczność wydania nie spowoduje zablokowania użytkowników, zanim będzie można wycofać się z serwera.
Uwaga
Wszelkie zmiany produktu, które dotykają kodu natywnego (np. modyfikowanie pliku AppDelegate.m/MainActivity.java, dodawanie nowej wtyczki) nie może być dystrybuowane za pośrednictwem codePush, a więc należy zaktualizować za pośrednictwem odpowiednich sklepów.
Obsługiwane platformy React Native
- iOS (7+)
- Android (5.0+)
- Windows (platforma UWP)
Staramy się zachować zgodność z poprzednimi wersjami naszej wtyczki z poprzednimi wersjami oprogramowania React Native, ale ze względu na charakter platformy oraz istnienie zmian powodujących niezgodność między wydaniami jest możliwe, że musisz użyć określonej wersji wtyczki CodePush, aby obsługiwać dokładną wersję używanej wersji oprogramowania React Native. W poniższej tabeli opisano, które wersje wtyczki CodePush oficjalnie obsługują odpowiednie wersje oprogramowania React Native:
Wersje natywne platformy React | Obsługa wersji CodePush |
---|---|
<0.14 | Nieobsługiwane |
wersja 0.14 | Wersja 1.3 (wprowadzono obsługę systemu Android) |
v0.15-v0.18 | Wersja 1.4-v1.6 (wprowadzono obsługę zasobów systemu iOS) |
v0.19-v0.28 | Wersja 1.7-v1.17 (wprowadzono obsługę zasobów systemu Android) |
v0.29-v0.30 | v1.13-v1.17 (refaktoryzowany natywny kod hostingu RN) |
v0.31-v0.33 | v1.14.6-v1.17 (refaktoryzowany kod hostingu natywnego RN) |
v0.34-v0.35 | v1.15-v1.17 (refaktoryzowany natywny kod hostingu RN) |
v0.36-v0.39 | v1.16-v1.17 (refaktoryzowana obsługa wznawiania RN) |
v0.40-v0.42 | wersja 1.17 (pliki nagłówków systemu iOS z refaktoryzowaną refaktoryzowaną funkcją RN) |
v0.43-v0.44 | Wersja 2.0+ (refaktoryzowane zależności interfejsu użytkownika RN) |
wersja 0.45 | Wersja 3.0 lub nowsza (refaktoryzowany kod menedżera wystąpień RN) |
wersja 0.46 | wersja 4.0+ (refaktoryzowany kod modułu ładującego pakietów js) |
v0.46-v0.53 | wersja 5.1 lub nowsza (usunięto nieużywaną rejestrację modułów JS) |
v0.54-v0.55 | wersja 5.3 lub nowsza (integracja z wtyczką Gradle systemu Android 3.x) |
v0.56-v0.58 | wersja 5.4+ (uaktualnione wersje RN dla narzędzi systemu Android) |
wersja 0.59 | v5.6+ (refaktoryzowany kod modułu ładującego pakietu js refaktoryzowany RN) |
v0.60-v0.61 | Wersja 6.0 lub nowsza (migrowana do funkcji automatycznego łączenia) |
Ciężko pracujemy nad reagowaniem na nowe wersje oprogramowania React Native, ale od czasu do czasu nas przerywają. Zaktualizujemy ten wykres przy użyciu każdej wersji oprogramowania React Native, aby użytkownicy mogli sprawdzić, czym jest nasza oficjalna pomoc techniczna.
Obsługiwane składniki
W przypadku korzystania z systemu zasobów react native (na przykład przy użyciu require("./foo.png")
składni), poniższa lista reprezentuje zestaw podstawowych składników (i rekwizytów), które obsługują ich przywołyane obrazy i filmy wideo zaktualizowane za pośrednictwem koduPush:
Składnik | Prop(s) |
---|---|
Image |
source |
MapView.Marker (Wymaga map >=O.3.2 react-native)) |
image |
ProgressViewIOS |
progressImage , trackImage |
TabBarIOS.Item |
icon , selectedIcon |
ToolbarAndroid (React Native 0.21.0+) |
actions[].icon , , logo overflowIcon |
Video |
source |
Poniższa lista reprezentuje zestaw składników (i rekwizytów), które obecnie nie obsługują ich zasobów aktualizowanych za pośrednictwem środowiska CodePush ze względu na zależność od obrazów statycznych i wideo (na przykład przy użyciu { uri: "foo" }
składni):
Składnik | Prop(s) |
---|---|
SliderIOS |
maximumTrackImage , , minimumTrackImage , , thumbImage trackImage |
Video |
source |
Zaktualizujemy tę listę w miarę wydawania nowych podstawowych składników, które obsługują odwoływanie się do zasobów, aby upewnić się, że użytkownicy wiedzą dokładnie, czego mogą oczekiwać aktualizacji przy użyciu funkcji CodePush.
Uwaga
KodPush działa tylko ze składnikami wideo w przypadku używania require
w rekwizycie źródłowym. Na przykład:
<Video source={require("./foo.mp4")} />
Zgodność ze wskazówkami dotyczącymi sklepu
Mimo że sklep Google Play i aplikacje wewnętrznie rozproszone (na przykład Enterprise, Fabric, App Center) nie mają ograniczeń dotyczących sposobu publikowania aktualizacji przy użyciu aplikacji CodePush, sklep App Store dla systemu iOS i odpowiednie wytyczne mają bardziej precyzyjne reguły, o których należy pamiętać przed zintegrowaniem rozwiązania w aplikacji.
Umowa licencyjna programu dla deweloperów Firmy Apple, zgodnie z ust . 3.3.2, w pełni dozwolona nadmierna dostępność aktualizacji kodu JavaScript i aktywów - i w najnowszej wersji (20210607) można pobrać tutaj jeszcze szerszy:
Interpretowany kod może być pobierany do aplikacji, ale tylko tak długo, jak taki kod: (a) nie zmienia podstawowego celu aplikacji, udostępniając funkcje, które są niezgodne z zamierzonym i anonsowanym celem aplikacji w formie przesłanej do sklepu App Store, (b) nie tworzy sklepu ani witryny sklepu dla innych kodów lub aplikacji, i (c) nie pomija podpisywania, piaskownicy ani innych funkcji zabezpieczeń systemu operacyjnego.
CodePush umożliwia przestrzeganie tych reguł w pełnej zgodności, o ile wypchnięta aktualizacja nie znacznie odbiega od oryginalnej zatwierdzonej intencji sklepu App Store.
Aby zachować zgodność z wytycznymi firmy Apple, zalecamy, aby aplikacje rozproszone w sklepie App Store nie włączały updateDialog
opcji podczas wywoływania sync
metody , ponieważ w wytycznych dotyczących przeglądu sklepu App Store jest napisane, że:
Aplikacje nie mogą wymuszać na użytkownikach oceniania aplikacji, przeglądania aplikacji, pobierania innych aplikacji lub innych podobnych akcji w celu uzyskania dostępu do funkcji, zawartości lub korzystania z aplikacji.
Niekoniecznie jest to przypadek , updateDialog
ponieważ nie zmusi użytkownika do pobrania nowej wersji, ale przynajmniej należy pamiętać o tym orzeczeniu, jeśli zdecydujesz się go pokazać.
Przykładowe aplikacje /startery
Społeczność platformy React Native przypadkowo utworzyła kilka niesamowitych aplikacji typu open source, które mogą służyć jako przykłady dla deweloperów, którzy zaczynają pracę. Poniższa lista zawiera aplikacje natywne react systemu operacyjnego, które również używają koduPush i mogą służyć do sprawdzenia, jak inni korzystają z usługi:
- F8 App — oficjalna aplikacja konferencyjna dla F8 2016.
- Kot do polowania na produkty — klient systemu Android do polowania na produkty.
- GeoEncoding — aplikacja firmy Lynx IT Digital, która pokazuje, jak używać wielu składników i modułów platformy React Native.
- Fakty matematyczne — aplikacja Khan Academy, która ułatwia zapamiętywanie faktów matematycznych.
Ponadto jeśli chcesz rozpocząć pracę z platformą React Native + CodePush i szukasz niesamowitego zestawu startowego, zapoznaj się z następującymi elementami:
-
Uwaga
Jeśli utworzono aplikację platformy React Native przy użyciu platformy CodePush, to jest to open source, daj nam znać. Chcielibyśmy dodać ją do tej listy!
Ciągła integracja/dostarczanie
Oprócz używania interfejsu wiersza polecenia CodePush do aktualizacji "ręcznie" wydań uważamy, że ważne jest utworzenie powtarzalnego i zrównoważonego rozwiązania do ciągłego dostarczania aktualizacji do aplikacji. W ten sposób wystarczy Ci lub Twojemu zespołowi tworzenie i utrzymywanie rytmu wdrożeń agile. Aby ułatwić konfigurowanie potoku ciągłego wdrażania opartego na kodziePush, zapoznaj się z następującymi integracjami z różnymi serwerami ciągłej integracji:
- Azure DevOps — Usługa Azure DevOps (wcześniej znana jako usługa VSTS) ma również rozszerzenia do publikowania w usłudze App Center i sklepie Google Play , dzięki czemu zapewnia całkiem doskonałe rozwiązanie mobilnego ciągłego wdrażania.
- Ciągła integracja usługi Travis
Użycie języka TypeScript
Ten moduł dostarcza swój *.d.ts
plik jako część pakietu NPM, który umożliwia import
mu korzystanie z funkcji IntelliSense w edytorach pomocniczych (takich jak Visual Studio Code), a także sprawdzanie typów czasu kompilacji, jeśli używasz języka TypeScript. W większości przypadków to zachowanie powinno działać poza polem, jednak jeśli określono es6
jako wartość target
opcji lub module
kompilatora w tsconfig.json
pliku, upewnij się, że została również ustawiona moduleResolution
opcja node
. Dzięki temu kompilator języka TypeScript będzie szukać w obrębie node_modules
definicji typów importowanych modułów. W przeciwnym razie podczas próby zaimportowania modułu wystąpi błąd podobny do następującego react-native-code-push
: error TS2307: Cannot find module 'react-native-code-push'
.