Skip to content

Commit 922fc2a

Browse files
authored
Merge pull request #754 from adjust/v520
Version 5.2.0
2 parents a32b766 + 25b2885 commit 922fc2a

37 files changed

+516
-447
lines changed

Adjust.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Pod::Spec.new do |s|
22
s.name = "Adjust"
33
s.module_name = "AdjustSdk"
4-
s.version = "5.1.1"
4+
s.version = "5.2.0"
55
s.summary = "This is the iOS SDK of Adjust. You can read more about it at https://adjust.com."
66
s.homepage = "https://github.com/adjust/ios_sdk"
77
s.license = { :type => 'MIT', :file => 'LICENSE' }

Adjust/ADJAttribution.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
/**
1212
* @brief Adjust attribution object.
1313
*/
14-
@interface ADJAttribution : NSObject <NSCoding, NSCopying>
14+
@interface ADJAttribution : NSObject <NSSecureCoding, NSCopying>
1515

1616
/**
1717
* @brief Tracker token.

Adjust/ADJAttribution.m

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,10 @@
1212

1313
@implementation ADJAttribution
1414

15+
+ (BOOL)supportsSecureCoding {
16+
return YES;
17+
}
18+
1519
- (id)initWithJsonDict:(NSDictionary *)jsonDict {
1620
self = [super init];
1721
if (self == nil) {
@@ -170,18 +174,19 @@ - (id)initWithCoder:(NSCoder *)decoder {
170174
return nil;
171175
}
172176

173-
self.trackerToken = [decoder decodeObjectForKey:@"trackerToken"];
174-
self.trackerName = [decoder decodeObjectForKey:@"trackerName"];
175-
self.network = [decoder decodeObjectForKey:@"network"];
176-
self.campaign = [decoder decodeObjectForKey:@"campaign"];
177-
self.adgroup = [decoder decodeObjectForKey:@"adgroup"];
178-
self.creative = [decoder decodeObjectForKey:@"creative"];
179-
self.clickLabel = [decoder decodeObjectForKey:@"click_label"];
180-
self.costType = [decoder decodeObjectForKey:@"costType"];
181-
self.costAmount = [decoder decodeObjectForKey:@"costAmount"];
182-
self.costCurrency = [decoder decodeObjectForKey:@"costCurrency"];
183-
self.jsonResponse = [decoder decodeObjectForKey:@"jsonResponse"];
184-
177+
self.trackerToken = [decoder decodeObjectOfClass:[NSString class] forKey:@"trackerToken"];
178+
self.trackerName = [decoder decodeObjectOfClass:[NSString class] forKey:@"trackerName"];
179+
self.network = [decoder decodeObjectOfClass:[NSString class] forKey:@"network"];
180+
self.campaign = [decoder decodeObjectOfClass:[NSString class] forKey:@"campaign"];
181+
self.adgroup = [decoder decodeObjectOfClass:[NSString class] forKey:@"adgroup"];
182+
self.creative = [decoder decodeObjectOfClass:[NSString class] forKey:@"creative"];
183+
self.clickLabel = [decoder decodeObjectOfClass:[NSString class] forKey:@"click_label"];
184+
self.costType = [decoder decodeObjectOfClass:[NSString class] forKey:@"costType"];
185+
self.costAmount = [decoder decodeObjectOfClass:[NSNumber class] forKey:@"costAmount"];
186+
self.costCurrency = [decoder decodeObjectOfClass:[NSString class] forKey:@"costCurrency"];
187+
NSSet<Class> *allowedClasses = [NSSet setWithObjects:[NSDictionary class],
188+
[NSString class], [NSNumber class], nil];
189+
self.jsonResponse = [decoder decodeObjectOfClasses:allowedClasses forKey:@"jsonResponse"];
185190
return self;
186191
}
187192

Adjust/ADJConfig.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,12 @@ typedef NS_ENUM(NSUInteger, ADJLogLevel);
189189
*/
190190
@property (nonatomic, readonly) BOOL isCoppaComplianceEnabled;
191191

192+
/**
193+
* @brief Indicator of whether SDK should use AppTrackingTransparency framework
194+
*/
195+
@property (nonatomic, readonly) BOOL isAppTrackingTransparencyUsageEnabled;
196+
197+
192198
#pragma mark - AdjustConfig assignable properties
193199

