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

+3-2
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

+2-2
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

+1,024-5
Large diffs are not rendered by default.

Adjust/ADJActivityHandler.m

+59
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

+5
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

+2
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

+5
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

+23
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

+4
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

+10
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

Adjust/ADJUtil.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
static NSRegularExpression *shortUniversalLinkRegex = nil;
4040
static NSRegularExpression *excludedDeeplinkRegex = nil;
4141

42-
static NSString * const kClientSdk = @"ios4.30.0";
42+
static NSString * const kClientSdk = @"ios4.31.0";
4343
static NSString * const kDeeplinkParam = @"deep_link=";
4444
static NSString * const kSchemeDelimiter = @"://";
4545
static NSString * const kDefaultScheme = @"AdjustUniversalScheme";

Adjust/Adjust.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Adjust.h
33
// Adjust SDK
44
//
5-
// V4.30.0
5+
// V4.31.0
66
// Created by Christian Wellenbrock (@wellle) on 23rd July 2013.
77
// Copyright (c) 2012-2021 Adjust GmbH. All rights reserved.
88
//

AdjustBridge/AdjustBridge.m

+4
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ - (void)loadWKWebViewBridge:(WKWebView *)wkWebView
188188
NSString *logLevel = [data objectForKey:@"logLevel"];
189189
NSNumber *eventBufferingEnabled = [data objectForKey:@"eventBufferingEnabled"];
190190
NSNumber *coppaCompliantEnabled = [data objectForKey:@"coppaCompliantEnabled"];
191+
NSNumber *linkMeEnabled = [data objectForKey:@"linkMeEnabled"];
191192
NSNumber *sendInBackground = [data objectForKey:@"sendInBackground"];
192193
NSNumber *delayStart = [data objectForKey:@"delayStart"];
193194
NSString *userAgent = [data objectForKey:@"userAgent"];
@@ -243,6 +244,9 @@ - (void)loadWKWebViewBridge:(WKWebView *)wkWebView
243244
if ([self isFieldValid:coppaCompliantEnabled]) {
244245
[adjustConfig setCoppaCompliantEnabled:[coppaCompliantEnabled boolValue]];
245246
}
247+
if ([self isFieldValid:linkMeEnabled]) {
248+
[adjustConfig setLinkMeEnabled:[linkMeEnabled boolValue]];
249+
}
246250
if ([self isFieldValid:sendInBackground]) {
247251
[adjustConfig setSendInBackground:[sendInBackground boolValue]];
248252
}

AdjustBridge/AdjustBridgeRegister.m

+5-1
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ + (NSString *)adjust_js {
246246
if (this.sdkPrefix) {
247247
return this.sdkPrefix;
248248
} else {
249-
return 'web-bridge4.30.0';
249+
return 'web-bridge4.31.0';
250250
}
251251
},
252252
setTestOptions: function(testOptions) {
@@ -324,6 +324,7 @@ + (NSString *)adjust_js {
324324
this.logLevel = null;
325325
this.eventBufferingEnabled = null;
326326
this.coppaCompliantEnabled = null;
327+
this.linkMeEnabled = null;
327328
this.sendInBackground = null;
328329
this.delayStart = null;
329330
this.userAgent = null;
@@ -405,6 +406,9 @@ + (NSString *)adjust_js {
405406
AdjustConfig.prototype.setCoppaCompliantEnabled = function(isEnabled) {
406407
this.coppaCompliantEnabled = isEnabled;
407408
};
409+
AdjustConfig.prototype.setLinkMeEnabled = function(isEnabled) {
410+
this.linkMeEnabled = isEnabled;
411+
};
408412
AdjustConfig.prototype.setSendInBackground = function(isEnabled) {
409413
this.sendInBackground = isEnabled;
410414
};

AdjustSdkImStatic/AdjustSdkIm.h

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//
2+
// AdjustSdkImStatic.h
3+
// AdjustSdkImStatic
4+
//
5+
// Created by Genady Buchatsky on 14.03.22.
6+
// Copyright © 2022 Adjust GmbH. All rights reserved.
7+
//
8+
9+
#import <UIKit/UIKit.h>
10+
11+
#import <AdjustSdkIm/Adjust.h>
12+
#import <AdjustSdkIm/ADJEvent.h>
13+
#import <AdjustSdkIm/ADJThirdPartySharing.h>
14+
#import <AdjustSdkIm/ADJConfig.h>
15+
#import <AdjustSdkIm/ADJLogger.h>
16+
#import <AdjustSdkIm/ADJAttribution.h>
17+
#import <AdjustSdkIm/ADJSubscription.h>
18+
#import <AdjustSdkIm/ADJEventSuccess.h>
19+
#import <AdjustSdkIm/ADJEventFailure.h>
20+
#import <AdjustSdkIm/ADJSessionSuccess.h>
21+
#import <AdjustSdkIm/ADJSessionFailure.h>
22+
#import <AdjustSdkIm/ADJAdRevenue.h>
23+
#import <AdjustSdkIm/ADJLinkResolution.h>

AdjustSdkImStatic/module.modulemap

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
framework module AdjustSdkIm {
2+
umbrella header "AdjustSdkIm.h"
3+
4+
export *
5+
module * { export * }
6+
}

AdjustSdkStatic/AdjustSdk.h

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
//
2+
// AdjustSdkStatic.h
3+
// AdjustSdkStatic
4+
//
5+
// Created by Genady Buchatsky on 12.03.22.
6+
// Copyright © 2022 Adjust GmbH. All rights reserved.
7+
//
8+
9+
#import <UIKit/UIKit.h>
10+
11+
#import <AdjustSdk/Adjust.h>
12+
#import <AdjustSdk/ADJEvent.h>
13+
#import <AdjustSdk/ADJThirdPartySharing.h>
14+
#import <AdjustSdk/ADJConfig.h>
15+
#import <AdjustSdk/ADJLogger.h>
16+
#import <AdjustSdk/ADJAttribution.h>
17+
#import <AdjustSdk/ADJSubscription.h>
18+
#import <AdjustSdk/ADJEventSuccess.h>
19+
#import <AdjustSdk/ADJEventFailure.h>
20+
#import <AdjustSdk/ADJSessionSuccess.h>
21+
#import <AdjustSdk/ADJSessionFailure.h>
22+
#import <AdjustSdk/ADJAdRevenue.h>
23+
#import <AdjustSdk/ADJLinkResolution.h>

AdjustSdkStatic/module.modulemap

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
framework module AdjustSdk {
2+
umbrella header "AdjustSdk.h"
3+
4+
export *
5+
module * { export * }
6+
}

0 commit comments

Comments
 (0)