React-native-iap: 在博览会上进行应用内购买

创建于 2018-05-31  ·  38评论  ·  资料来源: dooboolab/react-native-iap

你好,

我们正在使用Expo来创建我们的项目。 在我们的项目中,一个重要主题是应用内购买。 你可以帮帮我吗
如何使用expo实施应用内购买以及实现此目标需要遵循的必要步骤。

❓ question 🚶🏻 stale

最有用的评论

简单地:

  • 创建一个新分支detached
  • 运行exp detach
  • 做所有通常做的相同的事情
  • 切换回master以添加js代码
  • master编码时,请使用以下代码包装您的IAP模块代码:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • 这样,您的代码在调用IAP方法时不会崩溃
  • 部署或测试IAP时,请使用分离的分支-或完全跳过这些分支并流氓> :)

通常的想法是exp detach仅显示/ios/android文件夹,因此您可以将项目用作RN应用。
您仍将获得常规Expo应用程序的所有功能,只需使用fastlane进行部署即可,因此您不需要使用太多本机工具。
最后,分支对于更新SDK版本很有用。 如果由于某种原因更新时遇到问题,则可以再次分离并再次添加此库。

所有38条评论

简单地:

  • 创建一个新分支detached
  • 运行exp detach
  • 做所有通常做的相同的事情
  • 切换回master以添加js代码
  • master编码时,请使用以下代码包装您的IAP模块代码:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • 这样,您的代码在调用IAP方法时不会崩溃
  • 部署或测试IAP时,请使用分离的分支-或完全跳过这些分支并流氓> :)

通常的想法是exp detach仅显示/ios/android文件夹,因此您可以将项目用作RN应用。
您仍将获得常规Expo应用程序的所有功能,只需使用fastlane进行部署即可,因此您不需要使用太多本机工具。
最后,分支对于更新SDK版本很有用。 如果由于某种原因更新时遇到问题,则可以再次分离并再次添加此库。

问题是,为什么首先要从世博会开始。

@ImArtur

至少对我来说,与必须创建本机版本相比,Expo开发环境要容易得多。 同样,拥有带有单个界面的免费多平台推送通知服务也非常方便。

@KevinColemanInc是的。 我了解是因为我之前是大量的博览会用户。 我真的很希望expo集成iap模块。 但是我知道,博览会要维护包含iap功能的环境并不容易。 苹果将​​首先拒绝应用商店中的Expo Client应用。

@dooboolab

正如其他人所提议的那样,如果只是将其存入测试中,我会很酷。 我只是喜欢expo的开发经验。

我正在考虑将其分解为git中自己的分支,并保持dev分支博览会的友好性。 一旦部署完成,我可以合并弹出的代码,对其进行测试,然后他们部署应用程序。

@ImArtur的问题是“在博览会中进行应用内购买”。 您可以在此处了解Expo的优缺点: https :

@EvanBacon

您好,感谢您的撰写! 我想知道(分离后)您是否应该在“分离”分支中继续使用exp或xcode进行构建? 谢谢!

此外,@ EvanBacon ,您如何在iOS上对此进行测试? 您要推送一个新版本,然后在那里进行测试,还是以前可以在本地测试iaps?

如果我知道在开发的某个时候需要进行应用内购买,是否仍应使用CRNA? 还是从一开始就直接转到RN native?

当然,除非expo devs很快实现expo应用程序内购买。

@edoantonioco我已经与博览会合作了。 我只是制作了一个带有用于购买商品的iap按钮的页面,并且仅在测试购买和使用Xcode进行构建时按这些按钮。 否则,我将使用Expo构建。 很棒!

抱歉耽搁了。 分离时,您将添加本机代码并将其构建到设备上。 然后,您可以像expo客户程序一样使用该版本(仅适用于单个应用程序)。 我仍然建议坚持使用世博会。 CRNA由Expo维护,我们的重点主要放在使文库在那种环境下工作。 Vanilla React Native将需要大量不必要的设置,并且需要您对模块的内部运作有更多的了解。

您好,既然您提出了这个话题。 如果在应用程序内购买,世博会很难处理。 在不与Expo分离的情况下将应用货币化的建议路线图是什么,因为对我来说,与许多其他人一样,我利用Expo是因为总体体验比RN友好得多,并且比在两个平台上原生都更简单。 因此,您可以仅通过PayPal使用订阅计划还是通过信用卡接收付款? 例如,是否可以通过使用Web视图将Google和Apple内置在Expo App中? 谢谢。

@inglesuniversal

如果有价值的话,我们最终放弃了博览会,因为我们厌倦了等待解决此类问题。

它无疑增加了测试和支持某些功能(如通知)的难度,但是至少我的开发人员可以停止告诉我,“这是不可能的,因为expo不支持它”。

