2016-01-23 3 views
1

Я пытаюсь создать систему подписки, и она убивает меня. Я пришел к этой проблеме. Таким образом, пользователь входит и занимает некоторое время, пока не появится предупреждение от iTunes. Я решил разместить оповещение по загрузке, но я не знаю, когда его остановить. Я не знаю, где разместить этот метод.Оповещение о загрузке в SKPaymentTransaction

Вот мой код:

func paymentQueue(queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) { 
    for transaction:AnyObject in transactions { 
     if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{ 
      switch trans.transactionState { 

      case .Purchasing: 
       let alert = UIAlertController(title: nil, message: "Please wait...", preferredStyle: .Alert) 
       alert.view.tintColor = UIColor.blackColor() 
       let loadingIndicator: UIActivityIndicatorView = UIActivityIndicatorView(frame: CGRectMake(10, 5, 50, 50)) as UIActivityIndicatorView 
       loadingIndicator.hidesWhenStopped = true 
       loadingIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray 
       loadingIndicator.startAnimating(); 
       alert.view.addSubview(loadingIndicator) 
       presentViewController(alert, animated: true, completion: nil) 
       break 
      case .Purchased: 
       self.validateReceipt() 
       //self.setExpirationDate() 
       SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction) 
       //dismissViewControllerAnimated(false, completion: nil) 
       break 
      case .Failed: 
       SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction) 
       print("Not called Expired") 
       break 
      case .Restored: 
       SKPaymentQueue.defaultQueue().restoreCompletedTransactions() 
       print("Restored") 
       break 
      default: 
       //dismissViewControllerAnimated(false, completion: nil) 
       break 
      } 
     } 
    } 
} 

Вот dismissViewControllerAnimated(false, completion: nil) для закрытия погрузочного предупреждения.

+0

вы можете остановить индикатор в «случае .Purchased:», «дело .Failed:», «случай .Restored:» –

+0

Это не работает, если я поместить его там –

ответ

0

Здесь я разработал простую демонстрацию в Swift для проверки чеков в подписке AutoRenewal. Вам просто нужно передать свой идентификатор продукта в файле ViewController.swift в демо-версии и использовать общий секрет, который вы получили на учетной записи iTunes для определенного зарегистрированного приложения.

Используя этот код, вы сможете проверить получение на устройстве iOS.

Чтобы внедрить сервер проверки подлинности квитанций (рекомендуемый компанией Apple), вам необходимо отправить данные квитанции (Base64 Encoded) и общий секрет, чтобы разорвать и разорвать, чтобы подтвердить получение с помощью iTunes Server.

Вы можете найти код здесь: InAppPurchaseReceiptValidator

Перейдите по этой ссылке на глубину детализации Receipt Validation with App Store.

+0

Большое спасибо сэр –

+0

я видел ваш код. Код не указывает, где завершена проверка. Это часть? 'let expirationDate: NSDate? = self.expirationDateFromResponse (jsonResponse!); NSLog («Дата истечения срока действия:% @», expirationDate!); «После проверки получения, json был разобран, поэтому транзакция принята и транзакция завершена? – TomSawyer

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