我正在使用Swift构建应用程序,我刚刚添加了StoreKit支持。 我的应用程序中只有消耗品。
AppDelegate遵循SKPaymentTransactionObserver
协议,这是我的paymentQueue:updatedTransactions
方法:
func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
for transaction in transactions as [SKPaymentTransaction] {
switch transaction.transactionState {
case SKPaymentTransactionState.Purchasing:
println("purchasing")
case SKPaymentTransactionState.Purchased:
println("payment done")
SKPaymentQueue.defaultQueue().finishTransaction(transaction)
case SKPaymentTransactionState.Failed:
println("payment failed")
SKPaymentQueue.defaultQueue().finishTransaction(transaction)
default:
println("nop \(transaction.transactionState)")
}
}
}
我在iTunes连接中创建了一个测试用户等等,一切正常,但所有交易都失败了。
交易进入购买状态然后失败,即使我在模拟器中确认交易。
知道为什么会这样吗?
感谢。
答案 0 :(得分:8)
Apple的官方消息是StoreKit在模拟器中不起作用。
现在,在当前模拟器中有一个iOS 8目标,它可以运行很多,比如获取产品列表或者建立购买确认对话框。然而,最终购买仍然在模拟器中失败,这似乎是苹果公司的故意。
答案 1 :(得分:1)
你可以在你的ios6.1模拟器中测试IAP,是的iOS 8.0模拟器也给你响应警报,但是不能在模拟器中提供购买功能
答案 2 :(得分:0)
正如@ w0mbat所说,现在除了实际确认交易之外,井流工作正常,为了管理这个,您可以执行以下操作
导入目标条件标题
#include "TargetConditionals.h"
修改失败的交易方法
- (void)failedTransaction:(SKPaymentTransaction *)transaction
{
if (TARGET_IPHONE_SIMULATOR && DEBUG && (transaction.error.code==0))
{
[self completeTransaction:transaction];
return;
}
...
}