React-native-iap: PurchaseUpdatedListener被多次调用,有时超过20次

创建于 2020-09-08  ·  12评论  ·  资料来源: dooboolab/react-native-iap

版本的react-native-iap

“ react-native-iap”:“ ^ 4.5.3”

本机版本

“本机”:“ 0.62.0”

您遇到错误的平台(IOS或Android还是两者兼有?)

iOS(已在Android上经过测试)

预期行为

PurchaseUpdatedListener的调用次数应与组件已挂载的次数相同

实际行为

在两秒钟内,purchaseUpdatedListener被调用了20次,每当我打开应用程序时,它就会被多次调用

经过测试的环境(仿真器?真实设备?)

真实设备,沙盒环境

重现行为的步骤

按照主页上的说明进行操作

目前,我在componentDidMount()中将purchaseUpdatedListener附加到侦听器,有时在我打开应用程序时它将触发多次。 这在我称为finishTransaction的txns上发生。 有人看到这样的东西吗?

🕵️‍♂️ need more investigation 🙏 help wanted 🤖 android

最有用的评论

同样在这里。 在每次自动续订事件中,我都会收到实际的自动续订订阅,几秒钟后,我从purchaseUpdatedListener收到了135个购买对象的很大一部分。 我觉得这是我的整个购买历史。 我试图同时调用finishTransactionfinishTransactionIOS来消耗事务,但是它没有任何改变。

在下一个自动续订事件中,大笔交易在增加(136、137等)。 交易只是我的自动续订。 我的消耗品/非消耗品均未出现在列表中。

所有12条评论

对我来说也一样,但我将购买流程称为行动

const { productId } = args
purchaseUpdatedListener(async (purchase) => {
    if (!purchase.transactionReceipt) {
        Alert("Error")
    }
    ...
})
purchaseErrorListener(error => {
    ...
})
await requestPurchase(productId, false)

我有4种测试产品,并且有4次收到purchaseUpdatedListener ,但只要求购买其中一种

尝试完成这些交易,但仍然有多个通话

该商品是自动续订的吗? 我认为发生的原因是因为它在沙盒中,我的每月订阅的续订期仅为5分钟。 因此,苹果将在每次续订时发送一个事件,因此,如果该应用关闭了10分钟,则该应用打开时我会收到2条通知。

谁能确认这是预期的行为,以便在自动续订而不只是在购买时收到通知?

我的购买是一次性的

同样在这里。 在每次自动续订事件中,我都会收到实际的自动续订订阅,几秒钟后,我从purchaseUpdatedListener收到了135个购买对象的很大一部分。 我觉得这是我的整个购买历史。 我试图同时调用finishTransactionfinishTransactionIOS来消耗事务,但是它没有任何改变。

在下一个自动续订事件中,大笔交易在增加(136、137等)。 交易只是我的自动续订。 我的消耗品/非消耗品均未出现在列表中。

在这里也一样,我确认它调用监听器的次数与购买历史记录中的购买次数相同。

我有问题仅在启用订阅后才发生。

我在iOS 14上也有类似的经历。

我的应用销售自动续订。
我认为自从我再次购买相同的订阅以来,就出现了此问题。

以下链接可能与此问题有关。
https://developer.apple.com/forums/thread/659529

看一下这篇文章
问题是finishTransaction和finishTransactionIOS现在不适用于iOS,这些总是返回undefined,因此您无法完成交易,并且卡在了待处理的交易中。 当您打开您的应用程序时,所有待处理的交易都将在PurchaseUpdatedListener中处理...因此,您获得20多次的原因。
:(((有人解决了这个问题

看一下这篇文章
问题是finishTransaction和finishTransactionIOS现在不适用于iOS,这些总是返回undefined,因此您无法完成交易,并且卡在了待处理的交易中。 当您打开您的应用程序时,所有待处理的交易都将在PurchaseUpdatedListener中处理...因此,您获得20多次的原因。
:(((有人解决了这个问题

https://github.com/dooboolab/react-native-iap/issues/1160#issuecomment -716525603
我已经在这里发布了回复,实际上期望finishTransaction无法解决诺言。
我们需要通过将日志放在iOS端并检查其是否输入if语句来验证它是否确实完成了交易。

我看到的内容与这里提到的相同: https :

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

相关问题

Symyon picture Symyon  ·  5评论

coldfins picture coldfins  ·  3评论

schumannd picture schumannd  ·  3评论

jvandenaardweg picture jvandenaardweg  ·  4评论

chetstone picture chetstone  ·  4评论