Skip to content

Commit b7b080f

Browse files
authored
feat: track landing page (#26)
1 parent 58b24d2 commit b7b080f

File tree

5 files changed

+30
-3
lines changed

5 files changed

+30
-3
lines changed

CompassSDK/Info.plist

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
<key>CFBundlePackageType</key>
1616
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>2.13.0</string>
18+
<string>2.14.0</string>
1919
<key>CFBundleVersion</key>
2020
<string>$(CURRENT_PROJECT_VERSION)</string>
2121
</dict>

CompassSDK/Storage/CompassStorage.swift

+13-1
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ protocol CompassStorage {
1818
var userVars: Vars { get }
1919
var userSegments: [String] { get }
2020
var hasConsent: Bool? { get }
21+
var landingPage: String? { get }
2122
func addSessionVar(name: String, value: String)
2223
func addUserVar(name: String, value: String)
2324
func addUserSegment(_ name: String)
2425
func addUserSegments(_ segments: [String])
2526
func removeUserSegment(_ name: String)
2627
func clearUserSegments()
2728
func setConsent(_ hasConsent: Bool)
29+
func setLandingPage(_ landingPage: String)
2830
}
2931

3032
enum Store: String {
@@ -45,8 +47,9 @@ class PListCompassStorage: PListStorage {
4547
var sessionVars: Vars?
4648
var userSegments: [String]?
4749
var hasConsent: Bool?
50+
var landingPage: String?
4851

49-
static var empty: Model {.init(numVisits: 0, userId: nil, suid: nil, firstVisit: nil, lastVisit: nil, userVars: Vars(), sessionVars: Vars(), userSegments: [], hasConsent: nil)}
52+
static var empty: Model {.init(numVisits: 0, userId: nil, suid: nil, firstVisit: nil, lastVisit: nil, userVars: Vars(), sessionVars: Vars(), userSegments: [], hasConsent: nil, landingPage: nil)}
5053
}
5154

5255
init() {
@@ -95,6 +98,7 @@ extension PListCompassStorage: CompassStorage {
9598
model?.sessionId = sessionId
9699
model?.sessionExpirationDate = Date().adding(minutes: 30)
97100
model?.sessionVars = Vars()
101+
model?.landingPage = nil
98102

99103
return sessionId
100104
}
@@ -217,5 +221,13 @@ extension PListCompassStorage: CompassStorage {
217221

218222
return firstVisit
219223
}
224+
225+
var landingPage: String? {
226+
return model?.landingPage
227+
}
228+
229+
func setLandingPage(_ landingPage: String) {
230+
model?.landingPage = landingPage
231+
}
220232
}
221233

CompassSDK/Tracker/Core/CompassTracker.swift

+11
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@ public protocol CompassTracking: AnyObject {
8383
func clearUserSegments()
8484
func setConsent(_ hasConsent: Bool)
8585
func getUserId() -> String
86+
func setLandingPage(_ landingPage: String)
87+
func setLandingPage(_ landingPage: URL)
8688
}
8789

8890
public class CompassTracker: Tracker {
@@ -194,6 +196,14 @@ extension CompassTracker: ScrollPercentProvider {
194196
}
195197

196198
extension CompassTracker: CompassTracking {
199+
public func setLandingPage(_ landingPage: String) {
200+
storage.setLandingPage(landingPage)
201+
}
202+
203+
public func setLandingPage(_ landingPage: URL) {
204+
storage.setLandingPage(landingPage.absoluteString)
205+
}
206+
197207
@available(*, deprecated, renamed: "setSiteUserId")
198208
public func setUserId(_ userId: String?) {
199209
setSiteUserId(userId)
@@ -329,6 +339,7 @@ internal extension CompassTracker {
329339
finalTrackInfo.pageVars = pageVars
330340
finalTrackInfo.userSegments = storage.userSegments
331341
finalTrackInfo.hasConsent = storage.hasConsent
342+
finalTrackInfo.landingPage = storage.landingPage
332343
finalTrackInfo.tik = tick!
333344

334345
completion(finalTrackInfo)

CompassSDK/Tracker/Core/IngestTrackInfo.swift

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ struct IngestTrackInfo: Encodable {
1313
case visitDuration = "l"
1414
case scrollPercent = "sc"
1515
case implodedConversions = "conv"
16+
case landingPage = "lp"
1617
}
1718

1819
private var trackInfo = TrackInfo()
@@ -26,6 +27,8 @@ struct IngestTrackInfo: Encodable {
2627
var scrollPercent: Float?
2728
private var implodedConversions: String?
2829

30+
var landingPage: String?
31+
2932
public func encode(to encoder: Encoder) throws {
3033
var container = encoder.container(keyedBy: CodingKeys.self)
3134

@@ -34,6 +37,7 @@ struct IngestTrackInfo: Encodable {
3437
try container.encodeIfPresent(visitDuration, forKey: .visitDuration)
3538
try container.encodeIfPresent(scrollPercent, forKey: .scrollPercent)
3639
try container.encodeIfPresent(implodedConversions, forKey: .implodedConversions)
40+
try container.encodeIfPresent(landingPage, forKey: .landingPage)
3741
}
3842
}
3943

MarfeelSDK-iOS.podspec

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Pod::Spec.new do |spec|
1616
#
1717

1818
spec.name = "MarfeelSDK-iOS"
19-
spec.version = "2.13.0"
19+
spec.version = "2.14.0"
2020
spec.summary = "iOS version of MarfeelSDK."
2121

2222

0 commit comments

Comments
 (0)