Most of what occurs in Superwall can be viewed using the delegate method to respond to events:
Copy
Ask AI
class SWDelegate: SuperwallDelegate { func handleSuperwallEvent(withInfo eventInfo: SuperwallEventInfo) { switch eventInfo.event { case .transactionComplete(let transaction, let product, let paywallInfo): print("Converted from paywall originalTransactionIdentifier: \(transaction?.originalTransactionIdentifier ?? "")") print("Converted from paywall storeTransactionId: \(transaction?.storeTransactionId ?? "")") print("Converted from paywall productIdentifier: \(product.productIdentifier)") print("Converted from paywall paywallInfo: \(paywallInfo.identifier)") case .transactionRestore(let restoreType, let paywallInfo): print("transactionRestore restoreType \(restoreType)") case let .customPlacement(name, params, paywallInfo): // Forward Mixpanel/Ampltiude/etc print("\(name) - \(params) - \(paywallInfo)") default: // And several more events to use... print("Default event: \(eventInfo.event.description)") } }}
You can be informed of subscription status changes using the delegate. If you need to set or handle the status on your own, use a purchase controller — this function is only for informational, tracking or similar purposes:
Copy
Ask AI
class SWDelegate: SuperwallDelegate { func subscriptionStatusDidChange(from oldValue: SubscriptionStatus, to newValue: SubscriptionStatus) { // Log or handle subscription change in your Ui }}
The delegate also has callbacks for several paywall events, such dismissing, presenting, and more. Here’s an example:
Copy
Ask AI
class SWDelegate: SuperwallDelegate { func didPresentPaywall(withInfo paywallInfo: PaywallInfo) { // paywallInfo will contain all of the presented paywall's info }}