194200
/**
@@ -338,6 +344,11 @@ typedef NS_ENUM(NSUInteger, ADJLogLevel);
338344
*/
339345
- (void)enableCoppaCompliance;
340346

347+
/**
348+
* @brief A method to configure SDK avoid any call to AppTrackingTransparency framework.
349+
*/
350+
- (void)disableAppTrackingTransparencyUsage;
351+
341352
/**
342353
* @brief A method to set custom URL strategy.
343354
*

Adjust/ADJConfig.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ - (nullable ADJConfig *)initWithAppToken:(nonnull NSString *)appToken
6363
_isDeviceIdsReadingOnceEnabled = NO;
6464
_isCostDataInAttributionEnabled = NO;
6565
_isCoppaComplianceEnabled = NO;
66+
_isAppTrackingTransparencyUsageEnabled = YES;
6667

6768
return self;
6869
}
@@ -113,6 +114,10 @@ - (void)enableCoppaCompliance {
113114
_isCoppaComplianceEnabled = YES;
114115
}
115116

117+
- (void)disableAppTrackingTransparencyUsage {
118+
_isAppTrackingTransparencyUsageEnabled = NO;
119+
}
120+
116121
- (void)setUrlStrategy:(nullable NSArray *)urlStrategyDomains
117122
useSubdomains:(BOOL)useSubdomains
118123
isDataResidency:(BOOL)isDataResidency {
@@ -235,6 +240,7 @@ - (id)copyWithZone:(NSZone *)zone {
235240
copy->_isIdfvReadingEnabled = self.isIdfvReadingEnabled;
236241
copy->_isDeviceIdsReadingOnceEnabled = self.isDeviceIdsReadingOnceEnabled;
237242
copy.eventDeduplicationIdsMaxSize = self.eventDeduplicationIdsMaxSize;
243+
copy->_isAppTrackingTransparencyUsageEnabled = self.isAppTrackingTransparencyUsageEnabled;
238244
// AdjustDelegate not copied
239245
}
240246

Adjust/ADJDeeplink.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,29 @@
1010

1111
@interface ADJDeeplink : NSObject
1212

13+
/**
14+
* @brief Deeplink value.
15+
*/
1316
@property (nonatomic, copy, readonly, nonnull) NSURL *deeplink;
1417

18+
/**
19+
* @brief Referrer value.
20+
*/
21+
@property (nonatomic, copy, readonly, nonnull) NSURL *referrer;
22+
23+
/**
24+
* @brief Initializes a Deeplink object with the provided deeplink URL.
25+
*
26+
* @param deeplink The URL representing the deeplink.
27+
* @return An instance of ADJDeeplink, or nil if initialization fails.
28+
*/
1529
- (nullable ADJDeeplink *)initWithDeeplink:(nonnull NSURL *)deeplink;
1630

31+
/**
32+
* @brief Sets the referrer URL for the Deeplink object.
33+
*
34+
* @param referrer The URL that refers the user to the deeplink, typically from an organic search.
35+
*/
36+
- (void)setReferrer:(nonnull NSURL *)referrer;
37+
1738
@end

Adjust/ADJDeeplink.m

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,15 @@ - (id)initWithDeeplink:(NSURL *)deeplink {
1616
return nil;
1717
}
1818

19-
_deeplink = deeplink;
19+
_deeplink = [deeplink copy];
2020

2121
return self;
2222
}
2323

24+
- (void)setReferrer:(nonnull NSURL *)referrer {
25+
@synchronized (self) {
26+
_referrer = [referrer copy];
27+
}
28+
}
29+
2430
@end

Adjust/Adjust.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Adjust.h
33
// Adjust SDK
44
//
5-
// V5.1.1
5+
// V5.2.0
66
// Created by Christian Wellenbrock (@wellle) on 23rd July 2013.
77
// Copyright (c) 2012-Present Adjust GmbH. All rights reserved.
88
//

