Buscar..


IAP individual en Swift 2

Después de crear un IAP en iTunesConnect:

En el controlador de vista que desea comprar

import StoreKit

y agregar los delegados relevantes

class ViewController: UIViewController, SKProductsRequestDelegate, SKPaymentTransactionObserver {

declarar una variable con el ID de producto de iTunesConnect

var product_id: NSString?

override func viewDidLoad() {
    
    
    product_id = "YOUR_PRODUCT_ID"
    super.viewDidLoad()
    SKPaymentQueue.defaultQueue().addTransactionObserver(self)

   //Check if product is purchased
   if (NSUserDefaults.standardUserDefaults().boolForKey("purchased")){
   
       // Hide ads
       adView.hidden = true
        
   } else {
       print("Should show ads...")
        
   }

}

cablear un botón a una función para comprar el IAP

@IBAction func unlockAction(sender: AnyObject) {
    
   print("About to fetch the product...")

// Can make payments
if (SKPaymentQueue.canMakePayments())
    {
        let productID:NSSet = NSSet(object: self.product_id!);
        let productsRequest:SKProductsRequest = SKProductsRequest(productIdentifiers: productID as! Set<NSString>);
        productsRequest.delegate = self;
        productsRequest.start();
        println("Fetching Products");
    }else{
        print("Can't make purchases");
    }

}

Y aquí hay algunos métodos de ayuda.

func buyProduct(product: SKProduct){
    println("Sending the Payment Request to Apple");
    let payment = SKPayment(product: product)
    SKPaymentQueue.defaultQueue().addPayment(payment);
    
 }

Los métodos de delegado que deben ser declarados.

func productsRequest (request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {

    let count : Int = response.products.count
    if (count>0) {
        var validProduct: SKProduct = response.products[0] as SKProduct
        if (validProduct.productIdentifier == self.product_id) {
            print(validProduct.localizedTitle)
            print(validProduct.localizedDescription)
            print(validProduct.price)
            buyProduct(validProduct);
        } else {
            print(validProduct.productIdentifier)
        }
    } else {
        print("nothing")
    }
}


func request(request: SKRequest!, didFailWithError error: NSError!) {
    print("Error Fetching product information");
}

    func paymentQueue(_ queue: SKPaymentQueue,
updatedTransactions transactions: [SKPaymentTransaction])

{
    print("Received Payment Transaction Response from Apple");
    
    for transaction:AnyObject in transactions {
        if let trans:SKPaymentTransaction = transaction as? SKPaymentTransaction{
            switch trans.transactionState {
            case .Purchased:
                print("Product Purchased");
                SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)
                // Handle the purchase
                NSUserDefaults.standardUserDefaults().setBool(true , forKey: "purchased")
                adView.hidden = true
                break;
            case .Failed:
                print("Purchased Failed");
                SKPaymentQueue.defaultQueue().finishTransaction(transaction as! SKPaymentTransaction)
                break;
                
        

            case .Restored:
                print("Already Purchased");
               SKPaymentQueue.defaultQueue().restoreCompletedTransactions() 


                 // Handle the purchase
                    NSUserDefaults.standardUserDefaults().setBool(true , forKey: "purchased")
                    adView.hidden = true
                    break;
            default:
                break;
            }
        }
    }
    
}

Y luego el código para restaurar un no consumible en la compra de la aplicación.

if (SKPaymentQueue.canMakePayments()) {
  SKPaymentQueue.defaultQueue().restoreCompletedTransactions()
}

Configuración en iTunesConnect

En iTunesConnect , seleccione la aplicación a la que desea agregar un IAP.

Haga clic en las características y verá esto:

introduzca la descripción de la imagen aquí

Haga clic en el signo más. A continuación, deberá seleccionar el tipo de IAP que desea realizar.

Luego deberá completar toda la información de su IAP.

introduzca la descripción de la imagen aquí

Si tiene algún problema, puede consultar la Guía de configuración de IAP .

Pasos más básicos para comprar / suscribir un usuario a un IAP

Suponiendo que conoce el productID :

primero

import StoreKit

Luego en tu codigo

let productID: Set = ["premium"]
let request = SKProductsRequest(productIdentifiers: productID)
request.delegate = self
request.start()

y en el SKProductsRequestDelegate :

func productsRequest(request: SKProductsRequest, didReceiveResponse response: SKProductsResponse) {
    if response.products.count > 0 {
        let product = response.products[0]
        let payment = SKPayment(product: product)
        SKPaymentQueue.defaultQueue().addPayment(payment)
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow