2015-09-17 4 views
4

Важно проверить, являются In-App покупки позволили блокировать пользовательский интерфейс правильно, RayWenderlich блог говорит:SKPaymentQueue.canMakePayments() всегда возвращает истину

Apple, требует, чтобы вы справиться с этой ситуацией грациозно; это не приведет к отклонению приложения.

При отключении In-App Purchase, ограничения SKPaymentQueue.canMakePayments() должен возвращать false но он всегда возвращает true независимо от того, что. Я попытался с 2-мя различными проектами, в том числе, this one from RayWenderlich.

Я испытал это только с прошивкой 9.

Как распознать, что покупки In-App отключены с родительскими ограничениями?

Обновление.
Кто-то попросил поделиться моим кодом. Я не думаю, что это необходимо, код очевиден и не имеет ошибок. Я могу воспроизвести эти проблемы и с проектом Рэя.

// This function is called in from viewDidLoad() 
// And after SKProduct is updated. 
func addTextFromProduct(p: SKProduct) { 

    if let title = p.localizedTitle as String? { 
     self.navigationBar.topItem?.title = title 
    } 

    if let description = p.localizedDescription as String? { 
     if dailyLimit { 
      self.informationLabel.text? = "\(waitingTime)\(description)" 
     } else { 
      self.informationLabel.text? = "\(description)" 
     } 

     if SKPaymentQueue.canMakePayments() { 
      unblockButtons() 
     } 

    } else { 
     self.informationLabel.text? = "\(waitingTime)\(description)\n\nIn-App Purchase is unavailable at this moment." 
     blockButtons() 
    } 

    if SKPaymentQueue.canMakePayments() { 
     self.priceFormatter.locale = p.priceLocale 
     let localPrice: String! = self.priceFormatter.stringFromNumber(p.price) 
     let label = "\(localPrice)" 
     self.buyButton.setTitle(label, forState: UIControlState.Normal) 
    } else { 
     blockButtons() 
     buyButton.setTitle("Not Available", forState: UIControlState.Disabled) 
    } 
} 
+1

У меня такая же проблема, в предыдущих версиях iOS, но canMakePayments правильно возвращает false, если InAppPurchases ограничены, однако на iOS 9, похоже, отражается ограничение Install Apps? – Michael

+0

Подтвержденный, Xcode 7.2.1, iOS 9.2.1, ARC enabled canMakePayments возвращает false только при установке приложения Apps после загрузки приложения. Вот полезная ссылка для установки и игры с ограничениями: https://support.apple.com/en-us/HT204396. Любые обновления по этой проблеме? –

ответ

-1

Вы должны проверить в методе viewDidLoad если пользователь включил IAP.

if(SKPaymentQueue.canMakePayments()) { 

      print("IAP is enabled, loading") 

      // Your Products 


      let request: SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set<String>) 
      request.delegate = self 
      request.start() 



     } 
     else { 

     print("IAP not allowed") 
     //Do something like show an alert, the user has not allowed in app purchases 

     } 
+0

Да, я знаю об этом, моя проблема в том, что мое приложение считает, что покупки в приложении включены, даже если я отключу их в настройках> Общие> Ограничения. –

+0

Если вы знаете об этом, то разместите код, чтобы люди могли вам помочь. Если у вас этот внедренный код, он сказал бы об этом. Если вам нужна помощь, покажите, что вы сделали до сих пор, и попробовали – JSA986

+0

JSA986, я обновил свой вопрос. –

2

У меня такая же проблема. Может быть, это поможет вам.
https://forums.developer.apple.com/thread/22312
Я также считаю, что это ошибка.
Я тестировал это с помощью iOS 7.1.2 и 8.4.1. SKPaymentQueue.canMakePayments() возвращает false, даже когда «In-App Purchases» выключен, и «Установка приложений» включена.

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