"react-native-iap": "^2.0.3",
的iOS
进行购买
const购买=等待RNIap.buyProductWithoutFinishTransaction(productId)
const {transactionReceipt,PurchaseToken} =购买
sendToServer(transactionReceipt,{
onSuccess:()=> {
RNIap.finishTransaction()
RNIap.consumeAllItems()
}})
对话框:“此应用内购买已被购买”。 仅一种SKU会发生这种情况,其他SKU则工作正常。 我认为该应用程序处于不良状态,我看不到解决它的方法。 我厌倦consumeAllItems
在初始化时调用finishTransaction
和consumeAllItems
,但这并不能解决。 我可以多次购买其他SKU,没有任何问题。 getPurchaseHistory
不返回任何内容。
设备(沙盒)
我不知道。
@siderakis是的,很奇怪。 我已经修补了这个问题,如stackoverflow中所述,但仍在某些设备中发生。 我也愿意解决此问题。 您正在使用哪个设备?
@siderakis我想这可能会解决您的应用程序处于不良状态的情况。 你可以试试吗?
我试过了,但是没有用。 我还重新安装了该应用程序,但没有帮助。 它在iPad上运行。
我设置了一个断点,看起来currentQueue.transactions为空
从SKPaymentQueue.h
// Array of unfinished SKPaymentTransactions. Only valid while the queue has observers. Updated asynchronously.
@property(nonatomic, readonly) NSArray<SKPaymentTransaction *> *transactions NS_AVAILABLE_IOS(3_0);
<strong i="6">@end</strong>
也许我叫得太早
我稍后在程序执行中调用了该代码,它解决了该问题。
@siderakis抱歉打扰。 但是,您调用了什么代码?
transactions
数组是属性,而不是方法,这不在我们的代码中。
您是说finishTransaction
吗?
我正在调用此本地代码。
当我在didFinishLaunchingWithOptions
调用它时,currentQueue.transactions为空,但是在applicationDidBecomeActive中调用它却起作用了。
这工作:
- (void)applicationDidBecomeActive:(UIApplication *)application
{
// take current payment queue
SKPaymentQueue* currentQueue = [SKPaymentQueue defaultQueue];
[currentQueue restoreCompletedTransactions];
// finish ALL transactions in queue
// [[SKPaymentQueue defaultQueue] finishTransaction:transaction];
[currentQueue.transactions enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
[currentQueue finishTransaction:(SKPaymentTransaction *)obj];
}];
}
我不确定如何,但是也许我们可以在库中公开此功能?
@siderakis是的。 这就是我在第259期中的意思。
我认为动作可以在applicationDidBecomeActive之后的任何地方进行。
因此,我将该方法展示给JS端,该用户可以随时调用它。
感谢您的意见。
@JJMoon ,我有同样的问题,什么时候可以期望有一种解决方法,可以像上面提到的那样公开一种方法。 谢谢。
@sivrihuseyin问题现在众所周知。 我们将在本周末进行补丁。 谢谢所有发行人。
我们已经在2.2.0
发布了预期的解决方案。 您可以遵循自述文件并尝试以下代码行吗?
陈孝yo你好
感谢您的信息。
我已经安装了2.2.0版并尝试了代码。 不幸的是,
问题尚未解决。 认为函数* clearTransaction *没有
已导出。 在reactNative环境中没有clearTransaction
RNIap内部的功能。
我检查了文件index.d.ts,但找不到该函数
clearTransaction在此。 文件。
亲切的问候,
侯赛因
2018年9月16日,星期日,陈孝章(Hyo Chan Jang)下午2:25 [email protected]
写道:
封闭#257 https://github.com/dooboolab/react-native-iap/issues/257
通过a5f225d
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
。—
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 ,
或使线程静音
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
。
陈孝yo你好
很抱歉提供了错误的信息。 它是固定的。 没有问题
不再。
感谢您的及时答复和出色的解决方案。
亲切的问候,
侯赛因
在2018年9月16日星期日,下午2:56 Huseyin Sivri [email protected]
写道:
陈孝yo你好
感谢您的信息。
我已经安装了2.2.0版并尝试了代码。 不幸的是,
问题尚未解决。 认为函数* clearTransaction *具有
尚未导出。 在reactNative环境中没有clearTransaction
RNIap内部的功能。我检查了文件index.d.ts,但找不到该函数
clearTransaction在此。 文件。亲切的问候,
侯赛因
2018年9月16日,星期日,陈孝章(Hyo Chan Jang)下午2:25 [email protected]
写道:封闭#257 https://github.com/dooboolab/react-native-iap/issues/257
通过a5f225d
https://github.com/dooboolab/react-native-iap/commit/a5f225d470af0a85417325d24357667e54aa7078
。—
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/dooboolab/react-native-iap/issues/257#event-1848183078 ,
或使线程静音
https://github.com/notifications/unsubscribe-auth/AiH7bOp96EzsoX82UVxKHK2LkN7PNWVAks5ubjUogaJpZM4WmG_0
。
通过应用clearTransaction函数,它已在2.2.0版中修复。 谢谢
@JJMoon
对于将来的Google员工从v2升级到v3-5而言,我发现这很有帮助
最有用的评论
我正在调用此本地代码。
当我在
didFinishLaunchingWithOptions
调用它时,currentQueue.transactions为空,但是在applicationDidBecomeActive中调用它却起作用了。这工作:
我不确定如何,但是也许我们可以在库中公开此功能?