Skip to content

Commit 881842e

Browse files
authored
Merge pull request #624 from adjust/v4310
Version 4.31.0
2 parents ab5684f + e28481c commit 881842e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+3206
-895
lines changed

.gitignore

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,11 @@ Pods
2626
*.orig
2727

2828
# Adjust
29-
Frameworks
29+
frameworks
30+
sdk_distribution
3031

3132
# Code style
3233
uncrustify.cfg
3334

3435
#SPM
35-
.swiftpm/
36+
.swiftpm/

Adjust.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
Pod::Spec.new do |s|
22
s.name = "Adjust"
3-
s.version = "4.30.0"
3+
s.version = "4.31.0"
44
s.summary = "This is the iOS SDK of adjust. You can read more about it at http://adjust.com."
55
s.homepage = "https://github.com/adjust/ios_sdk"
66
s.license = { :type => 'MIT', :file => 'MIT-LICENSE' }
77
s.author = { "Adjust GmbH" => "[email protected]" }
8-
s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.30.0" }
8+
s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.31.0" }
99
s.ios.deployment_target = '9.0'
1010
s.tvos.deployment_target = '9.0'
1111
s.framework = 'SystemConfiguration'

Adjust.xcodeproj/project.pbxproj

Lines changed: 1024 additions & 5 deletions
Large diffs are not rendered by default.

Adjust/ADJActivityHandler.m

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1016,6 +1016,7 @@ - (void)initI:(ADJActivityHandler *)selfI
10161016
userAgent:selfI.adjustConfig.userAgent
10171017
urlStrategy:sdkClickHandlerUrlStrategy];
10181018

1019+
[selfI checkLinkMeI:selfI];
10191020
[selfI.trackingStatusManager checkForNewAttStatus];
10201021

10211022
[selfI preLaunchActionsI:selfI
@@ -1770,6 +1771,7 @@ - (void)setEnabledI:(ADJActivityHandler *)selfI enabled:(BOOL)enabled {
17701771
selfI.savedPreLaunch.lastMeasurementConsentTracked = nil;
17711772
}
17721773

1774+
[selfI checkLinkMeI:selfI];
17731775
}
17741776

17751777
if (![ADJUserDefaults getInstallTracked]) {
@@ -2161,6 +2163,63 @@ - (void)setTrackingStateOptedOutI:(ADJActivityHandler *)selfI {
21612163
[selfI.packageHandler flush];
21622164
}
21632165

2166+
- (void)checkLinkMeI:(ADJActivityHandler *)selfI {
2167+
#if TARGET_OS_IOS
2168+
if (@available(iOS 15.0, *)) {
2169+
if (selfI.adjustConfig.linkMeEnabled == NO) {
2170+
[self.logger debug:@"LinkMe not allowed by client"];
2171+
return;
2172+
}
2173+
if ([ADJUserDefaults getLinkMeChecked] == YES) {
2174+
[self.logger debug:@"LinkMe already checked"];
2175+
return;
2176+
}
2177+
if (selfI.internalState.isFirstLaunch == NO) {
2178+
[self.logger debug:@"LinkMe only valid for install"];
2179+
return;
2180+
}
2181+
if ([ADJUserDefaults getGdprForgetMe]) {
2182+
[self.logger debug:@"LinkMe not happening for GDPR forgotten user"];
2183+
return;
2184+
}
2185+
2186+
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
2187+
if ([pasteboard hasURLs] == NO) {
2188+
[self.logger debug:@"LinkMe general board not found"];
2189+
return;
2190+
}
2191+
2192+
NSURL *pasteboardUrl = [pasteboard URL];
2193+
if (pasteboardUrl == nil) {
2194+
[self.logger debug:@"LinkMe content not found"];
2195+
return;
2196+
}
2197+
2198+
NSString *pasteboardUrlString = [pasteboardUrl absoluteString];
2199+
if (pasteboardUrlString == nil) {
2200+
[self.logger debug:@"LinkMe content could not be converted to string"];
2201+
return;
2202+
}
2203+
2204+
// send sdk_click
2205+
double now = [NSDate.date timeIntervalSince1970];
2206+
ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc] initWithPackageParams:selfI.packageParams
2207+
activityState:selfI.activityState
2208+
config:selfI.adjustConfig
2209+
sessionParameters:selfI.sessionParameters
2210+
trackingStatusManager:self.trackingStatusManager
2211+
createdAt:now];
2212+
clickBuilder.clickTime = [NSDate dateWithTimeIntervalSince1970:now];
2213+
ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage:@"linkme" linkMeUrl:pasteboardUrlString];
2214+
[selfI.sdkClickHandler sendSdkClick:clickPackage];
2215+
2216+
[ADJUserDefaults setLinkMeChecked];
2217+
} else {
2218+
[self.logger warn:@"LinkMe feature is supported on iOS 15.0 and above"];
2219+
}
2220+
#endif
2221+
}
2222+
21642223
#pragma mark - private
21652224

