refreshCustomerInfo

Fetch the user's latest entitlements from Superwall after your server reports a purchase, and get updated CustomerInfo with async/await or a completion handler.

refreshCustomerInfo() fetches entitlements from Superwall, even if they were fetched recently. Use it after your server reports a custom store purchase to make the updated access available in your app. Unlike getCustomerInfo(), it forces a server refresh.

Requirements

Available in SuperwallKit 4.19.0 and later. Configure Superwall before calling it. Your server must have reported the purchase to Superwall; this method does not query your billing provider.

Signature

@discardableResult
public func refreshCustomerInfo() async -> CustomerInfo

public func refreshCustomerInfo(completion: @escaping (CustomerInfo) -> Void)

Prop

Type

Usage

After your server confirms it has reported the purchase:

let customerInfo = await Superwall.shared.refreshCustomerInfo()
print(customerInfo.entitlements)

Or use a completion handler:

Superwall.shared.refreshCustomerInfo { customerInfo in
  DispatchQueue.main.async {
    self.updatePurchaseHistory(customerInfo)
  }
}

The fetched entitlements update customerInfo and entitlements. The SDK already refreshes entitlements in the background after a successful custom product purchase, including when your PurchaseController returns .purchased. Call this method if server reporting finishes later. Apps also refresh entitlements on foreground, including apps without web paywalls.

Limitations

  • If the fetch fails, the method returns the current customerInfo; it does not throw. A returned value alone does not confirm the server has granted access.
  • In Test Mode, it makes no request and returns the test mode customer info.
  • A PurchaseController remains responsible for managing subscriptionStatus.

How is this guide?

On this page