11

我目前正在做 React Native 的研发。

我有一个要求,我需要在应用程序中添加一些模块(基本上是代码)。

在原生 iOS 应用程序中不可能这样做。

在使用AppHubCodePush等工具的 React 原生应用程序中,我们可以将构建推送到生产应用程序。有一个库React Native Auto Updater用于下载最新的 js 包,但现在已弃用。

使用上述工具,我需要推送构建。

我有一个场景,我希望应用程序获取并下载保存在远程服务器上的包。

那么,如何下载 JS 代码以从 App 进行 REST API 调用并根据新的 JS 代码刷新应用程序?

我担心的是关于 JS 代码的下载。我很清楚应用程序的自动更新部分。

提前致谢。

4

2 回答 2

14

尤里卡!

我通过执行以下操作来完成此操作:

  1. 创建一个离线 jsbundle 参考这个链接

    react-native bundle --platform android --dev false --entry-file index.android.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app /src/main/res/

  2. 创建一个用于下载 js 包的 Rest API。参考这个链接

    我用过SpringBoot。确保将其添加到您的 API 中会生成“text/javascript”

  3. 在您的应用程序中下载 jsbundle,存储并获取包的路径。

  4. 在 AppDelegate.m [for iOS] 和 ReactApplication 类 [for Android] 中重置 React native 的 bundle 路径

于 2018-02-22T09:47:42.737 回答
3

试试react-native-dynamic-bundle包:https ://github.com/mauritsd/react-native-dynamic-bundle

此外,您可以使用react-native-fs下载捆绑包:

import RNFS from 'react-native-fs'

export const download = async (fromUrl, bundleName) => {
  return RNFS.downloadFile({
    fromUrl,
    toFile: RNFS.DocumentDirectoryPath + `/${bundleName}.bundle`,
  }).promise
}

问候,胡安

于 2019-02-20T22:18:51.263 回答