21662225
- (BOOL)isEnabledI:(ADJActivityHandler *)selfI {

Adjust/ADJConfig.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,11 @@
214214
*/
215215
@property (nonatomic, copy, readwrite, nullable) NSString *urlStrategy;
216216

217+
/**
218+
* @brief Enables/disables linkMe
219+
*/
220+
@property (nonatomic, assign) BOOL linkMeEnabled;
221+
217222
/**
218223
* @brief Get configuration object for the initialization of the Adjust SDK.
219224
*

Adjust/ADJConfig.m

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ - (id)initWithAppToken:(NSString *)appToken
7171
self.allowIdfaReading = YES;
7272
self.allowiAdInfoReading = YES;
7373
self.allowAdServicesInfoReading = YES;
74+
self.linkMeEnabled = NO;
7475
_isSKAdNetworkHandlingActive = YES;
7576

7677
return self;
@@ -213,6 +214,7 @@ - (id)copyWithZone:(NSZone *)zone {
213214
copy->_appSecret = [self.appSecret copyWithZone:zone];
214215
copy->_isSKAdNetworkHandlingActive = self.isSKAdNetworkHandlingActive;
215216
copy->_urlStrategy = [self.urlStrategy copyWithZone:zone];
217+
copy.linkMeEnabled = self.linkMeEnabled;
216218
// adjust delegate not copied
217219
}
218220

Adjust/ADJPackageBuilder.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@
2020

2121
@property (nonatomic, copy) NSString * _Nullable deeplink;
2222

23+
@property (nonatomic, copy) NSString * _Nullable reftag;
24+
2325
@property (nonatomic, copy) NSDate * _Nullable clickTime;
2426

2527
@property (nonatomic, copy) NSDate * _Nullable purchaseTime;
@@ -53,6 +55,9 @@
5355
token:(NSString * _Nullable)token
5456
errorCodeNumber:(NSNumber * _Nullable)errorCodeNumber;
5557

58+
- (ADJActivityPackage * _Nullable)buildClickPackage:(NSString * _Nullable)clickSource
59+
linkMeUrl:(NSString * _Nullable)linkMeUrl;
60+
5661
- (ADJActivityPackage * _Nullable)buildAttributionPackage:(NSString * _Nullable)initiatedBy;
5762

5863
- (ADJActivityPackage * _Nullable)buildGdprPackage;

Adjust/ADJPackageBuilder.m

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,20 @@ - (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource
159159
return [self buildClickPackage:clickSource extraParameters:parameters];
160160
}
161161

162+
- (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource
163+
linkMeUrl:(NSString * _Nullable)linkMeUrl {
164+
165+
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
166+
167+
if (linkMeUrl != nil) {
168+
[ADJPackageBuilder parameters:parameters
169+
setString:linkMeUrl
170+
forKey:@"content"];
171+
}
172+
173+
return [self buildClickPackage:clickSource extraParameters:parameters];
174+
}
175+
162176
- (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource extraParameters:(NSDictionary *)extraParameters {
163177
NSMutableDictionary *parameters = [self getClickParameters:clickSource];
164178
if (extraParameters != nil) {
@@ -451,6 +465,10 @@ - (NSMutableDictionary *)getEventParameters:(BOOL)isInDelay forEventPackage:(ADJ
451465
[ADJPackageBuilder parameters:parameters setDate:[ADJUserDefaults getSkadRegisterCallTimestamp] forKey:@"skadn_registered_at"];
452466
[ADJPackageBuilder parameters:parameters setDate1970:(double)self.packageParams.startedAt forKey:@"started_at"];
453467

468+
if (event.transactionId) {
469+
[ADJPackageBuilder parameters:parameters setString:event.transactionId forKey:@"deduplication_id"];
470+
}
471+
454472
if ([self.trackingStatusManager canGetAttStatus]) {
455473
[ADJPackageBuilder parameters:parameters setInt:self.trackingStatusManager.attStatus
456474
forKey:@"att_status"];
@@ -520,6 +538,7 @@ - (NSMutableDictionary *)getInfoParameters:(NSString *)source {
520538
[ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"];
521539
[ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"];
522540
[ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"];
541+
[ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"];
523542
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"];
524543
[ADJPackageBuilder parameters:parameters setDictionary:self.attributionDetails forKey:@"details"];
525544
[ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"];
@@ -737,6 +756,7 @@ - (NSMutableDictionary *)getClickParameters:(NSString *)source {
737756
[ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"];
738757
[ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"];
739758
[ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"];
759+
[ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"];
740760
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"];
741761
[ADJPackageBuilder parameters:parameters setDictionary:self.attributionDetails forKey:@"details"];
742762
[ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"];
@@ -917,6 +937,7 @@ - (NSMutableDictionary *)getDisableThirdPartySharingParameters {
917937
[ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"];
918938
[ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"];
919939
[ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"];
940+
[ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"];
920941
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"];
921942
[ADJPackageBuilder parameters:parameters setDictionary:self.attributionDetails forKey:@"details"];
922943
[ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"];
@@ -984,6 +1005,7 @@ - (NSMutableDictionary *)getThirdPartySharingParameters:(nonnull ADJThirdPartySh
9841005
[ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"];
9851006
[ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"];
9861007
[ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"];
1008+
[ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"];
9871009
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"];
9881010
[ADJPackageBuilder parameters:parameters setDictionary:self.attributionDetails forKey:@"details"];
9891011
[ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"];
@@ -1057,6 +1079,7 @@ - (NSMutableDictionary *)getMeasurementConsentParameters:(BOOL)enabled {
10571079
[ADJPackageBuilder parameters:parameters setDate:self.clickTime forKey:@"click_time"];
10581080
[ADJPackageBuilder parameters:parameters setDate1970:self.createdAt forKey:@"created_at"];
10591081
[ADJPackageBuilder parameters:parameters setString:self.deeplink forKey:@"deeplink"];
1082+
[ADJPackageBuilder parameters:parameters setString:self.reftag forKey:@"reftag"];
10601083
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.defaultTracker forKey:@"default_tracker"];
10611084
[ADJPackageBuilder parameters:parameters setDictionary:self.attributionDetails forKey:@"details"];
10621085
[ADJPackageBuilder parameters:parameters setString:self.packageParams.deviceName forKey:@"device_name"];

Adjust/ADJUserDefaults.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,8 @@
6161

6262
+ (NSDate *)getSkadRegisterCallTimestamp;
6363

64+
+ (void)setLinkMeChecked;
65+
66+
+ (BOOL)getLinkMeChecked;
67+
6468
@end

Adjust/ADJUserDefaults.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
static NSString * const PREFS_KEY_IAD_ERRORS = @"adj_iad_errors";
1919
static NSString * const PREFS_KEY_ADSERVICES_TRACKED = @"adj_adservices_tracked";
2020
static NSString * const PREFS_KEY_SKAD_REGISTER_CALL_TIME = @"adj_skad_register_call_time";
21+
static NSString * const PREFS_KEY_LINK_ME_CHECKED = @"adj_link_me_checked";
2122

2223
@implementation ADJUserDefaults
2324

@@ -138,6 +139,14 @@ + (NSDate *)getSkadRegisterCallTimestamp {
138139
return [[NSUserDefaults standardUserDefaults] objectForKey:PREFS_KEY_SKAD_REGISTER_CALL_TIME];
139140
}
140141

142+
+ (void)setLinkMeChecked {
143+
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:PREFS_KEY_LINK_ME_CHECKED];
144+
}
145+
146+
+ (BOOL)getLinkMeChecked {
147+
return [[NSUserDefaults standardUserDefaults] boolForKey:PREFS_KEY_LINK_ME_CHECKED];
148+
}
149+
141150
+ (void)clearAdjustStuff {
142151
[[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_PUSH_TOKEN_DATA];
143152
[[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_PUSH_TOKEN_STRING];
@@ -149,6 +158,7 @@ + (void)clearAdjustStuff {
149158
[[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_IAD_ERRORS];
150159
[[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_ADSERVICES_TRACKED];
151160
[[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_SKAD_REGISTER_CALL_TIME];
161+
[[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_LINK_ME_CHECKED];
152162
}
153163

154164
@end

0 commit comments

Comments
 (0)