Skip to content

Commit 5e70286

Browse files
committed
release: SDK 3.0.2
1 parent 4c6c2b3 commit 5e70286

File tree

7 files changed

+45
-21
lines changed

7 files changed

+45
-21
lines changed

Package.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ let package = Package(
1818
targets: [
1919
.binaryTarget(
2020
name: "Batch",
21-
url: "https://download.batch.com/sdk/ios/spm/BatchSDK-ios_spm-xcframework-3.0.1.zip",
22-
checksum: "944de4c24f776923c69b848a67452fb81000ddd53415330cf94a708a6e1ebd3e"
21+
url: "https://download.batch.com/sdk/ios/spm/BatchSDK-ios_spm-xcframework-3.0.2.zip",
22+
checksum: "bf0601aef2b15a3771d3e8d1f2cdeeba311a255f0283f6b61530dfa1c8be9bdb"
2323
)
2424
]
2525
)

Sources/Batch/Modules/Local Campaigns/BALocalCampaignsCenter.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ - (void)loadCampaignCache {
405405
message:@"Loaded %lu campaigns from disk", (unsigned long)campaigns.count];
406406
}
407407
}
408-
[self->_campaignManager loadCampaigns:campaigns];
408+
[self->_campaignManager loadCampaigns:campaigns fromCache:true];
409409
[self->_campaignManager setCappings:cappings];
410410
[self campaignCacheReady];
411411
});
@@ -495,7 +495,7 @@ - (void)handleWebserviceResponsePayload:(nonnull NSDictionary *)payload {
495495
[_campaignManager setNextAvailableJITTimestampWithDefaultDelay];
496496
}
497497

498-
[_campaignManager loadCampaigns:campaigns];
498+
[_campaignManager loadCampaigns:campaigns fromCache:false];
499499
[_campaignManager setCappings:cappings];
500500
}
501501

