Releases: superwall/Superwall-iOS
Releases · superwall/Superwall-iOS
3.3.2
3.3.1
Enhancements
- Adds logic to enhance debugging by sending a stringified version of all the device/user/event parameters used to evaluate rules within the
paywallPresentationRequest
event. This is behind a feature flag. - Adds logic to keep the user's generated
seed
value consistent whenSuperwall.identify
is called. This is behind a feature flag.
Fixes
- Fixes rare issue when using limits on a campaign rule. If a paywall encountered an error preventing it from being presented, it may still have been counted as having been presented. This would then have affected future paywall presentation requests underneath the same rule.
- Fixes issue where assets weren't being accessed correctly when installing the SDK via CocoaPods.
- Fixes crash if you tried to save an object that didn't conform to NSSecureCoding in user attributes.
3.3.0
Enhancements
- Adds the ability to add a paywall exit survey. Surveys are configured via the dashboard and added to paywalls. When added to a paywall, it will attempt to display when the user taps the close button. If the paywall has the
modalPresentationStyle
ofpageSheet
,formSheet
, orpopover
, the survey will also attempt to display when the user tries to drag to dismiss the paywall. The probability of the survey showing is determined by the survey's configuration in the dashboard. A user will only ever see the survey once unless you reset responses via the dashboard. The survey will always show on exit of the paywall in the debugger. - Adds the ability to add
survey_response
as a trigger and use the selected option title in rules. - Adds new
PaywallCloseReason
.manualClose
.
Fixes
- Fixes a recursive issue that was happening if you forgot to configure the Superwall instance.
- Fixes issue where a preloaded
Paywall
object wouldn't have had an experiment available on itsinfo
property. - Fixes "error while deleting file" log on clean install of app.
- Exposes the
IdentityOptions
initializer. - Fixes thread safety issues.
3.2.2
Fixes
- If using a purchase controller, returning
.restored
fromrestorePurchases()
would dismiss the paywall and assume an active subscription status. This was incorrect behavior. Now we specifically check both the subscription status and the restoration result to determine whether to dismiss the paywall, regardless of whether a purchase controller is being used. - Added extra logging when a timeout occurs during paywall presentation.
3.2.1
3.2.0
Enhancements
- Adds
user.seed
to user attributes for use in campaign rules. This assigns a user a random number from 0 to 99. This allows you to segment users into cohorts across campaigns. For example, in campaign A you may sayif user.seed < 50 { show variant A } else { show variant B }
, in campaign B you may sayif user.seed < 50 { show variant X } else { show variant Y }
. Therefore users who see variant A will then see variant X. - Adds ability to use
device.interfaceType
in campaign rules to show different paywalls for different interface types. Use this instead ofdevice.deviceModel
, as that can lead to inaccurate results on some devices.interfaceType
can be one ofipad/iphone/mac/carplay/tv/unspecified
. Note that iPhone screen size emulated in iPad will beiphone
. Built for iPad on Mac will beipad
. - Adds
presentation_source_type
toPaywallInfo
, which lets you know the source function that retrieved the paywall – register/getPaywall/implicit. - Tracks whether a purchase controller is being used on the
AppInstall
event.
Fixes
- Fixes issue where the transition from background to foreground may not have been detected on app launch, resulting in paywalls not showing.
- Fixes iOS 14 transaction validation issue that affects apps on v3.0.2+.
- Adds safeguard for developers returning an empty
NSError
on purchase failure which could cause a crash.
3.1.1
Enhancements
- Adds
shouldShowPurchaseFailureAlert
as aPaywallOption
. This defaults totrue
. If you're using aPurchaseController
, set this tofalse
to disable the alert that shows after the purchase fails.
Fixes
- Fixes issue where preloaded paywalls may be associated with the incorrect experiment.
- Fixes issue where a secondary paywall wouldn't present with the
transaction_fail
trigger. - Fixes issue where the paywall preview wasn't obeying free trial/default paywall overrides.
3.1.0
Enhancements
- Adds support for paywalls that include a free trial notification. After starting a free trial, the app checks whether the paywall should notify the user when their trial is about to end. If so, the user will be asked to enable notifications (if they haven't already) before scheduling a local notification. You can add a free trial notification to your paywall from the paywall editor.
- Adds ability to use
device.minutesSince_X
,device.hoursSince_X
,device.daysSince_X
,device.monthsSince_X
, anddevice.yearsSince_X
in campaign rules and paywalls, whereX
is an event name. This can include Superwall events, such asapp_open
, or your own events. - Prints out the Superwall SDK version when the
debug
logLevel is enabled. - Adds
removeAllPendingSuperwallNotificationRequests()
,removeAllPendingNonSuperwallNotificationRequests()
,removeAllDeliveredSuperwallNotifications()
, andremoveAllDeliveredNonSuperwallNotifications()
toUNUserNotificationCenter
. You can use these methods to remove your app's notifications without affecting Superwall's local notifications and vice-versa. - Updates RevenueCat to the latest version in our RevenueCat example app.
Fixes
- Fixes a Core Data multi-threading issue when performing a count. If you had enabled Core Data multi-threading assertions in Xcode, this will have caused a crash.
- Fixes very rare crash when purchasing without a
PurchaseController
. - Reduces reliance on Combine when using register to fix memory management crashes.
3.0.3
3.0.2
Fixes
- Fixes issues with Xcode 15 and iOS 17.
- Moves the loading of localizations to only when the debugger is launched, therefore reducing setup time of Superwall.
- Removes reliance on force unwrapping/force casting as a safety precaution.
- Moves tracking of free trial start and transaction complete events to a higher priority Task. Before, this was of background priority and would take a while to track.
- Fix crash when trying to access
Superwall.shared.userId
. - Prices in variables are now rounded down, e.g. 3.999 becomes 3.99, rather than 4.00.
- Fixes incorrect values for
trialPeriodPrice
,trialPeriodDailyPrice
,trialPeriodWeeklyPrice
,trialPeriodMonthlyPrice
,trialPeriodYearlyPrice
variables.