Skip to content

Commit 1920348

Browse files
committed
Rename Anonymous to Unknown User throughout iOS SDK
- Renamed classes: AnonymousUserManager → UnknownUserManager, etc. - Updated config properties: enableAnonActivation → enableUnknownUserActivation - Migrated storage keys: itbl_anonymous* → itbl_unknown_user* - Updated API endpoints: anonymoususer/* → unknownuser/* - Fixed Xcode project references and dependencies - All builds and functionality preserved
1 parent eefbf17 commit 1920348

28 files changed

+367
-264
lines changed

.claude/settings.local.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"permissions": {
3+
"allow": [
4+
"Bash(ln:*)",
5+
"Bash(xcodebuild build:*)"
6+
],
7+
"deny": []
8+
}
9+
}

mac_llm_build.sh

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
#!/bin/bash
2+
3+
# This script is to be used by LLMs and AI agents to build the Iterable Swift SDK on macOS.
4+
# It uses xcpretty to format the build output and only shows errors.
5+
# It also checks if the build is successful and exits with the correct status.
6+
7+
# Check if running on macOS
8+
if [[ "$(uname)" != "Darwin" ]]; then
9+
echo "❌ This script requires macOS to run Xcode builds"
10+
exit 1
11+
fi
12+
13+
# Make sure xcpretty is installed
14+
if ! command -v xcpretty &> /dev/null; then
15+
echo "xcpretty not found, installing via gem..."
16+
gem install xcpretty
17+
fi
18+
19+
echo "Building Iterable Swift SDK..."
20+
21+
# Create a temporary file for the build output
22+
TEMP_OUTPUT=$(mktemp)
23+
24+
# Run the build and capture all output
25+
xcodebuild \
26+
-project swift-sdk.xcodeproj \
27+
-scheme "swift-sdk" \
28+
-configuration Debug \
29+
-sdk iphonesimulator \
30+
build > $TEMP_OUTPUT 2>&1
31+
32+
# Check the exit status
33+
BUILD_STATUS=$?
34+
35+
# Show errors and warnings if build failed
36+
if [ $BUILD_STATUS -eq 0 ]; then
37+
echo "✅ Iterable SDK build succeeded!"
38+
else
39+
echo "❌ Iterable SDK build failed with status $BUILD_STATUS"
40+
echo ""
41+
echo "🔍 Build errors:"
42+
grep -E 'error:|fatal:' $TEMP_OUTPUT | head -10
43+
echo ""
44+
echo "⚠️ Build warnings:"
45+
grep -E 'warning:' $TEMP_OUTPUT | head -5
46+
fi
47+
48+
# Remove the temporary file
49+
rm $TEMP_OUTPUT
50+
51+
exit $BUILD_STATUS

sample-apps/swift-sample-app/swift-sample-app/AppDelegate.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate, IterableAuthDelegate {
4343
config.customActionDelegate = self
4444
config.urlDelegate = self
4545
config.inAppDisplayInterval = 1
46-
config.anonUserDelegate = self
47-
config.enableAnonTracking = true
46+
config.unknownUserHandler = self
47+
config.enableUnknownUserActivation = true
4848
config.authDelegate = self
4949
IterableAPI.initialize(apiKey: iterableApiKey,
5050
launchOptions: launchOptions,
@@ -175,9 +175,9 @@ extension AppDelegate: IterableURLDelegate {
175175
}
176176
}
177177

178-
extension AppDelegate: IterableAnonUserDelegate {
179-
func onAnonUserCreated(userId: String) {
180-
print("UserId Created from anonsession: \(userId)")
178+
extension AppDelegate: IterableUnknownUserHandler {
179+
func onUnknownUserCreated(userId: String) {
180+
print("UserId Created from unknown user session: \(userId)")
181181
}
182182
}
183183

sample-apps/swift-sample-app/swift-sample-app/Base.lproj/Main.storyboard

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<segue destination="Ez8-MY-tka" kind="show" identifier="showCoffeeSegue" id="pgY-3d-VNl"/>
3636
</connections>
3737
</tableViewCell>
38-
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="checkmark" indentationWidth="10" reuseIdentifier="anonymousUsageTrackCell" id="nSd-28-WlN">
38+
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="checkmark" indentationWidth="10" reuseIdentifier="unknownUserUsageTrackCell" id="nSd-28-WlN">
3939
<rect key="frame" x="0.0" y="93.5" width="375" height="43.5"/>
4040
<autoresizingMask key="autoresizingMask"/>
4141
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="nSd-28-WlN" id="4YR-d9-FwM">

sample-apps/swift-sample-app/swift-sample-app/CoffeeListTableViewController.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ class CoffeeListTableViewController: UITableViewController {
7373
}
7474
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
7575
if indexPath.section == 0 {
76-
let cell = tableView.dequeueReusableCell(withIdentifier: "anonymousUsageTrackCell", for: indexPath)
77-
cell.textLabel?.text = IterableAPI.getAnonymousUsageTracked() ? "Tap to disable Anonymous Usage Track" : "Tap to enable Anonymous Usage Track"
76+
let cell = tableView.dequeueReusableCell(withIdentifier: "unknownUserUsageTrackCell", for: indexPath)
77+
cell.textLabel?.text = IterableAPI.getUnknownUserUsageTracked() ? "Tap to disable Unknown User Usage Track" : "Tap to enable Unknown User Usage Track"
7878
cell.textLabel?.numberOfLines = 0
79-
cell.accessoryType = IterableAPI.getAnonymousUsageTracked() ? .checkmark : .none
79+
cell.accessoryType = IterableAPI.getUnknownUserUsageTracked() ? .checkmark : .none
8080
return cell
8181
} else {
8282
let cell = tableView.dequeueReusableCell(withIdentifier: "coffeeCell", for: indexPath)
@@ -90,8 +90,8 @@ class CoffeeListTableViewController: UITableViewController {
9090

9191
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
9292
if indexPath.section == 0 {
93-
let permissionToTrack = IterableAPI.getAnonymousUsageTracked()
94-
IterableAPI.setAnonymousUsageTracked(isAnonymousUsageTracked: !permissionToTrack)
93+
let permissionToTrack = IterableAPI.getUnknownUserUsageTracked()
94+
IterableAPI.setUnknownUserUsageTracked(isUnknownUserUsageTracked: !permissionToTrack)
9595
self.tableView.reloadData()
9696
}
9797
}

swift-sdk.xcodeproj/project.pbxproj

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -428,10 +428,10 @@
428428
DF7302152C2C176E0002633A /* AnonymousUserComplexCriteriaMatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF7302142C2C176E0002633A /* AnonymousUserComplexCriteriaMatchTests.swift */; };
429429
DF97D12B2C2D4A060034D38C /* AnonymousUserCriteriaIsSetTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF97D12A2C2D4A060034D38C /* AnonymousUserCriteriaIsSetTests.swift */; };
430430
DFFD62392C3681B900010883 /* UserMergeScenariosTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFFD62382C3681B900010883 /* UserMergeScenariosTests.swift */; };
431-
E9EA7C9F2C1EDE5800A9D6FB /* AnonymousUserManager+Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA7C9B2C1EDE5800A9D6FB /* AnonymousUserManager+Functions.swift */; };
432-
E9EA7CA02C1EDE5800A9D6FB /* AnonymousUserMerge.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA7C9C2C1EDE5800A9D6FB /* AnonymousUserMerge.swift */; };
433-
E9EA7CA12C1EDE5800A9D6FB /* AnonymousUserManagerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA7C9D2C1EDE5800A9D6FB /* AnonymousUserManagerProtocol.swift */; };
434-
E9EA7CA22C1EDE5800A9D6FB /* AnonymousUserManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA7C9E2C1EDE5800A9D6FB /* AnonymousUserManager.swift */; };
431+
E9EA7C9F2C1EDE5800A9D6FB /* UnknownUserManager+Functions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA7C9B2C1EDE5800A9D6FB /* UnknownUserManager+Functions.swift */; };
432+
E9EA7CA02C1EDE5800A9D6FB /* UnknownUserMerge.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA7C9C2C1EDE5800A9D6FB /* UnknownUserMerge.swift */; };
433+
E9EA7CA12C1EDE5800A9D6FB /* UnknownUserManagerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA7C9D2C1EDE5800A9D6FB /* UnknownUserManagerProtocol.swift */; };
434+
E9EA7CA22C1EDE5800A9D6FB /* UnknownUserManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA7C9E2C1EDE5800A9D6FB /* UnknownUserManager.swift */; };
435435
E9EA7CA82C1EE3BA00A9D6FB /* AnonymousUserCriteriaMatchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9EA7CA62C1EE3BA00A9D6FB /* AnonymousUserCriteriaMatchTests.swift */; };
436436
/* End PBXBuildFile section */
437437

