[ReactNative翻译]紧急情况下的 OTA(空中传输)运输

203 阅读9分钟

本文由 简悦 SimpRead转码,原文地址 www.callstack.com

空中发货可能会为您的应用程序省去很多麻烦。了解原因以及如何使您的......。

以下文章是React Native 优化终极指南的一部分,讨论的主题是 OTA 更新。本文由 Expo 合著,他们分享了对 EAS Update 的见解。

为什么这很重要?

传统的应用程序更新方式太慢,会浪费您宝贵的时间。不过,与原生应用程序相比,React Native 应用程序在这方面具有优势。本文将解释空中下载(OTA)更新对您的业务意味着什么以及如何实施。

在基于《React Native 优化终极指南》的其他博文中,我们将讨论以下与稳定性相关的话题:

为什么要通过 OTA 即时提交关键更新和修复?

在移动平台上发送更新的传统模式与我们在为其他平台编写 JavaScript 应用程序时所了解的模式有着本质区别。与网络不同,移动部署要复杂得多,而且开箱即具有更好的安全性。我们将在移动应用中的持续部署 一文中更详细地讨论这一话题。

OTA 更新(或缺乏更新)对您的业务意味着什么?

每次更新,无论开发人员多么迅速地完成,通常都需要等待一段时间,App Store 和 Play Store 团队会根据他们的政策和最佳实践审查您的产品。

在所有苹果平台上,这一过程尤其具有挑战性,因为在这些平台上,应用程序经常会因为不遵循某些政策或不符合用户界面的要求标准而被下架或拒绝。值得庆幸的是,使用 React Native 可以将应用程序被拒绝的风险降到最低,因为您只需处理应用程序的 JavaScript 部分。React Native 核心团队确保对框架所做的所有更改都不会影响应用程序的成功提交。

因此,提交过程需要一段时间。如果您即将发布一个关键更新,那么每一分钟都很重要。

幸运的是,有了 React Native,您可以跳过 App Store 审核流程,直接向用户动态发送 JavaScript 更改。这种技术通常被称为空中更新。它可以让您按照所选的技术,立即为所有用户更改应用程序的外观。

当出现关键错误时,几分钟或几小时都至关重要。不要等待苹果和谷歌审核你的应用程序

如果您的应用程序没有做好 OTA 就绪准备,那么只要苹果/谷歌审查您的产品并允许其发布,您的应用程序就有可能在许多设备上留下关键错误。

尽管审查时间在过去几年里已经大大缩短,但如果错误通过测试管道进入生产阶段,能够立即恢复仍然是一个很好的逃生门。

如何使用 App Center/CodePush 或 EAS Update 实施 OTA 更新

如前所述,React Native 已为 OTA 做好准备。这意味着其架构和设计选择使此类更新成为可能。不过,它并不附带执行此类操作的基础架构。为此,您需要集成一个第三方服务,该服务拥有自己的基础架构。

在应用程序中实现 OTA 有几种常用方法。第一种 OTA 更新工具是 CodePush,该服务现已成为微软 App Center 套件的一部分。第二个工具是 Expo 的 EAS Update

应用中心/代码推送

让我们先来看看 App Center/Code Push。

配置本地端

要将 CodePush 集成到您的应用程序中,请分别按照 iOSAndroid 的要求步骤操作。我们决定链接到官方指南,而不是在此包含这些步骤,因为它们包含额外的本地代码应用,而这很可能在未来几个月内发生变化。

配置 JavaScript 端

在本地端设置好服务后,您就可以使用 JavaScript API 启用更新并定义更新发生的时间。在应用程序启动时获取更新的方法之一是使用 "codePush "封装器并封装您的主组件。

import React from 'react';
import { View } from 'react-native';
import codePush from 'react-native-code-push';
const MyApp = () => <View />;
export default codePush(MyApp);

基本代码推送集成

就是这样!如果您已经在本地端完成了所有更改,那么您的应用程序现在就可以进行 OTA 操作了。对于更高级的用例,您还可以更改何时检查更新、何时下载和应用更新的默认设置。例如,您可以强制 CodePush 在每次应用程序返回前台时检查更新,并在下次恢复时安装更新。

下图代码片段演示了这种解决方案:

import React from 'react';
import { View } from 'react-native';
import codePush from 'react-native-code-push';

