2017-01-18 3 views
1

Я делаю iPhone-игру. Я следую инструкциям Swift In-App Billing для расчета игровых денег. Я закончил все Swift-кодирование и сборку, и я нажал кнопку на экране, но всплывающее окно не появилось. Пожалуйста, дайте мне знать, что случилось с моим кодом.Быстрая покупка в приложении не работает

import UIKit 
import AVFoundation 
import StoreKit 

class ViewController: UIViewController,UIScrollViewDelegate,SKProductsRequestDelegate, SKPaymentTransactionObserver { 



@IBOutlet var outAddCoins: UIButton! 


@IBAction func btnAddCoins(_ sender: Any) { 
    for product in list { 
     let prodID = product.productIdentifier 
     if(prodID == "Add500000Credit") { 
      p = product 
      buyProduct() 
     } 
    } 
} 


func buyProduct() { 
    print("buy " + p.productIdentifier) 
    let pay = SKPayment(product: p) 
    SKPaymentQueue.default().add(self) 
    SKPaymentQueue.default().add(pay as SKPayment) 
} 


func addCoins() { 
    playerMoney += 500000 
    MoneyLabel.text = "\(playerMoney)" 
} 

var list = [SKProduct]() 
var p = SKProduct() 






func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) { 
    print("product request") 
    let myProduct = response.products 
    for product in myProduct { 
     print("product added") 
     print(product.productIdentifier) 
     print(product.localizedTitle) 
     print(product.localizedDescription) 
     print(product.price) 

     list.append(product) 
    } 

    outAddCoins.isEnabled = true 
} 




func paymentQueueRestoreCompletedTransactionsFinished(_ queue: SKPaymentQueue) { 
    print("transactions restored") 
    for transaction in queue.transactions { 
     let t: SKPaymentTransaction = transaction 
     let prodID = t.payment.productIdentifier as String 

     switch prodID { 

      case "Add500000Credit": 
       print("add coins to account") 
       addCoins() 
      default: 
       print("IAP not found") 
     } 
    } 
} 






func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { 
    print("add payment") 

    for transaction: AnyObject in transactions { 
     let trans = transaction as! SKPaymentTransaction 
     print(trans.error) 

     switch trans.transactionState { 
     case .purchased: 
      print("buy ok, unlock IAP HERE") 
      print(p.productIdentifier) 

      let prodID = p.productIdentifier 
      switch prodID { 

       case "Add500000Credit": 
        print("add coins to account") 
        addCoins() 
       default: 
        print("IAP not found") 
      } 
      queue.finishTransaction(trans) 
     case .failed: 
      print("buy error") 
      queue.finishTransaction(trans) 
      break 
     default: 
      print("Default") 
      break 
     } 
    } 
} 

и это viewdidload часть

override func viewDidLoad() { 
    super.viewDidLoad() 



    outAddCoins.isEnabled = false 







    if(SKPaymentQueue.canMakePayments()) { 
     print("IAP is enabled, loading") 
     let productID: NSSet = NSSet(objects: "Add500000Credit") 
     let request: SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set<String>) 
     request.delegate = self 
     request.start() 
    } else { 
     print("please enable IAPS") 
    } 
    } 

Я использую последнюю версию Xcode. Я завершил всю конфигурацию покупок в приложении iTunes Connect, но всплывающее окно покупки не появляется после сборки. Буду признателен за вашу помощь.

buy Add500000Credit 
add payment 
nil 
Default 
add payment 
Optional(Error Domain=SKErrorDomain Code=0 "can not connect to the iTunes Store" UserInfo={NSLocalizedDescription=can not connect to the iTunes Store}) 
buy error 

ответ

4

Тестирования в приложении покупка сложен:

  • Убедитесь, что вы создали учетную запись песочницы для тестирования.

  • Испытание на устройстве, а не в симуляторе. Вы не можете тестировать в симуляторе.

  • И не забудьте выйти из iCloud на устройстве перед тестированием. В противном случае вы не сможете использовать учетную запись sandbox.

+0

Я решил это с вашего комментария. Моя проблема была не ошибкой кода, а основной проблемой. Кроме того, я думаю, мне нужно также выйти из App Store. спасибо. – DingPho

Смежные вопросы