Skip to content

Releases: superwall/Superwall-iOS

3.4.3

12 Oct 08:08
42ddc19
Compare
Choose a tag to compare

Enhancements

  • Exposes isPaywallPresented convenience variable.
  • Adds device_attributes event, which tracks the device attributes every new session.
  • Stops preloading paywalls that we know won't ever match.
  • Adds a .restored case to PurchaseResult and PurchaseResultObjc. Return this from your PurchaseController when you detect a user has tried to purchase a product that they've already purchased. This happens when transaction.transactionDate < purchaseDate, where purchaseDate is the date that the purchase was initiated. Check out RCPurchaseController.swift in our Superwall-UIKit+RevenueCat example app for how to implement this. If you let Superwall handle purchasing, then we will automatically detect this.
  • Adds restore_via_purchase_attempt to a transaction_restore event. This indicates whether the restoration happened due to the user purchasing or restoring.

3.4.2

29 Sep 03:16
Compare
Choose a tag to compare

Fixes

  • Fixes issue where multiple events registered in quick succession may not be performed in serial, resulting in unexpected paywalls.
  • Fixes issue where transaction data wouldn't be available for those who are using a purchase controller.

3.4.0

19 Sep 06:52
c920dc0
Compare
Choose a tag to compare

Enhancements

  • Adds sdkVersion, sdkVersionPadded, appBuildString, and appBuildStringNumber to the device object for use in rules. sdkVersion is the version of the sdk, e.g. 3.4.0. sdkVersionPadded is the sdk version padded with zeros for use with string comparison. For example 003.004.000. appBuildString is the build of your app and appBuildStringNumber is the build of your app casted as an Int (if possible).
  • When you experience no_rule_match, the TriggerFire event params will specify which part of the rules didn't match in the format "unmatched_rule_<id>": "<outcome>". Where outcome will either be OCCURRENCE, referring to the limit applied to a rule, or EXPRESSION. The id is the experiment id.
  • Adds a touches_began implicit trigger. By adding the touches_began event to a campaign, you can show a paywall the first time a user touches anywhere in your app.
  • Adds the ability to include a close button on a survey.
  • If running in sandbox, the duration of a free trial notification added to a paywall will be converted from days to minutes for testing purposes.
  • Adds the ability to show a survey after purchasing a product.

Fixes

  • Fixes issue where a survey attached to a paywall wouldn't show if you were also using the paywall_decline trigger.
  • Fixes issue where verification was happening after the finishing of transactions when not using a PurchaseController.
  • Fixes issue where the retrieved StoreTransaction associated with the purchased product may be nil.
  • Fixes issue where a presentationRequest wasn't being tracked for implicit triggers like session_start when there was no internet.

3.3.2

24 Aug 09:37
57ef30f
Compare
Choose a tag to compare

Fixes

  • Fixes issue where a rule added with paywall_decline would result in the feature block being called too early.
  • Fixes issue where paywall assignments may not have been cleared when resetting.

3.3.1

18 Aug 09:18
e673a54
Compare
Choose a tag to compare

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 when Superwall.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

09 Aug 03:49
Compare
Choose a tag to compare

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 of pageSheet, formSheet, or popover, 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 its info property.
  • Fixes "error while deleting file" log on clean install of app.
  • Exposes the IdentityOptions initializer.
  • Fixes thread safety issues.

3.2.2

26 Jul 06:05
ad6949a
Compare
Choose a tag to compare

Fixes

  • If using a purchase controller, returning .restored from restorePurchases() 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

20 Jul 09:33
be8b0bf
Compare
Choose a tag to compare

Fixes

  • Fixes user_attributes being unnecessarily fired on every cold app launch.

3.2.0

20 Jul 05:57
819fab5
Compare
Choose a tag to compare

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 say if user.seed < 50 { show variant A } else { show variant B }, in campaign B you may say if 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 of device.deviceModel, as that can lead to inaccurate results on some devices. interfaceType can be one of ipad/iphone/mac/carplay/tv/unspecified. Note that iPhone screen size emulated in iPad will be iphone. Built for iPad on Mac will be ipad.
  • Adds presentation_source_type to PaywallInfo, 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

10 Jul 10:55
9e41733
Compare
Choose a tag to compare

Enhancements

  • Adds shouldShowPurchaseFailureAlert as a PaywallOption. This defaults to true. If you're using a PurchaseController, set this to false 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.