世博会已经宣布了这个最近关于2019年未来的计划,您将能够链接native modules即可。

我一直在尝试使@EvanBacon的代码正常工作,但我的NativeModules为空,结果RNIapModule未定义。 (至少在iOS上)

其他人遇到过这个问题吗? 这是否意味着我没有正确链接?

FWIW,react-native链接似乎有效。

$ react-native link react-native-iap
rnpm-install info Linking react-native-iap ios dependency 
rnpm-install info Platform 'ios' module react-native-iap has been successfully linked 
rnpm-install info Linking react-native-iap android dependency 
rnpm-install info Platform 'android' module react-native-iap has been successfully linked 

但我怀疑我可能需要手动链接,到目前为止我还无法完成。 我找不到库文件夹。
https://forums.expo.io/t/trouble-linking-with-expokit-unable-to-find-libraries-in-xcode/16710

@EvanBacon嗨,先生,
您能详细告诉我吗?
我尝试了RN IAP我链接了它
然后我exp超脱。
然后我转到ios目录并运行pod install现在它正在安装所有内容
我下一步该怎么办?
谢谢

@cellis你能告诉我更多你如何使我正在尝试1周的inapp工作吗,现在可以显示代码吗?
谢谢
Pod安装之后,您是使用expo还是xcode构建的?
谢谢

做所有通常做的相同的事情
切换回主机以添加js代码
在主代码中编码时,请使用以下代码包装IAP模块代码:
@EvanBacon以上

简单地:

  • 创建一个新分支detached
  • 运行exp detach
  • 做所有通常做的相同的事情
  • 切换回master以添加js代码
  • master编码时,请使用以下代码包装您的IAP模块代码:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • 这样,您的代码在调用IAP方法时不会崩溃
  • 部署或测试IAP时,请使用分离的分支-或完全跳过这些分支并流氓> :)

通常的想法是exp detach仅显示/ios/android文件夹,因此您可以将项目用作RN应用。
您仍将获得常规Expo应用程序的所有功能,只需使用fastlane进行部署即可,因此您不需要使用太多本机工具。
最后,分支对于更新SDK版本很有用。 如果由于某种原因更新时遇到问题,则可以再次分离并再次添加此库。

嗨,埃文,
感谢您的建议。 我遵循了建议,并且没有错误(我已经手动链接了react-native-iap)。 但是,即使RNIap.initConnection(); hasIAP函数也返回false。 返回true。 我用这段简单的代码对其进行测试。

async componentDidMount() {
    try {
      const result = await RNIap.initConnection();
      console.log("hasIAP " + hasIAP())  // returns false
      console.log('result', result);   // returns true
    } catch (err) {
      console.warn(err.code, err.message);
    }
}

您知道可能是什么问题吗? (或任何阅读此书的人)

根据文档https://docs.expo.io/versions/v32.0.0/sdk/payments/ ,您是否已在设备上设置付款? (使用模拟器进行测试是没有意义的)

像本博文中的先前用户一样,世博会本季度的最佳意图是实现一种构建应用程序的方式,并能够导入本机React Native库。 现在,使用CLI启动新项目时,它将显示Beta。 希望此问题能尽快解决。

嘿,看来这个问题最近没有任何活动。 问题是否已解决,还是仍然需要社区的关注? 如果没有其他活动,则可能已关闭此问题。 您也可以将此问题标记为“供讨论”或“良好的第一期”,我将其保留为开放状态。 感谢你的贡献。

请保持开放状态,并帮助我们找到一种方法使Expo SDK版本33.0开始成为现实

有没有人对此问题有任何更新?

https://docs.expo.io/versions/latest/sdk/in-app-purchases/

更新:对不起,错过了以下内容:

该模块当前仅在裸工作流程中可用。

@kkarkos使用Expo自己的应用程序内购买模块,您仍然必须退出Expo应用程序(在可预见的将来),因此它并不能真正解决问题。

如果有人可以就如何欺骗@EvanBacon提供更详尽的指导,请与我们分享。 甚至是演示应用程序?

@TheInternet我遇到了缺少“库”文件夹的相同问题。 您是否了解如何在iOS上正确安装它?

@inglesuniversal
我很有趣,您是否找到了一些有趣的方法来通过应用获利而又不会将其与博览会分离?

我们可以在webView中使用电子支付吗? 合法吗

据我所知,您可以将第三方解决方案用作Web应用程序(如Stripe或PayPal),但不能在AppStore或PlayStore中使用。 否则,您的应用可能会被踢出或删除,直到您通过自从我开始使用Expo以来我们一直在等待的API正确地操作它为止。

只要您购买外部商品和服务(例如,在亚马逊上购买产品或在Uber应用程序中付款),就可以在应用程序中使用Stripe或Paypal,但不能使用Stripe来解锁应用程序软件功能(例如销售游戏代币或高级功能)