const MyApp = () => <View />;

export default codePush({
  updateDialog: true,
  checkFrequency: codePush.CheckFrequency.ON_APP_RESUME,
  installMode: codePush.InstallMode.ON_NEXT_RESUME,
})(MyApp);

自定义代码推送设置

向应用程序发送更新

在 React Native 的 JavaScript 和本机端配置好 CodePush 后,就可以启动更新并让新客户享用了。我们可以通过 command line,使用 App Center CLI 来完成这项工作:

npm install -g appcenter-cli
appcenter login

然后,我们继续使用发布命令捆绑 React Native 资产和文件,并将它们发送到云端:

appcenter codepush release-react -a <ownerName>/<appName>

这些步骤完成后,所有运行应用程序的用户都将使用您在上一节中配置的体验接收更新。

在发布新的 CodePush 版本之前,您必须在 App Center 面板中创建一个应用程序。这将为您提供所需的 ownerName 和 appName。如前所述,您可以通过访问 App Center 的 UI 或使用 App Center CLI 来完成此操作。

EAS 更新

EAS 提供的服务之一是 EAS Update。它为 React Native 应用程序中的即时更新提供了一流的支持,如果您已经在使用 Expo,使用起来尤其方便。EAS Update 通过全球 CDN 从边缘提供更新,并为支持 HTTP/3 等现代网络协议的客户端使用这些协议。它实现了 Expo Updates 协议,这是一个开放的即时更新标准规范。与其他 Expo 产品一样,EAS Update 可提供卓越的 DX 性能,使用起来非常愉快。

您需要安装 eas-cli 软件包。我们已经在有关持续集成的文章中介绍了如何安装。要让 EAS Update 在您的项目中使用裸 React Native 工作流程,您需要在项目中设置 Expo。请参阅指南 使其正常工作。 ‍

在继续下面的章节之前,请确保您已在项目中配置了 EAS Build。您可以使用 EAS Build 或其他工具来构建应用程序。如果
如果你不想使用 EAS Build,这里有指南告诉你该怎么做。 ‍

设置构建工具和 EAS 更新

信息: 要构建应用程序,您可以使用 EAS Build 或其他工具。如果您不想使用 EAS Build,这里有操作指南

eas update:configure

创建构建

按照以下步骤,使用 EAS Build 或其他工具创建应用程序的构建版。新的构建版将包含 expo-updates 本机模块,该模块将负责下载和启动更新。将构建版安装到设备或模拟器或仿真器上。

创建更新

在设备上安装新版本后,我们就可以向其发送更新了!对应用程序的 JS 部分做一个可见的小改动,以帮助您确认设备何时运行新更新。现在,您可以运行命令创建更新并将其发布到 EAS。

eas update --branch production --message "Fixed a bug."

完成这些步骤后,所有运行应用程序的用户都将收到包含您所做更改的更新。默认情况下,当应用程序启动时,expo-updates 会在后台检查更新,这种行为属于配置。使用默认行为时,只需终止在设备上运行的应用程序,然后启动它来获取新的更新,这通常只需短短几分钟。终止并再次启动应用程序,您就可以看到新的更改!

您可以通过多种不同方式配置 EAS Update。EAS Update 有一个叫做通道的概念,它是一种向应用程序的不同构建发送不同更新的方式。还有更高级的概念,如分支,它可以实现定制的部署工作流程,其灵感来自世界上一些最大的移动开发团队。

EAS Update 在需要将变更部署到生产环境时非常方便,在开发过程中也非常方便。它是与队友分享工作成果的一种非常方便快捷的方式。

通过 OTA 更新向用户即时发送关键修复和某些内容的好处

通过将 OTA 更新集成到应用程序中,您可以在几分钟内向所有用户发送 JavaScript 更新。这种可能性对于修复重大错误或发送即时补丁至关重要。

例如,您的后端可能会停止工作,导致启动时崩溃。这可能是一个处理不当的错误--您在开发过程中从未遇到过后端故障,因此忘记了处理此类边缘情况。您可以通过显示回退信息并告知用户该问题来解决问题。开发过程大约需要一个小时,而实际更新和审核过程可能需要数小时甚至数天。

如果设置了 OTA 更新,您就可以在几分钟内对此做出反应,而不必担心糟糕的用户体验会影响大多数用户。


www.deepl.com 翻译