Enhancements
- Adds watchOS 8+ and tvOS 15+ support through Swift Package Manager, for purchases, subscription status, entitlements, user attributes and events. Paywalls can't be shown there, so when one would show,
registerruns non-gated features and returns an error for gated ones.
Fixes
- Placements named after a standard Superwall event are now rejected by
getPaywallandPaywallViewtoo, andregisterreports this to its error handler instead of silently doing nothing. - Fixes setting a
$-prefixed attribute from a paywall deleting the existing attribute with the same name. Keys beginning with$are reserved, so they're now ignored. - Fixes
reset()leaving the new user's attributes withoutaliasIdandseed, so audience filters on them didn't match. - Fixes
reset()occasionally deleting the new user's alias and seed from disk, giving them another alias on the next launch. - Fixes the seed derived from the user ID being applied to a user who had since logged out or switched.
- Fixes
reset(), andidentify(userId:)switching user, sending severaluser_attributesevents for one change. The new user's Apple Search Ads, MMP and install-scoped integration attributes are now in place when the call returns. - Fixes config refreshes being able to run at the same time and apply their configs out of order. A refresh called while the launch config fetch is still finishing now waits for it.
- Fixes
Superwall.shared.configurationStatusstaying.pendingwhen the config couldn't be fetched. It's now.failed. - Fixes
getCustomerInfo()never returning when the SDK can't load its configuration, such as on a first launch without a connection. - Fixes
refreshCustomerInfo()returning empty customer info when the fetch fails, instead of the device's purchases. - Fixes the Mac preview window sometimes selecting a different paywall than the one linked, without saying why.
- Stops sending user and device attributes for enrichment, such as the demand score, while
eventTrackingBehavioris.none. - Fixes a paywall showing and charging the wrong billing plan when the same App Store product is sold on both the up-front and monthly plans, on one paywall or across paywalls. Each paywall slot now keeps its own plan. Product identifiers are unchanged.
- Fixes paywalls letting the app rotate into orientations it doesn't allow. A paywall now allows the same orientations as the screen it covers, which matters for apps that lock orientation in a view controller rather than in their Info.plist, such as Unity games. Previously, a landscape-only game could be rotated to portrait while a paywall was showing and stayed in portrait after it closed.