@@ -870,10 +870,10 @@
870870
DF7302142C2C176E0002633A /* AnonymousUserComplexCriteriaMatchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnonymousUserComplexCriteriaMatchTests.swift; sourceTree = "<group>"; };
871871
DF97D12A2C2D4A060034D38C /* AnonymousUserCriteriaIsSetTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousUserCriteriaIsSetTests.swift; sourceTree = "<group>"; };
872872
DFFD62382C3681B900010883 /* UserMergeScenariosTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserMergeScenariosTests.swift; sourceTree = "<group>"; };
873-
E9EA7C9B2C1EDE5800A9D6FB /* AnonymousUserManager+Functions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "AnonymousUserManager+Functions.swift"; sourceTree = "<group>"; };
874-
E9EA7C9C2C1EDE5800A9D6FB /* AnonymousUserMerge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousUserMerge.swift; sourceTree = "<group>"; };
875-
E9EA7C9D2C1EDE5800A9D6FB /* AnonymousUserManagerProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousUserManagerProtocol.swift; sourceTree = "<group>"; };
876-
E9EA7C9E2C1EDE5800A9D6FB /* AnonymousUserManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousUserManager.swift; sourceTree = "<group>"; };
873+
E9EA7C9B2C1EDE5800A9D6FB /* UnknownUserManager+Functions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UnknownUserManager+Functions.swift"; sourceTree = "<group>"; };
874+
E9EA7C9C2C1EDE5800A9D6FB /* UnknownUserMerge.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnknownUserMerge.swift; sourceTree = "<group>"; };
875+
E9EA7C9D2C1EDE5800A9D6FB /* UnknownUserManagerProtocol.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnknownUserManagerProtocol.swift; sourceTree = "<group>"; };
876+
E9EA7C9E2C1EDE5800A9D6FB /* UnknownUserManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UnknownUserManager.swift; sourceTree = "<group>"; };
877877
E9EA7CA62C1EE3BA00A9D6FB /* AnonymousUserCriteriaMatchTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AnonymousUserCriteriaMatchTests.swift; sourceTree = "<group>"; };
878878
/* End PBXFileReference section */
879879