Adjust/Adjust.m

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -287,15 +287,7 @@ + (void)verifyAppStorePurchase:(nonnull ADJAppStorePurchase *)purchase
287287
withCompletionHandler:completion];
288288
}
289289
}
290-
/*
291-
+ (void)enableCoppaCompliance {
292-
[[Adjust getInstance] enableCoppaCompliance];
293-
}
294290

295-
+ (void)disableCoppaCompliance {
296-
[[Adjust getInstance] disableCoppaCompliance];
297-
}
298-
*/
299291
+ (void)verifyAndTrackAppStorePurchase:(nonnull ADJEvent *)event
300292
withCompletionHandler:(void (^_Nonnull)(ADJPurchaseVerificationResult * _Nonnull verificationResult))completion {
301293
@synchronized (self) {
@@ -397,8 +389,7 @@ - (void)processDeeplink:(ADJDeeplink *)deeplink {
397389
[ADJUserDefaults cacheDeeplinkUrl:deeplink.deeplink];
398390
NSDate *clickTime = [NSDate date];
399391
if (![self checkActivityHandler:@"process deep link"]) {
400-
[ADJUserDefaults saveDeeplinkUrl:deeplink.deeplink
401-
clickTime:clickTime];
392+
[ADJUserDefaults saveDeeplink:deeplink clickTime:clickTime];
402393
return;
403394
}
404395
[self.activityHandler processDeeplink:deeplink withClickTime:clickTime];
@@ -415,8 +406,7 @@ - (void)processAndResolveDeeplink:(nonnull ADJDeeplink *)deeplink
415406
[ADJUserDefaults cacheDeeplinkUrl:deeplink.deeplink];
416407
NSDate *clickTime = [NSDate date];
417408
if (![self checkActivityHandler:@"process and resolve deep link"]) {
418-
[ADJUserDefaults saveDeeplinkUrl:deeplink.deeplink
419-
clickTime:clickTime];
409+
[ADJUserDefaults saveDeeplink:deeplink clickTime:clickTime];
420410
self.cachedResolvedDeeplinkBlock = completion;
421411
return;
422412
}
@@ -613,7 +603,7 @@ - (void)requestAppTrackingAuthorizationWithCompletionHandler:(void (^_Nullable)(
613603
if (![self checkActivityHandler:@"request Tracking Authorization"]) {
614604
return;
615605
}
616-
[self.activityHandler updateAttStatusFromUserCallback:(int)status];
606+
[self.activityHandler updateAndTrackAttStatusFromUserCallback:(int)status];
617607
}];
618608
}
619609

Adjust/Internal/ADJActivityHandler.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@
103103
- (void)trackThirdPartySharing:(nonnull ADJThirdPartySharing *)thirdPartySharing;
104104
- (void)trackMeasurementConsent:(BOOL)enabled;
105105
- (void)trackAppStoreSubscription:(ADJAppStoreSubscription * _Nullable)subscription;
106-
- (void)updateAttStatusFromUserCallback:(int)newAttStatusFromUser;
106+
- (void)updateAndTrackAttStatusFromUserCallback:(int)newAttStatusFromUser;
107107
- (void)trackAdRevenue:(ADJAdRevenue * _Nullable)adRevenue;
108108
- (void)verifyAppStorePurchase:(nonnull ADJAppStorePurchase *)purchase
109109
withCompletionHandler:(nonnull ADJVerificationResultBlock)completion;
@@ -144,13 +144,13 @@
144144

145145
@interface ADJTrackingStatusManager : NSObject
146146

147-
@property (nonatomic, readonly, assign) BOOL trackingEnabled;
148-
@property (nonatomic, readonly, assign) int attStatus;
149-
150147
- (instancetype _Nullable)initWithActivityHandler:(ADJActivityHandler * _Nullable)activityHandler;
151-
- (void)checkForNewAttStatus;
152-
- (void)updateAttStatusFromUserCallback:(int)newAttStatusFromUser;
153-
- (BOOL)canGetAttStatus;
148+
- (BOOL)isAttSupported;
149+
- (int)attStatus;
150+
- (int)updateAndGetAttStatus;
151+
- (BOOL)isTrackingEnabled;
152+
- (void)updateAndTrackAttStatus;
153+
- (void)updateAndTrackAttStatusFromUserCallback:(int)attStatusFromUser;
154154
- (void)setAppInActiveState:(BOOL)activeState;
155155
- (BOOL)shouldWaitForAttStatus;
156156

0 commit comments

Comments
 (0)