2017-07-04 7 views
0

アプリ内でアプリ内購入を実装しています。これを行う方法については、Jared Davidsonのチュートリアルを見ています(偉大なチュートリアル)それは6ヶ月です。私はまだそれを完了していないが、私は警告を設定するときにいくつかのエラーに直面した。タイプ 'SKError.Code'で '失敗'の列挙型が見つかりません

extension ViewController { 

     func alertWithTitle(title: String, message : String) -> UIAlertController { 

      let alert = UIAlertController(title: title, message: message, preferredStyle: .alert) 
      alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil)) 
      return alert 


    } 

     func showAlert(alert : UIAlertController) { 
      guard let _ = self.presentedViewController else { 
       self.present(alert, animated: true, completion: nil) 
       return 
      } 


     } 
     func alertForProductRetrievalInfo(result : RetrieveResults) -> UIAlertController { 
      if let product = result.retrievedProducts.first { 
       let priceString = product.localizedPrice! 
       return alertWithTitle(title: product.localizedTitle, message: "\(product.localizedDescription) - \(priceString)") 
      } 
      else if let ivalidProductID = result.invalidProductIDs.first { 
       return alertWithTitle(title: "Could not retrieve product info", message: "Invalid product identifier: \(ivalidProductID)") 
      } 
      else { 
       let errorString = result.error?.localizedDescription ?? "Unknown Error. Please Contact Support" 
       return alertWithTitle(title: "Could not retreive product info", message: errorString) 
      } 
     } 
     func alertForPurchaseResult(result : PurchaseResult) -> UIAlertController { 
      switch result { 
      case .success(let product): 
       print("Purchase Succesful: \(product.productId)") 

       ///////////////////////////////////////////////////////////////////////////////////// 
       return alertWithTitle(title: "Thank you for your kind donation!", message: "Purchase completed") 
      case .error(let error): 
       print("Purchase Failed: \(error)") 
       switch error.code { 
       case .failed(let error): 
        if (error as NSError).domain == SKErrorDomain { 
         return alertWithTitle(title: "Purchase Failed", message: "Check your internet connection or try again later.") 
        } 
        else { 
         return alertWithTitle(title: "Purchase Failed", message: "Unkown Error. Please Contact Support") 
        } 
       case .invalidProductID(let productID): 
        return alertWithTitle(title: "Purchase Failed", message: "\(productID) is not a valid product identifier") 
       case .noProductIdentifier: 
        return alertWithTitle(title: "Purchase Failed", message: "Product not found") 
       case .paymentNotAllowed: 
        return alertWithTitle(title: "Purchase Failed", message: "You are not allowed to make payments") 

       } 

     } 

    } 

これらの私が取得していますエラーがされています

「のEnumの場合は、タイプには見られない 『失敗』 『SKError.Code』
」列挙型ケース 『invalidProductID』タイプでは見られない「SKError .CODE

「列挙型ケース 『noProductIdentifier』タイプでは見られない 『SKError.Code』

私は、彼らはそれか何かを更新して、新しいケースがあるので、私はこれらのエラーを取得します知っているが、私はSではありませんよそれをどのように変換するのか、どちらを使うのか?

私はお詫びします、私は今本当に混乱しています!すべての助けが大変ありがとう!

答えて

0

最近チュートリアルで使用するフレームワーク(SwiftyStoreKit)changedエラーチェックAPIの動作方法。更新された内容:

func alertForPurchaseResult(result : PurchaseResult) -> UIAlertController { 
     switch result { 
     case .success(let product): 
      return alertWithTitle(title: "Thank You", message: "Purchase completed") 
     case .error(let error): 
      switch error.code { 
      case .unknown: return alertWithTitle(title: "Purchase Error", message: "Unknown error. Please contact support") 
      case .clientInvalid: return alertWithTitle(title: "Purchase Error", message: "Not allowed to make the payment") 
      case .paymentCancelled: return alertWithTitle(title: "Payment Cancelled", message: "Payment Cancelled") 
      case .paymentInvalid: return alertWithTitle(title: "Purchase Error", message: "The purchase identifier was invalid") 
      case .paymentNotAllowed: return alertWithTitle(title: "Purchase Error", message: "The device is not allowed to make the payment") 
      case .storeProductNotAvailable: return alertWithTitle(title: "Purchase Error", message: "The product is not available in the current storefront") 
      case .cloudServicePermissionDenied: return alertWithTitle(title: "Purchase Error", message: "Access to cloud service information is not allowed") 
      case .cloudServiceNetworkConnectionFailed: return alertWithTitle(title: "Purchase Error", message: "Could not connect to the network") 
      default: return alertWithTitle(title: "Purchase Error", message: "Unknown error") 
      } 
     } 
    } 
関連する問題