React-native-iap: getProducts始终返回null

创建于 2018-04-13  ·  34评论  ·  资料来源: dooboolab/react-native-iap

@dooboolab我在prepare方法之后调用getProducts方法后收到空数组。

📱 iOS 🙏 help wanted 🤖 android

最有用的评论

@axelkennedal对那些自愿度过宝贵时间来帮助您的人会变得被动,不会让您

@JJMoon @dooboolab感谢您的出色工作

所有34条评论

@ companytest1206这不应该发生。 您能否分享更多信息? 例如您的代码,产品状态,操作系统,设备等。有关应用内产品配置,请参阅Blog

这是我的代码。

异步componentDidMount(){
尝试{
等待RNIap.prepare();
const products =等待RNIap.getProducts(itemSkus);
console.log('产品',产品);
}
抓住(错误){
console.warn(err.code,err.message);
}
this.fetchData();

}

我的应用程序状态为Alpha模式。 使用nexus 6进行调试。

@ companytest1206您的代码似乎正常。 您在playstoreitunesconnect产品配置如何? 请遵循自述文件并检查我在此处发布的所有内容。

我有同样的问题。

我有同样的问题,但是我得到了一个空数组(不是空数组,无论是什么意思)。 我在这里贴了

@systemride @sanilcgs您能否分享使用getProducts方法遇到的平台?

我在使用MacOS 10.13.4 @dooboolab开发的Android 7.0(在LG G6上运行)上遇到

使用create-react-native-app包创建了我的应用。 为了集成应用内购买,我已经分离了我的应用。 之后,我将react-native-iap集成到我的应用程序中。 对我来说,这个问题发生在iOS和android中。 我正在使用Android Studio 3.0.1和Xcode 9.3。 @dooboolab

根据另一个库的自述文件,应该可以在调试环境(不是Alpha / Beta版本)中运行时获得可用的产品,对吗? (我认为此库应该与该库相同,这可能取决于Google处理IAP的方式)。

另一个相关的问题; SKU是否应该以包名称作为前缀? 换一种说法; 当我在Google Play控制台中指定的ID为“ unlock_premium”时,“ unlock_premium”或“ com.kimer.unlock_premium”在我的代码中是否正确?

@axelkennedal SKUS没有任何格式,可以完全自定义。 简而言之:“ unlock_premium”或“ com.kimer.unlock_premium”是正确的。

我知道您可以根据需要命名产品ID,但是我要问的是,如果我在Google Play控制台中选择ID“ unlock_premium”,代码中应该包含什么内容(不是我是否“允许”在两者中添加前缀Google Play控制台和我的代码)。 您是说在Google Play控制台中选择ID“ unlock_premium”应该与“ unlock_premium”和“ com.kimer.unlock_premium”一起使用,对吗? 我认为这需要在自述文件中的某个位置进行说明,因为这很令人困惑。

更新

现在为我工作😄! 我尝试了几件事,但是我不确定使它起作用的关键是什么?any这就是我所做的:

  1. 重新安装套件
  2. import InAppPurchase from "react-native-iap;" to "import * as InAppPurchase from 'react-native-iap';"更改了我的导入声明
  3. 将代码中的SKU从“ com.kimer.unlock_premium”更改为“ unlock_premium”

@axelkennedal,您必须使用任何名称,但必须在应用程序产品中的Google Play控制台>您的应用程序> Google Play商店>上使用。 以及您必须在源代码上使用的相同名称。

@dooboolab当我尝试使用我的productID执行RNIap.buyProduct(' * ')时,出现错误消息“该项目不可用” 。 实际上,我的被管理产品处于活动状态。 会有什么问题? 我可以使用RNIap.getProducts(itemSkus)列出产品详细信息。 我需要将许可证密钥添加到我的应用中吗?

@sanilcgs您能告诉我您遇到哪个平台错误吗?

@dooboolab我在android平台中面临此问题并在MacOS High Sierra(10.13.4)上进行开发

@sanilcgs您是否在使用我们较新的模块'0.3.23'? 在这里也可以找到类似的问题。 https://github.com/dooboolab/react-native-iap/issues/142

@dooboolab是的,我正在使用“ 0.3.23”。 我的问题现在是RNIap.buyProduct(' * ')

@sanilcgs我在上

         Do's

1)为您的应用程序创建签名apk。
2)在Google Play商店上载您的APK。
3)为您的应用程序创建产品。
4)等待6到12个小时以获取更新项目的存储。
5)在Manifest.xml中授予计费权限

           Don't

1)不要使用模拟器进行测试,它不支持Billing Services。
2)请勿将未签名的apk用于计费服务。

了解更多: http :

@dooboolab正如我已经说过的,我的应用程序尚未发布到生产环境。 现在,我只发布了我的Alpha版本。 所以我可以用我的Alpha版本测试此RNIap.buyProduct(' * * ')**,还是需要发布我的产品以进行测试购买???

@sanilcgs如果您通读以上内容,则应注意不需要将apk发布到生产环境。 只是alpha或beta是可以的,但是您的apk应该按照说明进行签名。 再次检查以上内容,然后首先查看您缺少的内容。

@dooboolab上面的“注意事项”很有帮助。 对于新手来说,这对于在文档中说明您只能在alpha / beta版本上进行测试非常有帮助,并且如果您在基于模拟器的开发版本中进行测试,它将始终返回一个空数组。 我在任何地方都没有提到这一点。 如果您愿意,我很乐意将此添加到请求请求中?

@systemride任何PR表示赞赏!

@axelkennedal做了所有这些事情,我仍然在iOS上得到一个空数组。 有任何想法吗?
顺便说一句...我还在测试模拟器。 是否有必要在实际的iOS设备上对其进行测试?

iOS中的@axelkennedal getProducts()在模拟器上效果很好。 购买操作应在具有沙盒苹果帐户的真实设备上进行测试。
您可能没有完美完成App Store产品设置。

@JJMoon如果您阅读我的评论,就会知道我使用的是Android,而不是iOS。

@axelkennedal对那些自愿度过宝贵时间来帮助您的人会变得被动,不会让您

@JJMoon @dooboolab感谢您的出色工作

@raduflp大声笑你在说什么? 我只是指出我们在不同的平台上

@raduflp感谢您的亲切回应和关注。 我认为@axelkennedal并不具有侵略性。 他对react-native-iap感到不知所措。 感觉可以关闭此问题,所以我将其关闭。 同样,任何可以帮助新一代的PR都会受到赞赏。

试试吧。 为我工作:

“您还需要将测试帐户添加到另一个特殊帐户列表“具有测试访问权限的Gmail帐户”,您可以在进行中的帐户设置中找到该帐户(不是项目!)。在可以看到您的项目列表的页面上,转到设置,然后在“帐户详细信息”页面上(向下滚动,几乎在页面底部),您会找到“具有测试访问权限的Gmail帐户”列表。

设置应用许可
要设置应用程序许可,请先在Play控制台中添加测试人员的Gmail地址列表。

转到您的Play控制台。
选择设置设置>帐户详细信息。
在“许可测试”下,添加测试人员的Gmail地址。
在屏幕顶部,选择保存。

我已经整合了react-native-iap并将我签名的apk上传到Play商店的Beta版本,并且还添加了一个订阅计划。 我试图在调试模式下按订阅ID获取订阅列表,该模式始终返回一个空数组。 我可以实际在调试模式下测试订阅吗?

@ShridharCodewave您使用真实的设备还是模拟器?

@NarekChang我使用的是真实设备,现在我以某种方式获取订阅。

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