Method does not reach Completion Block

in-app-purchase, ios, storekit, swift

Solution

For some reasons `SKStoreProductViewController` doesn't work on simulator, you must try it on actual device instead.

I just tried that on actual device and got an screenshot of how it looks like on the actual device after callback was called with success:

And here is the code I've used to do it:

import UIKit
import StoreKit

class ViewController: UIViewController,SKStoreProductViewControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()



    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    @IBAction func BuySomething(sender : AnyObject) {

        NSLog("%@","called");//gets called

        let storeViewController:SKStoreProductViewController = SKStoreProductViewController();

        storeViewController.delegate = self;

        var someitunesid:String = "676059878";

        var productparameters = [SKStoreProductParameterITunesItemIdentifier:someitunesid];

        storeViewController.loadProductWithParameters(productparameters, {
            (success: Bool!,error: NSError!) -> Void in
            if success {
                NSLog("%@",success)
                self.presentViewController(storeViewController, animated: true, completion: nil);
            } else {
                NSLog("%@", error)
            }
            })
    }

    // this is SKStoreProductViewControllerDelegate implementation
    func productViewControllerDidFinish(viewController: SKStoreProductViewController!) {

    }


}

Problem

I'm using the `SKStoreProductViewController` to display an iTunes product with the following method. The method gets called, but I get no success or error. Any idea why?: ``` @IBAction func BuySomething(sender : AnyObject) { NSLog("%@","called");//gets called let storeViewController:SKStoreProductViewController = SKStoreProductViewController(); storeViewController.delegate = self; var someitunesid:String = "676059878"; var productparameters = [SKStoreProductParameterITunesItemIdentifier:someitunesid]; storeViewController.loadProductWithParameters(productparameters, { (success: Bool!, error: NSError!) -> Void in if success { NSLog("%@",success)//no call self.presentViewController(storeViewController, animated: true, completion: nil); } else { NSLog("%@", error)//no call } }) } ```

Original source