Skip to content

Commit 5ae9648

Browse files
authored
Merge pull request #560 from adjust/v4294
Version 4.29.4
2 parents cd1c316 + f7a9fb6 commit 5ae9648

File tree

31 files changed

+551
-121
lines changed

31 files changed

+551
-121
lines changed

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.29.3"
3+
s.version = "4.29.4"
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 = { "Christian Wellenbrock" => "[email protected]" }
8-
s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.29.3" }
8+
s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.29.4" }
99
s.ios.deployment_target = '6.0'
1010
s.tvos.deployment_target = '9.0'
1111
s.framework = 'SystemConfiguration'

Adjust/ADJActivityHandler.m

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ @interface ADJActivityHandler()
102102
@property (nonatomic, copy) NSString* gdprPath;
103103
@property (nonatomic, copy) NSString* subscriptionPath;
104104

105+
- (void)prepareDeeplinkI:(ADJActivityHandler *_Nullable)selfI
106+
responseData:(ADJAttributionResponseData *_Nullable)attributionResponseData NS_EXTENSION_UNAVAILABLE_IOS("");
107+
105108
@end
106109

107110
// copy from ADClientError
@@ -1764,6 +1767,9 @@ - (BOOL)shouldFetchAdServicesI:(ADJActivityHandler *)selfI {
17641767
}
17651768

17661769
// Fetch if no attribution OR not sent to backend yet
1770+
if ([ADJUserDefaults getAdServicesTracked]) {
1771+
[selfI.logger debug:@"AdServices attribution info already read"];
1772+
}
17671773
return (selfI.attribution == nil || ![ADJUserDefaults getAdServicesTracked]);
17681774
}
17691775

