---
title: SKStoreProductViewController
framework: storekit
role: symbol
role_heading: Class
path: storekit/skstoreproductviewcontroller
---

# SKStoreProductViewController

A view controller that provides a page where customers can purchase media from the App Store.

## Declaration

```swift
@MainActor class SKStoreProductViewController
```

## Mentioned in

Receiving ad attributions and postbacks Signing and providing ads

## Overview

Overview To display a store for customers to purchase media from the App Store, follow these steps: Create an SKStoreProductViewController object and set its delegate. Indicate a specific product to sell by passing its iTunes item identifier to the loadProduct(withParameters:completionBlock:) method. Present the view controller modally from another view controller in your app. Your delegate dismisses the view controller when the customer completes the purchase. Present the SKStoreProductViewController object immediately when someone triggers an interaction, such as tapping a Buy button. Load the product information before presenting the view controller to ensure a seamless user experience. This class ignores modalPresentationStyle settings, and those settings have no impact on the sheet’s presentation. To recommend another app without displaying a full product page, and to recommend an App Clip’s corresponding app from within the App Clip, use SKOverlay. note: In a compatible iPad or iPhone app running in visionOS, this method displays a minimal sheet to enable an app purchase or to launch the App Store for more information. For an in-line experience that’s consistent across platforms, use SKOverlay instead. Prevent exceptions The SKStoreProductViewController class doesn’t support subclassing or embedding, and must be used as-is. important: If you compile with the iOS 13 SDK, attempting to instantiate a subclass of SKStoreProductViewController results in a runtime exception. This class throws the following runtime exceptions:

## Topics

### Setting a delegate

- [delegate](storekit/skstoreproductviewcontroller/delegate.md)
- [SKStoreProductViewControllerDelegate](storekit/skstoreproductviewcontrollerdelegate.md)

### Loading a new product screen

- [Offering media for sale in your app](storekit/offering-media-for-sale-in-your-app.md)
- [loadProduct(withParameters:completionBlock:)](storekit/skstoreproductviewcontroller/loadproduct(withparameters:completionblock:).md)
- [loadProduct(withParameters:impression:completionBlock:)](storekit/skstoreproductviewcontroller/loadproduct(withparameters:impression:completionblock:).md)
- [loadProduct(parameters:impression:)](storekit/skstoreproductviewcontroller/loadproduct(parameters:impression:).md)
- [loadProduct(parameters:impression:reengagementURL:)](storekit/skstoreproductviewcontroller/loadproduct(parameters:impression:reengagementurl:).md)
- [Product Dictionary Keys](storekit/product-dictionary-keys.md)

## Relationships

### Inherits From

- [NSViewController](appkit/nsviewcontroller.md)
- [UIViewController](uikit/uiviewcontroller.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSEditor](appkit/nseditor.md)
- [NSExtensionRequestHandling](foundation/nsextensionrequesthandling.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSSeguePerforming](appkit/nssegueperforming.md)
- [NSStandardKeyBindingResponding](appkit/nsstandardkeybindingresponding.md)
- [NSTouchBarProvider](appkit/nstouchbarprovider.md)
- [NSUserActivityRestoring](appkit/nsuseractivityrestoring.md)
- [NSUserInterfaceItemIdentification](appkit/nsuserinterfaceitemidentification.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [UIActivityItemsConfigurationProviding](uikit/uiactivityitemsconfigurationproviding.md)
- [UIAppearanceContainer](uikit/uiappearancecontainer.md)
- [UIContentContainer](uikit/uicontentcontainer.md)
- [UIFocusEnvironment](uikit/uifocusenvironment.md)
- [UIPasteConfigurationSupporting](uikit/uipasteconfigurationsupporting.md)
- [UIResponderStandardEditActions](uikit/uiresponderstandardeditactions.md)
- [UIStateRestoring](uikit/uistaterestoring.md)
- [UITraitChangeObservable](uikit/uitraitchangeobservable-67e94.md)
- [UITraitEnvironment](uikit/uitraitenvironment.md)
- [UIUserActivityRestoring](uikit/uiuseractivityrestoring.md)

## See Also

### Recommendations

- [Offering media for sale in your app](storekit/offering-media-for-sale-in-your-app.md)
- [SKOverlay](storekit/skoverlay.md)
