Skip to content

Commit

Permalink
Merge pull request #229 from superwall/develop
Browse files Browse the repository at this point in the history
3.7.1
  • Loading branch information
yusuftor authored Aug 13, 2024
2 parents ea88e78 + f319494 commit 5ff3cae
Show file tree
Hide file tree
Showing 31 changed files with 1,728 additions and 1,415 deletions.
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,15 @@

The changelog for `SuperwallKit`. Also see the [releases](https://github.com/superwall/Superwall-iOS/releases) on GitHub.

## 3.7.1

### Enhancements

- Adds a `custom_placement` event that you can attach to any element in the paywall with a dictionary of parameters. When the element is tapped, the event will be tracked. The name of the placement can be used to trigger a paywall and its params used in audience filters.
- Tracks a `config_attributes` event after calling `Superwall.configure`, which contains info about the configuration of the SDK. This gets tracked whenever you set the delegate.
- Adds in device attributes tracking after setting the interface style override.
- Adds `close_reason` to `PaywallInfo` properties.

## 3.7.0

### Enhancements
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ protocol Trackable {
///
/// For a `TrackableSuperwallEvent`, this is the raw value of an ``SuperwallEvent`` assigned to it.
var rawName: String { get }
/// Any non-superwall parameters that you want to track. Do not include $ signs in parameter names as they will be dropped.
var customParameters: [String: Any] { get }
/// Parameters that can be used in audience filters. Do not include $ signs in parameter names as they will be dropped.
var audienceFilterParams: [String: Any] { get }
/// Determines whether the event has the potential to trigger a paywall. Defaults to true.
var canImplicitlyTriggerPaywall: Bool { get }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ extension TrackableSuperwallEvent {
enum InternalSuperwallEvent {
struct AppOpen: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .appOpen
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

struct AppInstall: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .appInstall
let appInstalledAtString: String
let hasExternalPurchaseController: Bool
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] {
return [
"application_installed_at": appInstalledAtString,
Expand All @@ -47,13 +47,13 @@ enum InternalSuperwallEvent {

struct TouchesBegan: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .touchesBegan
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

struct SurveyClose: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .surveyClose
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

Expand All @@ -66,8 +66,8 @@ enum InternalSuperwallEvent {
paywallInfo: paywallInfo
)
}
var customParameters: [String: Any] {
let output = paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
let output = paywallInfo.audienceFilterParams()
return output + [
"survey_selected_option_title": selectedOption.title,
"survey_custom_response": customResponse as Any
Expand All @@ -91,26 +91,26 @@ enum InternalSuperwallEvent {

struct AppLaunch: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .appLaunch
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

struct Attributes: TrackableSuperwallEvent {
let appInstalledAtString: String
var superwallEvent: SuperwallEvent {
return .userAttributes(customParameters)
return .userAttributes(audienceFilterParams)
}
func getSuperwallParameters() async -> [String: Any] {
return [
"application_installed_at": appInstalledAtString
]
}
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
}

struct IdentityAlias: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .identityAlias
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

Expand All @@ -132,7 +132,7 @@ enum InternalSuperwallEvent {
]
}

var customParameters: [String: Any] {
var audienceFilterParams: [String: Any] {
guard let urlComponents = URLComponents(
url: url,
resolvingAgainstBaseURL: false
Expand Down Expand Up @@ -172,41 +172,58 @@ enum InternalSuperwallEvent {

struct FirstSeen: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .firstSeen
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

struct Reset: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .reset
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

struct AppClose: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .appClose
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

struct SessionStart: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .sessionStart
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

struct ConfigRefresh: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .configRefresh
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] { [:] }
}

struct ConfigAttributes: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .configAttributes
let options: SuperwallOptions
let hasExternalPurchaseController: Bool
let hasDelegate: Bool

var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] {
var params = options.toDictionary()
params += [
"using_purchase_controller": hasExternalPurchaseController,
"has_delegate": hasDelegate
]
return params
}
}

struct DeviceAttributes: TrackableSuperwallEvent {
var superwallEvent: SuperwallEvent {
return .deviceAttributes(attributes: deviceAttributes)
}
let deviceAttributes: [String: Any]

var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] {
return deviceAttributes
}
Expand Down Expand Up @@ -237,10 +254,10 @@ enum InternalSuperwallEvent {
}
}
let eventData: EventData?
var customParameters: [String: Any] {
var audienceFilterParams: [String: Any] {
switch state {
case .complete(paywallInfo: let paywallInfo):
return paywallInfo.customParams()
return paywallInfo.audienceFilterParams()
default:
return [:]
}
Expand All @@ -266,7 +283,7 @@ enum InternalSuperwallEvent {
struct SubscriptionStatusDidChange: TrackableSuperwallEvent {
let superwallEvent: SuperwallEvent = .subscriptionStatusDidChange
let subscriptionStatus: SubscriptionStatus
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] {
return [
"subscription_status": subscriptionStatus.description
Expand All @@ -283,7 +300,7 @@ enum InternalSuperwallEvent {
)
}
let triggerName: String
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]

func getSuperwallParameters() async -> [String: Any] {
var params: [String: Any] = [
Expand Down Expand Up @@ -340,7 +357,7 @@ enum InternalSuperwallEvent {
reason: statusReason
)
}
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
func getSuperwallParameters() async -> [String: Any] {
var params = [
"source_event_name": eventData?.name ?? "",
Expand Down Expand Up @@ -378,8 +395,8 @@ enum InternalSuperwallEvent {
func getSuperwallParameters() async -> [String: Any] {
return await paywallInfo.eventParams()
}
var customParameters: [String: Any] {
return paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
return paywallInfo.audienceFilterParams()
}
}

Expand All @@ -403,8 +420,8 @@ enum InternalSuperwallEvent {
params += eventParams
return params
}
var customParameters: [String: Any] {
return paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
return paywallInfo.audienceFilterParams()
}
}

Expand All @@ -416,8 +433,38 @@ enum InternalSuperwallEvent {
func getSuperwallParameters() async -> [String: Any] {
return await paywallInfo.eventParams()
}
var customParameters: [String: Any] {
return paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
return paywallInfo.audienceFilterParams()
}
}

struct CustomPlacement: TrackableSuperwallEvent {
var superwallEvent: SuperwallEvent {
return .customPlacement(
name: name,
params: params,
paywallInfo: paywallInfo
)
}
var rawName: String {
return name
}
let paywallInfo: PaywallInfo
let name: String
let params: [String: Any]

func getSuperwallParameters() async -> [String: Any] {
var eventParams = await paywallInfo.eventParams()
eventParams += params
eventParams += [
"name": name
]
return eventParams
}
var audienceFilterParams: [String: Any] {
var customParams = paywallInfo.audienceFilterParams()
customParams += params
return customParams
}
}

Expand All @@ -440,8 +487,8 @@ enum InternalSuperwallEvent {
return .restoreComplete
}
}
var customParameters: [String: Any] {
return paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
return paywallInfo.audienceFilterParams()
}
func getSuperwallParameters() async -> [String: Any] {
var eventParams = await paywallInfo.eventParams()
Expand Down Expand Up @@ -498,14 +545,15 @@ enum InternalSuperwallEvent {
let paywallInfo: PaywallInfo
let product: StoreProduct?
let model: StoreTransaction?
var customParameters: [String: Any] {

var audienceFilterParams: [String: Any] {
switch state {
case .abandon(let product):
var params = paywallInfo.customParams()
var params = paywallInfo.audienceFilterParams()
params["abandoned_product_id"] = product.productIdentifier
return params
default:
return paywallInfo.customParams()
return paywallInfo.audienceFilterParams()
}
}

Expand Down Expand Up @@ -546,8 +594,8 @@ enum InternalSuperwallEvent {
}
let paywallInfo: PaywallInfo
let product: StoreProduct
var customParameters: [String: Any] {
return paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
return paywallInfo.audienceFilterParams()
}

func getSuperwallParameters() async -> [String: Any] {
Expand All @@ -564,8 +612,8 @@ enum InternalSuperwallEvent {
}
let paywallInfo: PaywallInfo
let product: StoreProduct
var customParameters: [String: Any] {
return paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
return paywallInfo.audienceFilterParams()
}

func getSuperwallParameters() async -> [String: Any] {
Expand All @@ -582,8 +630,8 @@ enum InternalSuperwallEvent {
}
let paywallInfo: PaywallInfo
let product: StoreProduct
var customParameters: [String: Any] {
return paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
return paywallInfo.audienceFilterParams()
}

func getSuperwallParameters() async -> [String: Any] {
Expand Down Expand Up @@ -627,8 +675,8 @@ enum InternalSuperwallEvent {
}
return eventParams
}
var customParameters: [String: Any] {
return paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
return paywallInfo.audienceFilterParams()
}
}

Expand All @@ -640,8 +688,8 @@ enum InternalSuperwallEvent {
case retry(Int)
}
let state: State
var customParameters: [String: Any] {
return paywallInfo.customParams()
var audienceFilterParams: [String: Any] {
return paywallInfo.audienceFilterParams()
}

var superwallEvent: SuperwallEvent {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ enum UserInitiatedEvent {
struct Track: TrackableUserInitiatedEvent {
let rawName: String
let canImplicitlyTriggerPaywall: Bool
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
var isFeatureGatable: Bool

func getSuperwallParameters() async -> [String: Any] {
Expand Down Expand Up @@ -46,6 +46,6 @@ enum UserInitiatedEvent {
let state: State
let pushNotificationId: String?
let canImplicitlyTriggerPaywall = true
var customParameters: [String: Any] = [:]
var audienceFilterParams: [String: Any] = [:]
}*/
}
Loading

0 comments on commit 5ff3cae

Please sign in to comment.