ios - 应用内购买不起作用

标签 ios iphone swift in-app-purchase

我正在制作游戏,但遇到了问题: 每次我在其中进行购买时,它都会返回失败的交易。 我调用这个函数来开始交易:

func buyProduct() {
    let payment:SKPayment = SKPayment(product: product)
    SKPaymentQueue.defaultQueue().addPayment(payment)
}

我在 SandBox 测试器中获得了几个用户,并免费设置了应用内购买的价格。 有什么问题吗?

var product: SKProduct!
//used in viewDidLoad

SKPaymentQueue.defaultQueue().addTransactionObserver(self)
self.getProductInfo()

func productsRequest(request: SKProductsRequest!, didReceiveResponse response: SKProductsResponse!) {
      let products = response.products
      if (products.count != 0){
           product = products[0] as! SKProduct
      }
}

func getProductInfo() {
      if (SKPaymentQueue.canMakePayments()){
           let productID:NSSet = NSSet(object: "id.unique")
           let request:SKProductsRequest = SKProductsRequest(productIdentifiers: productID as Set<NSObject>)
           request.delegate = self
           request.start()
      }

}

func paymentQueue(queue: SKPaymentQueue!, updatedTransactions transactions: [AnyObject]!) {
      for transaction:AnyObject in transactions {
           if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{
                switch trans.transactionState{
                case .Purchased:
                     self.removeAds()
                     println("success")
                     SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)
                     break
                case .Failed:
                     println("failed")
                     showAlert("Error", message: "Ooops, there is transaction problem")
                     SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)
                     break
                case .Restored:
                     println("restored")
                     SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
                     break
                default:
                     break
                }
           }
      }
}

最佳答案

你在真实设备上测试过吗?

在应用程序中购买不适用于模拟器,它将失败并出现这样的错误。

Error Domain=SKErrorDomain Code=0 "Cannot connect to iTunes Store" UserInfo=0x7f98b8fda180 {NSLocalizedDescription=Cannot connect to iTunes Store}

关于ios - 应用内购买不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172982/

相关文章:

Swift 在 View 中滑动时启用 TableView 重新加载

ios - Size Classe 是否有 Regular 和 Compact 的规则?

ios - 带按钮的可滚动菜单部分

ios - 我可以在 ios 中为同一个包含应用程序创建多个 Today 扩展吗

iphone - 获取不兼容的 block 指针类型发送 void *(^)

ios - 是否可以通过应用程序将用户导航到移动设备的 wifi 设置,并在 ios 中使用预定义密码连接 wifi 网络?

ios - 多个注释未显示(Xcode mapview)

ios - 每次显示通知中心时都会重新创建 TodayViewController

iphone - 使用 MFMailComposeViewController 发送 HTML 格式的电子邮件

swift - Vapor:如何协调多个请求,直到完成一个中央请求