Sources/Batch/Modules/Local Campaigns/BALocalCampaignsManager.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ typedef NS_ENUM(NSInteger, BATSyncedJITCampaignState) {
4444
4545
Also triggers the campaign loaded signal
4646
*/
47-
- (void)loadCampaigns:(NSArray<BALocalCampaign *> *)updatedCampaignList;
47+
- (void)loadCampaigns:(NSArray<BALocalCampaign *> *)updatedCampaignList fromCache:(BOOL)fromCache;
4848

4949
/**
5050
Checks if an event name will trigger at least one campaign, allowing for a fast pre-filter to check if it is worth

Sources/Batch/Modules/Local Campaigns/BALocalCampaignsManager.m

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,25 @@ - (NSArray *)campaignList {
103103
return [NSArray arrayWithArray:_campaignList];
104104
}
105105

106-
- (void)loadCampaigns:(NSArray<BALocalCampaign *> *)updatedCampaignList {
106+
/**
107+
* Loads campaigns with customer user ID support.
108+
* Clears existing campaigns, filters the new list based on user-specific criteria,
109+
* and updates the watched event names cache.
110+
* @param updatedCampaignList Array of campaigns to load
111+
*/
112+
- (void)loadCampaigns:(NSArray<BALocalCampaign *> *)updatedCampaignList fromCache:(BOOL)fromCache {
107113
@synchronized(_campaignList) {
108114
[_campaignList removeAllObjects];
109115
if (updatedCampaignList != nil) {
110116
[_campaignList addObjectsFromArray:[self cleanCampaignList:updatedCampaignList]];
117+
118+
if (!fromCache) {
119+
NSMutableArray *ids = [NSMutableArray array];
120+
for (BALocalCampaign *item in updatedCampaignList) {
121+
[ids addObject:item.campaignID];
122+
}
123+
[self updateSyncedJITCampaigns:_campaignList eligibleCampaignIds:ids];
124+
}
111125
}
112126

113127
[self updateWatchedEventNames];
@@ -204,17 +218,8 @@ - (void)verifyCampaignsEligibilityFromServer:(NSArray<BALocalCampaign *> *)eligi
204218
[self setNextAvailableJITTimestampWithDefaultDelay];
205219

206220
if ([eligibleCampaignIds count] > 0) {
207-
for (BALocalCampaign *campaign in [NSArray arrayWithArray:eligibleCampaignsSynced]) {
208-
BATSyncedJITResult *syncedJITResult = [[BATSyncedJITResult alloc]
209-
initWithTimestamp:[[self->_dateProvider currentDate] timeIntervalSince1970]];
210-
if (![eligibleCampaignIds containsObject:campaign.campaignID]) {
211-
[eligibleCampaignsSynced removeObject:campaign];
212-
syncedJITResult.eligible = false;
213-
} else {
214-
syncedJITResult.eligible = true;
215-
}
216-
self->_syncedJITCampaigns[campaign.campaignID] = syncedJITResult;
217-
}
221+
[self updateSyncedJITCampaigns:eligibleCampaignsSynced eligibleCampaignIds:eligibleCampaignIds];
222+
218223
if ([eligibleCampaignsSynced count] > 0) {
219224
completionHandler(eligibleCampaigns[0]);
220225
} else {
@@ -231,6 +236,25 @@ - (void)verifyCampaignsEligibilityFromServer:(NSArray<BALocalCampaign *> *)eligi
231236
[BAWebserviceClientExecutor.sharedInstance addClient:wsClient];
232237
}
233238

239+
- (void)updateSyncedJITCampaigns:(NSMutableArray<BALocalCampaign *> *)eligibleCampaignsSynced
240+
eligibleCampaignIds:(NSArray *)eligibleCampaignIds {
241+
@synchronized(_syncedJITCampaigns) {
242+
for (BALocalCampaign *campaign in [NSArray arrayWithArray:eligibleCampaignsSynced]) {
243+
if (campaign.requiresJustInTimeSync) {
244+
BATSyncedJITResult *syncedJITResult = [[BATSyncedJITResult alloc]
245+
initWithTimestamp:[[self->_dateProvider currentDate] timeIntervalSince1970]];
246+
if (![eligibleCampaignIds containsObject:campaign.campaignID]) {
247+
[eligibleCampaignsSynced removeObject:campaign];
248+
syncedJITResult.eligible = false;
249+
} else {
250+
syncedJITResult.eligible = true;
251+
}
252+
self->_syncedJITCampaigns[campaign.campaignID] = syncedJITResult;
253+
}
254+
}
255+
}
256+
}
257+
234258
- (BOOL)isJITServiceAvailable {
235259
@synchronized(_nextAvailableJITTimestampLock) {
236260
return ([[_dateProvider currentDate] timeIntervalSince1970] >= _nextAvailableJITTimestamp);

Sources/Batch/Modules/Messaging/Widgets/BAMSGActivityIndicatorView.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ typedef NS_ENUM(NSUInteger, BAMSGActivityIndicatorViewColor) {
2424

2525
- (instancetype)initWithPreferredSize:(BAMSGActivityIndicatorViewSize)size NS_DESIGNATED_INITIALIZER;
2626
- (instancetype)initWithActivityIndicatorStyle:(UIActivityIndicatorViewStyle)style
27-
__attribute__((deprecated("Use initWithPreferredSize:")))NS_DESIGNATED_INITIALIZER;
27+
__attribute__((deprecated("Use initWithPreferredSize:"))) NS_DESIGNATED_INITIALIZER;
2828
- (instancetype)initWithFrame:(CGRect)frame NS_DESIGNATED_INITIALIZER;
2929
- (instancetype)initWithCoder:(NSCoder *)coder NS_DESIGNATED_INITIALIZER;
3030

Sources/Batch/Versions.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@
1111
Comments should not use the // form, as the plist preprocessor will include them
1212
*/
1313

14-
#define BASDKVersion 3.0.1
15-
#define BAAPILevel 301
14+
#define BASDKVersion 3.0.2
15+
#define BAAPILevel 302
1616
#define BAMessagingAPILevel 30

Sources/batchTests/Modules/Local Campaigns/localCampaignsManagerTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class localCampaignsManagerTests: XCTestCase {
2020
createFakeCampaignWith(priority: 50, jit: false),
2121
createFakeCampaignWith(priority: 10, jit: false),
2222
]
23-
manager.load(campaigns)
23+
manager.load(campaigns, fromCache: false)
2424

2525
let sortedCampaigns: [BALocalCampaign] = manager.eligibleCampaignsSorted(byPriority: BANewSessionSignal())
2626
XCTAssertEqual(sortedCampaigns[0], campaigns[1])

0 commit comments

Comments
 (0)