import UIKit import StoreKit class ViewController: UIViewController { @IBAction func button(_ sender: Any) { self.openStoreProductWithiTunesItemIdentifier(identifier: "") } override func viewDidLoad() { super.viewDidLoad() } } extension UIViewController: SKStoreProductViewControllerDelegate { func openStoreProductWithiTunesItemIdentifier(identifier: String) { let storeViewController = SKStoreProductViewController() storeViewController.delegate = self let otherVC = UIViewController() otherVC.view.backgroundColor = .blue otherVC.modalTransitionStyle = .crossDissolve let parameters = [ SKStoreProductParameterITunesItemIdentifier : "1326479187"] storeViewController.modalTransitionStyle = .crossDissolve self.present(storeViewController, animated: true, completion: {storeViewController.modalTransitionStyle = .crossDissolve}) storeViewController.loadProduct(withParameters: parameters) { [weak self] (loaded, error) -> Void in // self?.present(storeViewController, animated: false, completion: {storeViewController.modalTransitionStyle = .crossDissolve}) } } public func productViewControllerDidFinish(_ viewController: SKStoreProductViewController) { viewController.dismiss(animated: true, completion: nil) } }