@@ -238,6 +238,12 @@ - (void)finishedTracking:(ADJResponseData *)responseData {
238
238
return ;
239
239
}
240
240
241
+ // redirect sdk_click responses to attribution handler to check for attribution information
242
+ if ([responseData isKindOfClass: [ADJSdkClickResponseData class ]]) {
243
+ [self .attributionHandler checkSdkClickResponse: (ADJSdkClickResponseData*)responseData];
244
+ return ;
245
+ }
246
+
241
247
// check if it's an event response
242
248
if ([responseData isKindOfClass: [ADJEventResponseData class ]]) {
243
249
[self launchEventResponseTasks: (ADJEventResponseData*)responseData];
@@ -261,6 +267,14 @@ - (void)launchSessionResponseTasks:(ADJSessionResponseData *)sessionResponseData
261
267
}];
262
268
}
263
269
270
+ - (void )launchSdkClickResponseTasks : (ADJSdkClickResponseData *)sdkClickResponseData {
271
+ [ADJUtil launchInQueue: self .internalQueue
272
+ selfInject: self
273
+ block: ^(ADJActivityHandler * selfI) {
274
+ [selfI launchSdkClickResponseTasksI: selfI sdkClickResponseData: sdkClickResponseData];
275
+ }];
276
+ }
277
+
264
278
- (void )launchAttributionResponseTasks : (ADJAttributionResponseData *)attributionResponseData {
265
279
[ADJUtil launchInQueue: self .internalQueue
266
280
selfInject: self
@@ -399,27 +413,14 @@ - (void)setDeviceToken:(NSData *)deviceToken {
399
413
}];
400
414
}
401
415
402
- - (void )setIadDate : (NSDate *)iAdImpressionDate withPurchaseDate : (NSDate *)appPurchaseDate {
403
- if (iAdImpressionDate == nil ) {
404
- [self .logger debug: @" iAdImpressionDate not received" ];
405
- return ;
406
- }
407
-
408
- [self .logger debug: @" iAdImpressionDate received: %@ " , iAdImpressionDate];
409
-
410
-
411
- double now = [NSDate .date timeIntervalSince1970 ];
412
- ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ]
413
- initWithDeviceInfo: self .deviceInfo
414
- activityState: self .activityState
415
- config: self .adjustConfig
416
- createdAt: now];
417
-
418
- clickBuilder.purchaseTime = appPurchaseDate;
419
- clickBuilder.clickTime = iAdImpressionDate;
420
-
421
- ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage: @" iad" ];
422
- [self .sdkClickHandler sendSdkClick: clickPackage];
416
+ - (void )setIadDate : (NSDate *)iAdImpressionDate
417
+ withPurchaseDate : (NSDate *)appPurchaseDate
418
+ {
419
+ [ADJUtil launchInQueue: self .internalQueue
420
+ selfInject: self
421
+ block: ^(ADJActivityHandler * selfI) {
422
+ [selfI setIadDateI: selfI iAdImpressionDate: iAdImpressionDate withPurchaseDate: appPurchaseDate];
423
+ }];
423
424
}
424
425
425
426
- (void )setAttributionDetails : (NSDictionary *)attributionDetails
@@ -485,6 +486,10 @@ - (void)sendIad3ClickPackage:(ADJActivityHandler *)selfI
485
486
attributionDetails : (NSDictionary *)attributionDetails
486
487
{
487
488
double now = [NSDate .date timeIntervalSince1970 ];
489
+ if (selfI.activityState != nil ) {
490
+ double lastInterval = now - selfI.activityState .lastActivity ;
491
+ selfI.activityState .lastInterval = lastInterval;
492
+ }
488
493
ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ]
489
494
initWithDeviceInfo: selfI.deviceInfo
490
495
activityState: selfI.activityState
@@ -493,7 +498,7 @@ - (void)sendIad3ClickPackage:(ADJActivityHandler *)selfI
493
498
494
499
clickBuilder.attributionDetails = attributionDetails;
495
500
496
- ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage: @" iad3" ];
501
+ ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage: @" iad3" sessionParameters: selfI.sessionParameters ];
497
502
[selfI.sdkClickHandler sendSdkClick: clickPackage];
498
503
}
499
504
@@ -716,7 +721,8 @@ - (void)initI:(ADJActivityHandler *)selfI
716
721
startsSending: [selfI toSendI: selfI
717
722
sdkClickHandlerOnly: NO ]];
718
723
719
- selfI.sdkClickHandler = [ADJAdjustFactory sdkClickHandlerWithStartsPaused: [selfI toSendI: selfI
724
+ selfI.sdkClickHandler = [ADJAdjustFactory sdkClickHandlerWithStartsPaused: selfI
725
+ startsSending: [selfI toSendI: selfI
720
726
sdkClickHandlerOnly: YES ]];
721
727
722
728
[[UIDevice currentDevice ] adjSetIad: selfI triesV3Left: kTryIadV3 ];
@@ -930,6 +936,21 @@ - (void)launchSessionResponseTasksI:(ADJActivityHandler *)selfI
930
936
self.internalState .sessionResponseProcessed = YES ;
931
937
}
932
938
939
+ - (void )launchSdkClickResponseTasksI : (ADJActivityHandler *)selfI
940
+ sdkClickResponseData : (ADJSdkClickResponseData *)sdkClickResponseData {
941
+ [selfI updateAdidI: selfI adid: sdkClickResponseData.adid];
942
+
943
+ BOOL toLaunchAttributionDelegate = [selfI updateAttributionI: selfI attribution: sdkClickResponseData.attribution];
944
+
945
+ // try to update and launch the attribution changed delegate
946
+ if (toLaunchAttributionDelegate) {
947
+ [selfI.logger debug: @" Launching attribution changed delegate" ];
948
+ [ADJUtil launchInMainThread: selfI.adjustDelegate
949
+ selector: @selector (adjustAttributionChanged: )
950
+ withObject: sdkClickResponseData.attribution];
951
+ }
952
+ }
953
+
933
954
- (void )launchAttributionResponseTasksI : (ADJActivityHandler *)selfI
934
955
attributionResponseData : (ADJAttributionResponseData *)attributionResponseData {
935
956
[selfI updateAdidI: selfI adid: attributionResponseData.adid];
@@ -1034,6 +1055,9 @@ - (void)appWillOpenUrlI:(ADJActivityHandler *)selfI
1034
1055
}
1035
1056
1036
1057
double now = [NSDate .date timeIntervalSince1970 ];
1058
+ double lastInterval = now - selfI.activityState .lastActivity ;
1059
+ selfI.activityState .lastInterval = lastInterval;
1060
+
1037
1061
ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ]
1038
1062
initWithDeviceInfo: selfI.deviceInfo
1039
1063
activityState: selfI.activityState
@@ -1044,7 +1068,7 @@ - (void)appWillOpenUrlI:(ADJActivityHandler *)selfI
1044
1068
clickBuilder.clickTime = [NSDate date ];
1045
1069
clickBuilder.deeplink = [url absoluteString ];
1046
1070
1047
- ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage: @" deeplink" ];
1071
+ ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage: @" deeplink" sessionParameters: selfI.sessionParameters ];
1048
1072
[selfI.sdkClickHandler sendSdkClick: clickPackage];
1049
1073
}
1050
1074
@@ -1133,6 +1157,37 @@ - (void)setDeviceTokenI:(ADJActivityHandler *)selfI
1133
1157
[selfI.packageHandler sendFirstPackage ];
1134
1158
}
1135
1159
1160
+ - (void )setIadDateI : (ADJActivityHandler *)selfI
1161
+ iAdImpressionDate : (NSDate *)iAdImpressionDate
1162
+ withPurchaseDate : (NSDate *)appPurchaseDate
1163
+ {
1164
+ if (iAdImpressionDate == nil ) {
1165
+ [self .logger debug: @" iAdImpressionDate not received" ];
1166
+ return ;
1167
+ }
1168
+
1169
+ [self .logger debug: @" iAdImpressionDate received: %@ " , iAdImpressionDate];
1170
+
1171
+ double now = [NSDate .date timeIntervalSince1970 ];
1172
+ if (selfI.activityState != nil ) {
1173
+ double lastInterval = now - selfI.activityState .lastActivity ;
1174
+ selfI.activityState .lastInterval = lastInterval;
1175
+ }
1176
+
1177
+ ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ]
1178
+ initWithDeviceInfo: self .deviceInfo
1179
+ activityState: self .activityState
1180
+ config: self .adjustConfig
1181
+ createdAt: now];
1182
+
1183
+ clickBuilder.purchaseTime = appPurchaseDate;
1184
+ clickBuilder.clickTime = iAdImpressionDate;
1185
+
1186
+ ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage: @" iad" sessionParameters: selfI.sessionParameters];
1187
+ [self .sdkClickHandler sendSdkClick: clickPackage];
1188
+ }
1189
+
1190
+
1136
1191
#pragma mark - private
1137
1192
1138
1193
- (BOOL )isEnabledI : (ADJActivityHandler *)selfI {
0 commit comments