感谢KevinColemanInc的评论...您是否偶然知道是否出售会员资格或电影租赁,云存储,在线课程的定期付款...可以使用App->(PlayStore或AppStore)中的Stripe或PayPal在外部进行付款? 感谢您的反馈意见!

@inglesuniversal

如果您想解锁应用程序中的功能(例如:订阅,游戏内货币,游戏级别,访问高级内容或解锁完整版)

这些是Apple的准则:
https://developer.apple.com/app-store/review/guidelines/#in -app-purchase

我认为您所描述的大部分内容都属于“溢价内容”。 Netflix必须缴纳苹果税

如果您在移动设备上与他们注册,Dropbox似乎还要缴纳苹果税。 我将检查Udemy的应用程序,看看他们是否还使用IAP。

嘿,看来这个问题最近没有任何活动。 问题是否已解决,还是仍然需要社区的关注? 如果没有其他活动,则可能已关闭此问题。 您也可以将此问题标记为“供讨论”或“良好的第一期”,我将其保留为开放状态。 感谢你的贡献。

简单地:

  • 创建一个新分支detached
  • 运行exp detach
  • 做所有通常做的相同的事情
  • 切换回master以添加js代码
  • master编码时,请使用以下代码包装您的IAP模块代码:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • 这样,您的代码在调用IAP方法时不会崩溃
  • 部署或测试IAP时,请使用分离的分支-或完全跳过这些分支并流氓> :)

通常的想法是exp detach仅显示/ios/android文件夹,因此您可以将项目用作RN应用。
您仍将获得常规Expo应用程序的所有功能,只需使用fastlane进行部署即可,因此您不需要使用太多本机工具。
最后,分支对于更新SDK版本很有用。 如果由于某种原因更新时遇到问题,则可以再次分离并再次添加此库。

抱歉,我这么密集,但这是否意味着您将IAP代码分别添加到每个分支(如果必须将它们“包装”为expo分支),然后每次添加时仅在新分支上重新弹出向主管理员展示EXPO代码,还是您随时合并分支机构? 而且这仍然是将IAP添加到托管博览会应用程序的最佳方法吗? 我刚刚完成了我的第一个大型应用程序,需要以某种方式添加此功能,并且在分支中执行此操作似乎是一个安全的好选择-我只想确保自己了解工作流程! 我还必须说我爱博览会! 这是与本地人互动的绝妙方法,没有它,我永远不会走得那么远,所以谢谢您并继续努力!!!

嘿,看来这个问题最近没有任何活动。 问题是否已解决,还是仍然需要社区的关注? 如果没有其他活动,则可能已关闭此问题。 您也可以将此问题标记为“供讨论”或“良好的第一期”,我将其保留为开放状态。 感谢你的贡献。

长时间不活动后结束此问题。 如果此问题在最新版本中仍然存在,请随时创建具有最新信息的新问题。

简单地:

  • 创建一个新分支detached
  • 运行exp detach
  • 做所有通常做的相同的事情
  • 切换回master以添加js代码
  • master编码时,请使用以下代码包装您的IAP模块代码:
import { NativeModules } from 'react-native';
const { RNIapModule } = NativeModules;
function hasIAP() {
  return !!NativeModules.RNIapModule;
}
  • 这样,您的代码在调用IAP方法时不会崩溃
  • 部署或测试IAP时,请使用分离的分支-或完全跳过这些分支并流氓> :)

通常的想法是exp detach仅显示/ios/android文件夹,因此您可以将项目用作RN应用。
您仍将获得常规Expo应用程序的所有功能,只需使用fastlane进行部署即可,因此您不需要使用太多本机工具。
最后,分支对于更新SDK版本很有用。 如果由于某种原因更新时遇到问题,则可以再次分离并再次添加此库。

抱歉,我这么密集,但这是否意味着您将IAP代码分别添加到每个分支(如果必须将它们“包装”为expo分支),然后每次添加时仅在新分支上重新弹出向主管理员展示EXPO代码,还是您随时合并分支机构? 而且这仍然是将IAP添加到托管博览会应用程序的最佳方法吗? 我刚刚完成了我的第一个大型应用程序,需要以某种方式添加此功能,并且在分支中执行此操作似乎是一个安全的好选择-我只想确保自己了解工作流程! 我还必须说我爱博览会! 这是与本地人互动的绝妙方法,没有它,我永远不会走得那么远,所以谢谢您并继续努力!!!

嗨! 找到答案了吗? 您是如何实现的?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

MacMillan13 picture MacMillan13  ·  3评论

bakedbean picture bakedbean  ·  5评论

Gribadze picture Gribadze  ·  4评论

coldfins picture coldfins  ·  3评论

hakkikonu picture hakkikonu  ·  4评论