@@ -1708,10 +1708,10 @@
17081708
isa = PBXGroup;
17091709
children = (
17101710
9F0616402C9CA9D200FE2E6A /* IterableIdentityResolution.swift */,
1711-
E9EA7C9E2C1EDE5800A9D6FB /* AnonymousUserManager.swift */,
1712-
E9EA7C9B2C1EDE5800A9D6FB /* AnonymousUserManager+Functions.swift */,
1713-
E9EA7C9D2C1EDE5800A9D6FB /* AnonymousUserManagerProtocol.swift */,
1714-
E9EA7C9C2C1EDE5800A9D6FB /* AnonymousUserMerge.swift */,
1711+
E9EA7C9E2C1EDE5800A9D6FB /* UnknownUserManager.swift */,
1712+
E9EA7C9B2C1EDE5800A9D6FB /* UnknownUserManager+Functions.swift */,
1713+
E9EA7C9D2C1EDE5800A9D6FB /* UnknownUserManagerProtocol.swift */,
1714+
E9EA7C9C2C1EDE5800A9D6FB /* UnknownUserMerge.swift */,
17151715
);
17161716
name = AnonymousTracking;
17171717
sourceTree = "<group>";
@@ -2326,10 +2326,10 @@
23262326
5B88BC482805D09D004016E5 /* (null) in Sources */,
23272327
9F0616412C9CA9D400FE2E6A /* IterableIdentityResolution.swift in Sources */,
23282328
18E5B5D12CC77BCE00A558EC /* IterableTokenGenerator.swift in Sources */,
2329-
E9EA7C9F2C1EDE5800A9D6FB /* AnonymousUserManager+Functions.swift in Sources */,
2330-
E9EA7CA22C1EDE5800A9D6FB /* AnonymousUserManager.swift in Sources */,
2331-
E9EA7CA02C1EDE5800A9D6FB /* AnonymousUserMerge.swift in Sources */,
2332-
E9EA7CA12C1EDE5800A9D6FB /* AnonymousUserManagerProtocol.swift in Sources */,
2329+
E9EA7C9F2C1EDE5800A9D6FB /* UnknownUserManager+Functions.swift in Sources */,
2330+
E9EA7CA22C1EDE5800A9D6FB /* UnknownUserManager.swift in Sources */,
2331+
E9EA7CA02C1EDE5800A9D6FB /* UnknownUserMerge.swift in Sources */,
2332+
E9EA7CA12C1EDE5800A9D6FB /* UnknownUserManagerProtocol.swift in Sources */,
23332333
);
23342334
runOnlyForDeploymentPostprocessing = 0;
23352335
};

