【发布时间】:2019-08-06 02:30:47
【问题描述】:
我是 Expo 的新手,但到目前为止,不必打开 Android Studio / Xcode 就可以在本地运行我的应用程序,这看起来非常简洁。无需接触这些东西,开发起来更加方便。
但是,我想在我的应用中加入应用购买(订阅),从我目前所做的研究来看,Expo 的解决方案 (https://docs.expo.io/versions/latest/sdk/in-app-purchases/) 似乎并不成熟。
我发现了这个用于应用内购买的 npm 包,它看起来很有希望:https://github.com/dooboolab/react-native-iap。但是 Expo 不支持它,我觉得不值得为了这一功能而放弃 Expo 的所有好处。
我注意到这里的问题中有一条非常有趣的评论:https://github.com/dooboolab/react-native-iap/issues/174#issuecomment-393704277
此人建议我可以继续在 Expo 中使用 master 分支,然后在时间准备好时按照这些步骤进行弹出和部署。我从来没有这样做过,但我想知道这是否可行:
在主人身上:
1) 运行npm install --save react-native-iap,但不要运行react-native link react-native-iap。
2) 使用此代码包装我的应用内购买模块。这样你的代码在调用 IAP 方法时不会崩溃
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
return !!NativeModules.RNIapModule;
}
3) 继续使用 Expo 开发,如果 !hasIAP() 则跳过 IAP 内容
在用于最终 QA/部署的单独分支上:
1) 创建一个名为detached的新分支
2) 运行expo eject
3) 运行 react-native link react-native-iap 和此处列出的所有其他手动安装步骤:https://github.com/dooboolab/react-native-iap#manual-installation
4) 对所有内容进行质量检查
5) 部署
有没有人有过这种混合的“开发博览会,生产不博览会”方法的经验?
【问题讨论】:
-
你是说你在不断开Expo的情况下使用模块?
-
@hongdevelop 我想继续使用 Expo 进行编码,就好像模块在那里一样,只有在我部署之前,我才会弹出 Expo 并安装/QA IAP 的东西。我的问题是这个理论是否可行。就像我所有其他依赖 Expo 托管工作流的 Expo 依赖项会发生什么一样?他们会在弹出后神奇地正确安装吗?
-
如果您弹出并使用
Expo,您可以像使用默认的React-native项目一样使用它。Android文件夹和iOS文件夹已创建,您将在创建它们之前输入适当的包名称。当您弹出Expo时,您已安装的模块和Expo中的模块将被添加到包列表中。检查MainApplication.java以获取Android或Info.list文件以获取iOS。有些东西不适用于在您弹出Expo后负责设置的App.json设置。可以参考官方文档设置。 -
Expo 退出后,
React-native link命令执行得非常出色。 -
其实我也是通过expo做了一个项目,把expo弹出了,用了你问的那个模块。
标签: react-native in-app-purchase expo in-app-billing in-app-subscription