PaywallOptions
Configuration for paywall presentation and behavior in the Superwall iOS SDK.
PaywallOptions is provided via the paywalls property on SuperwallOptions and is passed when calling configure.
Purpose
Customize how paywalls look and behave, including preload behavior, alerts, dismissal, and haptics.
Signature
@objcMembers
public final class PaywallOptions: NSObject {
public var isHapticFeedbackEnabled: Bool = true
public final class RestoreFailed: NSObject {
public var title: String = "No Subscription Found"
public var message: String = "We couldn't find an active subscription for your account."
public var closeButtonTitle: String = "Okay"
}
public var restoreFailed: RestoreFailed = RestoreFailed()
public var shouldShowWebRestorationAlert: Bool = true
public final class NotificationPermissionsDenied: NSObject {
public var title: String = "Notification Permissions Denied"
public var message: String = "Please enable notification permissions from the Settings app so we can notify you when your free trial ends."
public var actionButtonTitle: String = "Open Settings"
public var closeButtonTitle: String = "Not now"
}
public var notificationPermissionsDenied: NotificationPermissionsDenied?
public var shouldShowPurchaseFailureAlert: Bool = true
public var shouldPreload: Bool = true
public var automaticallyDismiss: Bool = true
public var overrideProductsByName: [String: String]? = [:]
public var shouldShowWebPurchaseConfirmationAlert: Bool = true
public enum TransactionBackgroundView: Int {
case spinner
case none
}
public var transactionBackgroundView: TransactionBackgroundView = .spinner
}Parameters
| Property | Type | Description |
|---|---|---|
isHapticFeedbackEnabled | Bool | Enables haptic feedback during key paywall interactions. Defaults to true. |
restoreFailed | RestoreFailed | Messaging for the restore-failed alert. |
restoreFailed.title | String | Title for restore-failed alert. Defaults to "No Subscription Found". |
restoreFailed.message | String | Message for restore-failed alert. Defaults to "We couldn't find an active subscription for your account." |
restoreFailed.closeButtonTitle | String | Close button title for restore-failed alert. Defaults to "Okay". |
shouldShowWebRestorationAlert | Bool | Shows an alert asking the user to try restoring on the web if web checkout is enabled. Defaults to true. |
notificationPermissionsDenied | NotificationPermissionsDenied? | Customize the alert shown when notification permissions are denied. nil disables the alert. |
notificationPermissionsDenied.title | String | Title for notification-permissions-denied alert. Defaults to "Notification Permissions Denied". |
notificationPermissionsDenied.message | String | Message for notification-permissions-denied alert. |
notificationPermissionsDenied.actionButtonTitle | String | Action button title for notification-permissions-denied alert. Defaults to "Open Settings". |
notificationPermissionsDenied.closeButtonTitle | String | Close button title for notification-permissions-denied alert. Defaults to "Not now". |
shouldShowPurchaseFailureAlert | Bool | Shows an alert after a purchase fails. Set to false if you handle failures via a PurchaseController. Defaults to true. |
shouldPreload | Bool | Preloads and caches trigger paywalls and products during SDK initialization. Defaults to true. |
automaticallyDismiss | Bool | Automatically dismisses the paywall on successful purchase or restore. Defaults to true. |
overrideProductsByName | [String: String]? | Overrides products on all paywalls using name→identifier mapping (e.g., "primary" → "com.example.premium_monthly"). |
shouldShowWebPurchaseConfirmationAlert | Bool | Shows a localized alert confirming a successful web checkout purchase. Defaults to true. |
transactionBackgroundView | TransactionBackgroundView | View shown behind the system payment sheet during a transaction. .spinner by default; set to .none to remove. |
Usage
let paywallOptions = PaywallOptions()
paywallOptions.isHapticFeedbackEnabled = true
paywallOptions.shouldShowPurchaseFailureAlert = false
paywallOptions.shouldPreload = true
paywallOptions.automaticallyDismiss = true
paywallOptions.transactionBackgroundView = .spinner
paywallOptions.overrideProductsByName = [
"primary": "com.example.premium_monthly",
"tertiary": "com.example.premium_annual"
]
paywallOptions.shouldShowWebRestorationAlert = true
paywallOptions.notificationPermissionsDenied = {
let n = PaywallOptions.NotificationPermissionsDenied()
n.title = "Notification Permissions Denied"
n.message = "Please enable notification permissions from the Settings app so we can notify you when your free trial ends."
n.actionButtonTitle = "Open Settings"
n.closeButtonTitle = "Not now"
return n
}()
let options = SuperwallOptions()
options.paywalls = paywallOptions
Superwall.configure(
apiKey: "pk_your_api_key",
options: options
)Related
How is this guide?