swift-sdk/Core/Constants.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ enum Const {
5252
static let updateSubscriptions = "users/updateSubscriptions"
5353
static let getRemoteConfiguration = "mobile/getRemoteConfiguration"
5454
static let mergeUser = "users/merge";
55-
static let getCriteria = "anonymoususer/list";
56-
static let trackAnonSession = "anonymoususer/events/session";
55+
static let getCriteria = "unknownuser/list";
56+
static let trackUnknownUserSession = "unknownuser/events/session";
5757
static let getEmbeddedMessages = "embedded-messaging/messages"
5858
static let embeddedMessageReceived = "embedded-messaging/events/received"
5959
static let embeddedMessageClick = "embedded-messaging/events/click"
@@ -71,13 +71,13 @@ enum Const {
7171
static let deviceId = "itbl_device_id"
7272
static let sdkVersion = "itbl_sdk_version"
7373
static let offlineMode = "itbl_offline_mode"
74-
static let anonymousUserEvents = "itbl_anonymous_user_events"
75-
static let anonymousUserUpdate = "itbl_anonymous_user_update"
74+
static let unknownUserEvents = "itbl_unknown_user_events"
75+
static let unknownUserUpdate = "itbl_unknown_user_update"
7676
static let criteriaData = "itbl_criteria_data"
77-
static let anonymousSessions = "itbl_anon_sessions"
77+
static let unknownUserSessions = "itbl_unknown_user_sessions"
7878
static let matchedCriteria = "itbl_matched_criteria"
7979
static let eventList = "itbl_event_list"
80-
static let anonymousUsageTrack = "itbl_anonymous_usage_track"
80+
static let unknownUserUsageTrack = "itbl_unknown_user_usage_track"
8181
static let isNotificationsEnabled = "itbl_isNotificationsEnabled"
8282
static let hasStoredNotificationSetting = "itbl_hasStoredNotificationSetting"
8383

@@ -90,7 +90,7 @@ enum Const {
9090
enum Key {
9191
static let email = "itbl_email"
9292
static let userId = "itbl_userid"
93-
static let userIdAnnon = "itbl_userid_annon"
93+
static let userIdUnknownUser = "itbl_userid_unknown_user"
9494
static let authToken = "itbl_auth_token"
9595
}
9696
}

swift-sdk/Internal/AnonymousUserManagerProtocol.swift

Lines changed: 0 additions & 20 deletions
This file was deleted.

swift-sdk/Internal/Auth.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ struct Auth {
1212
let userId: String?
1313
let email: String?
1414
let authToken: String?
15-
let userIdAnon: String?
15+
let userIdUnknownUser: String?
1616

1717
var emailOrUserId: EmailOrUserId {
1818
if let email = email {
1919
return .email(email)
2020
} else if let userId = userId {
2121
return .userId(userId)
22-
} else if let userIdAnon = userIdAnon {
23-
return .userIdAnon(userIdAnon)
22+
} else if let userIdUnknownUser = userIdUnknownUser {
23+
return .userIdUnknownUser(userIdUnknownUser)
2424
} else {
2525
return .none
2626
}
@@ -29,7 +29,7 @@ struct Auth {
2929
enum EmailOrUserId {
3030
case email(String)
3131
case userId(String)
32-
case userIdAnon(String)
32+
case userIdUnknownUser(String)
3333
case none
3434
}
3535
}

swift-sdk/Internal/AuthManager.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,10 @@ class AuthManager: IterableAuthManagerProtocol {
9090

9191
clearRefreshTimer()
9292

93-
if localStorage.email != nil || localStorage.userId != nil || localStorage.userIdAnnon != nil {
94-
localStorage.anonymousUserEvents = nil
95-
localStorage.anonymousSessions = nil
96-
localStorage.anonymousUserUpdate = nil
93+
if localStorage.email != nil || localStorage.userId != nil || localStorage.userIdUnknownUser != nil {
94+
localStorage.unknownUserEvents = nil
95+
localStorage.unknownUserSessions = nil
96+
localStorage.unknownUserUpdate = nil
9797
}
9898

9999
isLastAuthTokenValid = false

0 commit comments

Comments
 (0)