@@ -2736,7 +2742,7 @@ - (void)registerForSKAdNetworkAttribution {
27362742

27372743
Class skAdNetwork = NSClassFromString(@"SKAdNetwork");
27382744
if (skAdNetwork == nil) {
2739-
[logger warn:@"StoreKit framework not found in user's app (SKAdNetwork not found)"];
2745+
[logger warn:@"StoreKit framework not found in the app (SKAdNetwork not found)"];
27402746
return;
27412747
}
27422748

Adjust/ADJActivityState.m

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,6 @@ - (BOOL)findTransactionId:(NSString *)transactionId {
8383
#pragma mark - Private & helper methods
8484

8585
- (void)assignRandomToken:(NSString *)randomToken {
86-
// self.secondaryDedupeToken = [[NSUUID UUID] UUIDString];
8786
NSString *persistedDedupeToken = [ADJUtil getPersistedRandomToken];
8887
if (persistedDedupeToken != nil) {
8988
if ((bool)[[NSUUID alloc] initWithUUIDString:persistedDedupeToken]) {

Adjust/ADJPackageBuilder.m

Lines changed: 54 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
// Copyright (c) 2013-2018 Adjust GmbH. All rights reserved.
77
//
88

9+
#include <string.h>
10+
911
#import "ADJUtil.h"
1012
#import "ADJAttribution.h"
1113
#import "ADJAdjustFactory.h"
@@ -295,28 +297,40 @@ - (void)signWithSigV2Plugin:(ADJActivityPackage *)activityPackage {
295297
if (signerClass == nil) {
296298
return;
297299
}
298-
299300
SEL signSEL = NSSelectorFromString(@"sign:withActivityKind:withSdkVersion:");
300301
if (![signerClass respondsToSelector:signSEL]) {
301302
return;
302303
}
303304

304-
NSMutableDictionary * parameters = activityPackage.parameters;
305-
const char * activityKindChar = [[ADJActivityKindUtil activityKindToString:activityPackage.activityKind] UTF8String];
306-
const char * sdkVersionChar = [activityPackage.clientSdk UTF8String];
305+
NSMutableDictionary *parameters = activityPackage.parameters;
306+
const char *activityKindChar = [[ADJActivityKindUtil activityKindToString:activityPackage.activityKind] UTF8String];
307+
const char *sdkVersionChar = [activityPackage.clientSdk UTF8String];
308+
309+
// Stack allocated strings to ensure their lifetime stays until the next iteration
310+
static char activityKind[51], sdkVersion[21];
311+
strncpy(activityKind, activityKindChar, strlen(activityKindChar) + 1);
312+
strncpy(sdkVersion, sdkVersionChar, strlen(sdkVersionChar) + 1);
313+
314+
// NSInvocation setArgument requires lvalue references with exact matching types to the executed function signature.
315+
// With this usage we ensure that the lifetime of the object remains until the next iteration, as it points to the
316+
// stack allocated string where we copied the buffer.
317+
const char *lvalActivityKind = activityKind;
318+
const char *lvalSdkVersion = sdkVersion;
319+
307320
/*
308321
[ADJSigner sign:parameters
309-
withActivityKind:activityKindChar
310-
withSdkVersion:sdkVersionChar];
322+
withActivityKind:activityKindChar
323+
withSdkVersion:sdkVersionChar];
311324
*/
325+
312326
NSMethodSignature *signMethodSignature = [signerClass methodSignatureForSelector:signSEL];
313327
NSInvocation *signInvocation = [NSInvocation invocationWithMethodSignature:signMethodSignature];
314-
[signInvocation setSelector: signSEL];
328+
[signInvocation setSelector:signSEL];
315329
[signInvocation setTarget:signerClass];
316330

317-
[signInvocation setArgument:&parameters atIndex: 2];
318-
[signInvocation setArgument:&activityKindChar atIndex: 3];
319-
[signInvocation setArgument:&sdkVersionChar atIndex: 4];
331+
[signInvocation setArgument:&parameters atIndex:2];
332+
[signInvocation setArgument:&lvalActivityKind atIndex:3];
333+
[signInvocation setArgument:&lvalSdkVersion atIndex:4];
320334

321335
[signInvocation invoke];
322336

@@ -325,17 +339,14 @@ - (void)signWithSigV2Plugin:(ADJActivityPackage *)activityPackage {
325339
return;
326340
}
327341
/*
328-
NSString *signerVersion = [ADJSigner getVersion];
342+
NSString *signerVersion = [ADJSigner getVersion];
329343
*/
330344
IMP getVersionIMP = [signerClass methodForSelector:getVersionSEL];
331345
if (!getVersionIMP) {
332346
return;
333347
}
334-
335348
id (*getVersionFunc)(id, SEL) = (void *)getVersionIMP;
336-
337349
id signerVersion = getVersionFunc(signerClass, getVersionSEL);
338-
339350
if (![signerVersion isKindOfClass:[NSString class]]) {
340351
return;
341352
}
@@ -344,7 +355,6 @@ - (void)signWithSigV2Plugin:(ADJActivityPackage *)activityPackage {
344355
[ADJPackageBuilder parameters:parameters
345356
setString:signerVersionString
346357
forKey:@"native_version"];
347-
348358
}
349359

350360
- (NSMutableDictionary *)getSessionParameters:(BOOL)isInDelay {
@@ -364,9 +374,7 @@ - (NSMutableDictionary *)getSessionParameters:(BOOL)isInDelay {
364374
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
365375
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
366376
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
367-
if (self.adjustConfig.allowIdfaReading == YES) {
368-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
369-
}
377+
[self addIdfaIfPossibleToParameters:parameters];
370378
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
371379
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
372380
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -431,9 +439,7 @@ - (NSMutableDictionary *)getEventParameters:(BOOL)isInDelay forEventPackage:(ADJ
431439
[ADJPackageBuilder parameters:parameters setString:event.eventToken forKey:@"event_token"];
432440
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
433441
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
434-
if (self.adjustConfig.allowIdfaReading == YES) {
435-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
436-
}
442+
[self addIdfaIfPossibleToParameters:parameters];
437443
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
438444
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
439445
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -518,9 +524,7 @@ - (NSMutableDictionary *)getInfoParameters:(NSString *)source {
518524
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
519525
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
520526
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
521-
if (self.adjustConfig.allowIdfaReading == YES) {
522-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
523-
}
527+
[self addIdfaIfPossibleToParameters:parameters];
524528
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
525529
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
526530
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -589,9 +593,7 @@ - (NSMutableDictionary *)getAdRevenueParameters:(NSString *)source payload:(NSDa
589593
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
590594
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
591595
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
592-
if (self.adjustConfig.allowIdfaReading == YES) {
593-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
594-
}
596+
[self addIdfaIfPossibleToParameters:parameters];
595597
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
596598
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
597599
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -651,9 +653,7 @@ - (NSMutableDictionary *)getAdRevenueParameters:(ADJAdRevenue *)adRevenue isInDe
651653
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
652654
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
653655
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
654-
if (self.adjustConfig.allowIdfaReading == YES) {
655-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
656-
}
656+
[self addIdfaIfPossibleToParameters:parameters];
657657
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
658658
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
659659
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -735,9 +735,7 @@ - (NSMutableDictionary *)getClickParameters:(NSString *)source {
735735
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
736736
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
737737
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
738-
if (self.adjustConfig.allowIdfaReading == YES) {
739-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
740-
}
738+
[self addIdfaIfPossibleToParameters:parameters];
741739
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
742740
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
743741
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -804,9 +802,7 @@ - (NSMutableDictionary *)getAttributionParameters:(NSString *)initiatedBy {
804802
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.environment forKey:@"environment"];
805803
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
806804
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
807-
if (self.adjustConfig.allowIdfaReading == YES) {
808-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
809-
}
805+
[self addIdfaIfPossibleToParameters:parameters];
810806
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
811807
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
812808
[ADJPackageBuilder parameters:parameters setString:initiatedBy forKey:@"initiated_by"];
@@ -857,9 +853,7 @@ - (NSMutableDictionary *)getGdprParameters {
857853
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.environment forKey:@"environment"];
858854
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
859855
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
860-
if (self.adjustConfig.allowIdfaReading == YES) {
861-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
862-
}
856+
[self addIdfaIfPossibleToParameters:parameters];
863857
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
864858
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
865859
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -915,9 +909,7 @@ - (NSMutableDictionary *)getDisableThirdPartySharingParameters {
915909
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
916910
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
917911
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
918-
if (self.adjustConfig.allowIdfaReading == YES) {
919-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
920-
}
912+
[self addIdfaIfPossibleToParameters:parameters];
921913
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
922914
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
923915
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -982,9 +974,7 @@ - (NSMutableDictionary *)getThirdPartySharingParameters:(nonnull ADJThirdPartySh
982974
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
983975
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
984976
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
985-
if (self.adjustConfig.allowIdfaReading == YES) {
986-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
987-
}
977+
[self addIdfaIfPossibleToParameters:parameters];
988978
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
989979
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
990980
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -1055,9 +1045,7 @@ - (NSMutableDictionary *)getMeasurementConsentParameters:(BOOL)enabled {
10551045
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
10561046
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
10571047
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
1058-
if (self.adjustConfig.allowIdfaReading == YES) {
1059-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
1060-
}
1048+
[self addIdfaIfPossibleToParameters:parameters];
10611049
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
10621050
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
10631051
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -1119,9 +1107,7 @@ - (NSMutableDictionary *)getSubscriptionParameters:(BOOL)isInDelay forSubscripti
11191107
[ADJPackageBuilder parameters:parameters setBool:self.adjustConfig.eventBufferingEnabled forKey:@"event_buffering_enabled"];
11201108
[ADJPackageBuilder parameters:parameters setString:self.adjustConfig.externalDeviceId forKey:@"external_device_id"];
11211109
[ADJPackageBuilder parameters:parameters setString:self.packageParams.fbAnonymousId forKey:@"fb_anon_id"];
1122-
if (self.adjustConfig.allowIdfaReading == YES) {
1123-
[ADJPackageBuilder parameters:parameters setString:[ADJUtil idfa] forKey:@"idfa"];
1124-
}
1110+
[self addIdfaIfPossibleToParameters:parameters];
11251111
[ADJPackageBuilder parameters:parameters setString:self.packageParams.idfv forKey:@"idfv"];
11261112
[ADJPackageBuilder parameters:parameters setString:self.packageParams.installedAt forKey:@"installed_at"];
11271113
[ADJPackageBuilder parameters:parameters setBool:YES forKey:@"needs_response_details"];
@@ -1181,6 +1167,23 @@ - (NSMutableDictionary *)getSubscriptionParameters:(BOOL)isInDelay forSubscripti
11811167
return parameters;
11821168
}
11831169

1170+
- (void)addIdfaIfPossibleToParameters:(NSMutableDictionary *)parameters {
1171+
if (! self.adjustConfig.allowIdfaReading) {
1172+
return;
1173+
}
1174+
1175+
NSString *idfa = [ADJUtil idfa];
1176+
1177+
if (idfa == nil
1178+
|| idfa.length == 0
1179+
|| [idfa isEqualToString:@"00000000-0000-0000-0000-000000000000"])
1180+
{
1181+
return;
1182+
}
1183+
1184+
[ADJPackageBuilder parameters:parameters setString:idfa forKey:@"idfa"];
1185+
}
1186+
11841187
- (ADJActivityPackage *)defaultActivityPackage {
11851188
ADJActivityPackage *activityPackage = [[ADJActivityPackage alloc] init];
11861189
activityPackage.clientSdk = self.packageParams.clientSdk;

Adjust/ADJUtil.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ typedef void (^isInactiveInjected)(BOOL);
3131

3232
+ (void)excludeFromBackup:(NSString *)filename;
3333

34-
+ (void)launchDeepLinkMain:(NSURL *)deepLinkUrl;
34+
+ (void)launchDeepLinkMain:(NSURL *)deepLinkUrl NS_EXTENSION_UNAVAILABLE_IOS("");
3535

3636
+ (void)launchInMainThread:(dispatch_block_t)block;
3737

3838
+ (BOOL)isMainThread;
3939

40-
+ (BOOL)isInactive;
40+
+ (BOOL)isInactive NS_EXTENSION_UNAVAILABLE_IOS("");
4141

4242
+ (void)launchInMainThreadWithInactive:(isInactiveInjected)isInactiveblock;
4343

0 commit comments

Comments
 (0)