Pab*_*blo 12 storekit in-app-purchase ios
我的应用程序在IAP沙箱中进入了一些奇怪的状态...每次启动应用程序时都会询问特定测试用户的密码.我想由于未完成的交易.我真的想完成那笔交易,但这是不可能的.一些背景信息以及我为它做了些什么:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self][SKPaymentQueue defaultQueue].transactions.count总是0如此,所以我无法手动完成未完成的交易唯一的问题是改变包ID,这在我的情况下是不可取的.希望有人知道如何摆脱未完成的交易的替代方法.
我把它放在这里是因为有很多非常糟糕的错误答案提供了如何解决这个问题的错误信息.它不是那么罕见,或神秘或苹果虫,它是App商店设计的一部分,并帮助您建立正确的IAP.
不要:
做:
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];这是故意的,并预防中断的交易.而已!完成所有交易,否则每次你的应用程序在该设备上启动时,你都会被发送到Endless Loop地狱,重复请求登录一个不存在的测试用户App Store帐户:(
您可能需要重复这些步骤几次才能生效。一旦调用事务观察者委托方法就完成事务。
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
for (SKPaymentTransaction *transaction in transactions) {
// Temporary code to solve the loop issue
[[SKPaymentQueue defaultQueue] finishTransaction:transaction];
/*
switch (transaction.transactionState) {
// Call the appropriate custom method.
case SKPaymentTransactionStatePurchased:
[self completeTransaction:transaction];
break;
case SKPaymentTransactionStateFailed:
[self failedTransaction:transaction];
break;
case SKPaymentTransactionStateRestored:
default:
break;
}
*/
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您运行应用程序并使用已删除的沙箱帐户登录。上述方法应该立即触发并完成交易。如果 transactions 数组为零,请尝试在 FOR 循环之前调用完成代码。
| 归档时间: |
|
| 查看次数: |
4262 次 |
| 最近记录: |