我需要创建一个包含其他应用程序并可以运行它们的移动应用程序。它基本上就像一个“应用程序中心”,其中有一个应用程序列表(我们在服务器上发布),用户可以打开其中一个应用程序,从而导致该应用程序被打开。
想一想世博会的应用程序,用户可以扫描他的应用程序的二维码,它会自动编译并打开,这已经接近我想要的功能了。
可以打开的应用程序是使用react-native创建的,并存储在Gitlab的GIT存储库中。
考虑以下示例:
通过启动我们称之为的应用程序应用中心,将显示应用程序列表。当用户点击其中之一时,它将在内部打开。
这是一个“更技术性”的例子:
- 应用中心上线
- 该应用程序将从服务器获取要显示的应用程序列表,例如通过调用https://myappcenterserver.com/all-apps
- 它们将被显示并监听新闻事件
- 假设用户按下了一个名为1st App (我知道这是一个非常糟糕的名字)其中有AP123作为身份证
- 我们的应用程序将通过调用向服务器发送请求https://myappcenterserver.com/app/AP123,这将从 Git 存储库返回应用程序的反应本机源代码
- 我们的应用程序中心将编译步骤中的代码5并运行它
所以根据你的说法,这是我应该考虑的最佳方法。
我应该使用远程代码解决方案,例如 CodePush 或 react-native-dynamic-bundle 吗?它们适合这种背景吗?
这可以部分通过 CodePush 实现:
- 为不同的应用程序创建多个CodePush环境。 (APP1 APP2 等)
- 当您启动应用程序时,进行 API 调用以获取应用程序列表和相应的代码推送部署密钥。
- 在按钮上单击 codepush.sync(deployment_key) → 重新启动应用程序,然后直接跳转到您的应用程序(可能将应用程序名称存储在 AsyncStorage 中并通过导航直接跳转到它)
然而,警告可能会破坏交易:
- 选择应用程序后,您的应用程序将重新加载
- 主要 React 版本升级(原生 java/oc 更改)将需要商店发布,因为它无法通过 JS 处理(可能不会破坏交易)
还有一个更好的方法:
- 创建一个容器应用程序和一个 CodePush 环境
- 有一个像这样的中央配置
[{app:"A1", version: 2.0.0}, {app: "A2", version: 1.2.0}]
- 所有其他应用程序 A1、A2、A3 都公开可以作为容器应用程序的插件公开的对象。
- 您的 CI 处理从多个存储库(或者更好 - 由不同存储库生成的多个 npm 包)动态构建应用程序,并将 JS 推送到 CodePush 服务器。
- 它将配置中的所有应用程序(bash 脚本添加到yarn add A1、yarn add a2、yarn add a3)添加到容器中,
- 您的应用程序读取配置并加载 A1 A2 等。
- CD 创建新的 CodePush 版本。
每当中央配置发生更改时(例如,在 A1 发布 npm 包后,他们更新中央配置),就会重复此操作。
它解决了重新启动的问题,因为您已将所有捆绑包构建到一个捆绑包中。
代码推送:https://learn.microsoft.com/en-us/appcenter/distribution/codepush/react-native#dynamic-deployment-assignment
或者您可能想查看世博会的代码https://github.com/expo/expo/blob/d56076241cef55b0a93a5c0bb8dc690270e42dcb/home/screens/QRCodeScreen.android.js#L89
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)