Пакет SDK для собственного клиента React
Внимание
Центр приложений Visual Studio планируется выйти на пенсию 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio до тех пор, пока он не будет полностью прекращен, существует несколько рекомендуемых вариантов, которые можно перенести.
Дополнительные сведения о временной шкале поддержки и альтернативах.
Этот подключаемый модуль обеспечивает интеграцию на стороне клиента для службы CodePush, что позволяет легко добавлять динамические обновления в приложения React Native.
Как это работает?
Приложения React Native состоят из файлов JavaScript и всех связанных изображений, которые объединяются упаковщиком и распределяются как часть двоичного файла для конкретной платформы (или .ipa
.apk
файла). Когда приложение выпущено, обновите код JavaScript (например, исправление ошибок, добавление новых функций) или ресурсы изображений, требует повторной компиляции и повторного распространения всего двоичного файла, включающего любое время проверки для хранилищ, в которые вы публикуете.
Подключаемый модуль CodePush помогает мгновенно улучшить продукт перед конечными пользователями, сохраняя javaScript и изображения, синхронизированные с обновлениями, выпущенными на сервер CodePush. Таким образом, ваше приложение получает преимущества автономного мобильного интерфейса, а также гибкость веб-приложений при загрузке обновлений на стороне, как только они будут доступны.
Чтобы конечные пользователи всегда имели функционирующую версию приложения, подключаемый модуль CodePush поддерживает копию предыдущего обновления, чтобы в случае случайной отправки обновления, включающего сбой, он может автоматически откатить. Таким образом, вы можете убедиться, что ваша новая гибкость выпуска не приведет к блокировке пользователей, прежде чем у вас есть возможность откатить на сервере.
Примечание.
Любые изменения продукта, которые касаются машинного кода (например, изменение файла AppDelegate.m/MainActivity.java , добавление нового подключаемого модуля), не могут распространяться через CodePush, и поэтому их необходимо обновить с помощью соответствующего хранилища.
Поддерживаемые платформы React Native
- iOS (7+)
- Android (5.0+)
- Windows (UWP)
Мы стараемся поддерживать обратную совместимость подключаемого модуля с предыдущими версиями React Native, но из-за природы платформы, а также наличие критических изменений между выпусками, возможно, вам потребуется использовать определенную версию подключаемого модуля CodePush для поддержки точной версии React Native, которую вы используете. В следующей таблице описывается, какие версии подключаемого модуля CodePush официально поддерживают соответствующие версии React Native:
Версии React Native | Поддержка версий CodePush |
---|---|
<0.14 | Не поддерживается |
v0.14 | версия 1.3 (появилась поддержка Android) |
v0.15-v0.18 | версия 1.4-v1.6 (представлена поддержка ресурсов iOS) |
v0.19-v0.28 | версия 1.7-v1.17 (появилась поддержка активов Android) |
v0.29-v0.30 | v1.13-v1.17 (код рефакторинга RN для машинного размещения) |
v0.31-v0.33 | v1.14.6-v1.17 (RN рефакторинговый код машинного размещения) |
v0.34-v0.35 | v1.15-v1.17 (код рефакторингового машинного размещения RN) |
v0.36-v0.39 | v1.16-v1.17 (рефакторинг рефакторинг RN) |
v0.40-v0.42 | v1.17 (RN рефакторингированные файлы заголовков iOS) |
v0.43-v0.44 | версии 2.0+ (рефакторинг RN зависимостей uimanager) |
v0.45 | v3.0+ (код диспетчера рефакторингов RN) |
v0.46 | v4.0+ (код загрузчика пакета RN рефакторинга js) |
v0.46-v0.53 | v5.1+ (RN удалена неиспользуемая регистрация модулей JS) |
v0.54-v0.55 | v5.3+ (интеграция с подключаемым модулем Android Gradle 3.x) |
v0.56-v0.58 | v5.4+ (обновленные версии RN для средств Android) |
v0.59 | v5.6+ (код загрузчика пакета RN рефакторинга js) |
v0.60-v0.61 | версия 6.0+ (RN, перенесенный на автоматическую связь) |
Мы трудимся, чтобы реагировать на новые выпуски React Native, но они иногда прерывают нас. Мы обновим эту диаграмму с каждым выпуском React Native, чтобы пользователи могли проверить, что такое официальная поддержка.
Поддерживаемые компоненты
При использовании системы ресурсов React Native (например, с помощью require("./foo.png")
синтаксиса) следующий список представляет набор основных компонентов (и реквизитов), которые поддерживают обновление их ссылочных изображений и видео с помощью CodePush:
Компонент | Prop(s) |
---|---|
Image |
source |
MapView.Marker (Требуется 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 |
Следующий список представляет набор компонентов (и реквизитов), которые в настоящее время не поддерживают обновление своих ресурсов с помощью CodePush, из-за их зависимости от статических изображений и видео (например, с помощью синтаксиса { uri: "foo" }
):
Компонент | Prop(s) |
---|---|
SliderIOS |
maximumTrackImage , , minimumTrackImage thumbImage trackImage |
Video |
source |
Мы обновим этот список по мере выпуска новых основных компонентов, которые поддерживают ссылки на ресурсы, чтобы пользователи знали, что именно они могут ожидать обновления с помощью CodePush.
Примечание.
CodePush работает только с компонентами Video при использовании require
в исходном prop. Например:
<Video source={require("./foo.mp4")} />
Соответствие руководства по магазинам
Хотя Google Play и внутренние распределенные приложения (например, Enterprise, Fabric, App Center) не имеют ограничений на публикацию обновлений с помощью CodePush, магазин приложений iOS и соответствующие правила имеют более точные правила, которые следует учитывать перед интеграцией решения в приложении.
Лицензионное соглашение о программе разработчиков Apple в соответствии с пунктом 3.3.2, полностью разрешено обновление JavaScript и ресурсов в последней версии (20210607), которое можно скачать здесь , это решение еще шире:
Интерпретированный код может быть скачан в приложение, но только до тех пор, пока такой код не изменяется: (a) не изменяет основную цель приложения путем предоставления функций или функций, которые не соответствуют предполагаемой и объявленной цели приложения как отправленного в App Store, (b) не создает магазин или магазин для других кодов или приложений, и (c) не пропускают подписывание, песочницу или другие функции безопасности ОС.
CodePush позволяет выполнять эти правила в полном соответствии, пока вы отправляете обновление не значительно отклоняет продукт от исходного утвержденного намерения App Store.
Чтобы еще больше оставаться в соответствии с рекомендациями Apple, мы рекомендуем, чтобы распределенные приложения App Store не могли включить updateDialog
этот параметр при вызове sync
, так как в руководстве по обзору App Store он написал:
Приложения не должны заставлять пользователей оценивать приложение, просматривать приложение, скачивать другие приложения или другие аналогичные действия для доступа к функциям, содержимому или использованию приложения.
Это не обязательно updateDialog
так, так как он не заставит пользователя скачать новую версию, но, по крайней мере, вы должны знать об этом решении, если вы решите показать его.
Примеры приложений и начальных приложений
Сообщество React Native создало потрясающие приложения с открытым исходным кодом, которые могут служить примерами для разработчиков, которые начинают работу. Ниже приведен список приложений OSS React Native, которые также используют CodePush, и можно использовать для просмотра того, как другие пользователи используют службу:
- Приложение F8 — официальное приложение конференции для F8 2016.
- Feline for Product Hunt - Клиент Android для Product Hunt .
- GeoEncoding — приложение Lynx IT Digital, которое демонстрирует использование многочисленных компонентов и модулей React Native.
- Математические факты - приложение Хан академии, чтобы помочь запомнить математические факты проще.
Кроме того, если вы ищете начать работу с React Native + CodePush, и ищете потрясающий начальный комплект, вы должны проверить следующее:
-
Примечание.
Если вы разработали приложение React Native с помощью CodePush, это открытый исходный код, сообщите нам об этом. Мы хотели бы добавить его в этот список!
Непрерывная интеграция и доставка
Помимо использования cli CodePush для обновления выпуска вручную, мы считаем, что важно создать повторяемое и устойчивое решение для непрерывной доставки обновлений в приложение. Таким образом, достаточно просто для вас или вашей команды создавать и поддерживать ритм гибких развертываний. Чтобы помочь в настройке конвейера CD на основе CodePush, ознакомьтесь со следующими интеграции с различными серверами CI:
- Azure DevOps — Azure DevOps (прежнее название — VSTS) также имеет расширения для публикации в Центре приложений и в Магазине Google Play , поэтому он предоставляет довольно большое решение для мобильных компакт-дисков в целом.
- Трэвис CI
Использование TypeScript
Этот модуль поставляет свой *.d.ts
файл как часть пакета NPM, который позволяет import
ему и получать intellisense в вспомогательных редакторах (например, Visual Studio Code), а также проверку типа компиляции, если вы используете TypeScript. В большинстве случаев это поведение должно работать из поля, однако если вы указали es6
в качестве значения для параметра компилятора module
target
или параметра компилятора в tsconfig.json
файле, убедитесь, что этот параметр node
также задан.moduleResolution
Это гарантирует, что компилятор TypeScript будет искать определения node_modules
типов импортированных модулей. В противном случае при попытке импортировать react-native-code-push
модуль появится ошибка, error TS2307: Cannot find module 'react-native-code-push'
как показано ниже.