66// Copyright (c) 2013 adjust GmbH. All rights reserved.
77//
88
9+ #import < UIKit/UIKit.h>
10+
911#import " ADJActivityPackage.h"
1012#import " ADJActivityHandler.h"
1113#import " ADJPackageBuilder.h"
1416#import " ADJTimerCycle.h"
1517#import " ADJTimerOnce.h"
1618#import " ADJUtil.h"
17- #import " UIDevice+ADJAdditions.h"
1819#import " ADJAdjustFactory.h"
1920#import " ADJAttributionHandler.h"
2021#import " NSString+ADJAdditions.h"
@@ -87,7 +88,7 @@ @interface ADJActivityHandler()
8788@property (nonatomic , assign ) NSInteger iAdRetriesLeft;
8889@property (nonatomic , assign ) NSInteger adServicesRetriesLeft;
8990@property (nonatomic , strong ) ADJInternalState *internalState;
90- @property (nonatomic , strong ) ADJDeviceInfo *deviceInfo ;
91+ @property (nonatomic , strong ) ADJPackageParams *packageParams ;
9192@property (nonatomic , strong ) ADJTimerOnce *delayStartTimer;
9293@property (nonatomic , strong ) ADJSessionParameters *sessionParameters;
9394// weak for object that Activity Handler does not "own"
@@ -562,7 +563,7 @@ - (void)sendIad3ClickPackage:(ADJActivityHandler *)selfI
562563 }];
563564 }
564565 ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ]
565- initWithDeviceInfo : selfI.deviceInfo
566+ initWithPackageParams : selfI.packageParams
566567 activityState: selfI.activityState
567568 config: selfI.adjustConfig
568569 sessionParameters: self .sessionParameters
@@ -597,7 +598,7 @@ - (void)sendAdServicesClickPackage:(ADJActivityHandler *)selfI
597598 }];
598599 }
599600 ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ]
600- initWithDeviceInfo : selfI.deviceInfo
601+ initWithPackageParams : selfI.packageParams
601602 activityState: selfI.activityState
602603 config: selfI.adjustConfig
603604 sessionParameters: self .sessionParameters
@@ -760,6 +761,14 @@ - (void)trackMeasurementConsent:(BOOL)enabled {
760761 }];
761762}
762763
764+ - (void )trackAdRevenue : (ADJAdRevenue *)adRevenue {
765+ [ADJUtil launchInQueue: self .internalQueue
766+ selfInject: self
767+ block: ^(ADJActivityHandler * selfI) {
768+ [selfI trackAdRevenueI: selfI adRevenue: adRevenue];
769+ }];
770+ }
771+
763772- (void )writeActivityState {
764773 [ADJUtil launchInQueue: self .internalQueue
765774 selfInject: self
@@ -779,7 +788,7 @@ - (void)trackAttStatusUpdateI:(ADJActivityHandler *)selfI {
779788 double now = [NSDate .date timeIntervalSince1970 ];
780789
781790 ADJPackageBuilder *infoBuilder = [[ADJPackageBuilder alloc ]
782- initWithDeviceInfo : selfI.deviceInfo
791+ initWithPackageParams : selfI.packageParams
783792 activityState: selfI.activityState
784793 config: selfI.adjustConfig
785794 sessionParameters: selfI.sessionParameters
@@ -845,7 +854,7 @@ - (void)teardown
845854 self.adjustDelegate = nil ;
846855 self.adjustConfig = nil ;
847856 self.internalState = nil ;
848- self.deviceInfo = nil ;
857+ self.packageParams = nil ;
849858 self.delayStartTimer = nil ;
850859 self.logger = nil ;
851860}
@@ -888,7 +897,7 @@ - (void)initI:(ADJActivityHandler *)selfI
888897 kForegroundTimerInterval = ADJAdjustFactory.timerInterval ;
889898 kBackgroundTimerInterval = ADJAdjustFactory.timerInterval ;
890899
891- selfI.deviceInfo = [ADJDeviceInfo deviceInfoWithSdkPrefix : selfI.adjustConfig.sdkPrefix];
900+ selfI.packageParams = [ADJPackageParams packageParamsWithSdkPrefix : selfI.adjustConfig.sdkPrefix];
892901
893902 // read files that are accessed only in Internal sections
894903 selfI.sessionParameters = [[ADJSessionParameters alloc ] init ];
@@ -1159,7 +1168,7 @@ - (void)trackNewSessionI:(double)now withActivityHandler:(ADJActivityHandler *)s
11591168- (void )transferSessionPackageI : (ADJActivityHandler *)selfI
11601169 now : (double )now {
11611170 ADJPackageBuilder *sessionBuilder = [[ADJPackageBuilder alloc ]
1162- initWithDeviceInfo : selfI.deviceInfo
1171+ initWithPackageParams : selfI.packageParams
11631172 activityState: selfI.activityState
11641173 config: selfI.adjustConfig
11651174 sessionParameters: selfI.sessionParameters
@@ -1234,7 +1243,7 @@ - (void)eventI:(ADJActivityHandler *)selfI
12341243
12351244 // create and populate event package
12361245 ADJPackageBuilder *eventBuilder = [[ADJPackageBuilder alloc ]
1237- initWithDeviceInfo : selfI.deviceInfo
1246+ initWithPackageParams : selfI.packageParams
12381247 activityState: selfI.activityState
12391248 config: selfI.adjustConfig
12401249 sessionParameters: selfI.sessionParameters
@@ -1275,7 +1284,7 @@ - (void)adRevenueI:(ADJActivityHandler *)selfI
12751284
12761285 // Create and submit ad revenue package.
12771286 ADJPackageBuilder *adRevenueBuilder = [[ADJPackageBuilder alloc ]
1278- initWithDeviceInfo : selfI.deviceInfo
1287+ initWithPackageParams : selfI.packageParams
12791288 activityState: selfI.activityState
12801289 config: selfI.adjustConfig
12811290 sessionParameters: selfI.sessionParameters
@@ -1307,7 +1316,7 @@ - (void)trackSubscriptionI:(ADJActivityHandler *)selfI
13071316
13081317 // Create and submit ad revenue package.
13091318 ADJPackageBuilder *subscriptionBuilder = [[ADJPackageBuilder alloc ]
1310- initWithDeviceInfo : selfI.deviceInfo
1319+ initWithPackageParams : selfI.packageParams
13111320 activityState: selfI.activityState
13121321 config: selfI.adjustConfig
13131322 sessionParameters: selfI.sessionParameters
@@ -1352,7 +1361,7 @@ - (void)disableThirdPartySharingI:(ADJActivityHandler *)selfI {
13521361
13531362 // build package
13541363 ADJPackageBuilder *dtpsBuilder = [[ADJPackageBuilder alloc ]
1355- initWithDeviceInfo : selfI.deviceInfo
1364+ initWithPackageParams : selfI.packageParams
13561365 activityState: selfI.activityState
13571366 config: selfI.adjustConfig
13581367 sessionParameters: selfI.sessionParameters
@@ -1389,7 +1398,7 @@ - (BOOL)trackThirdPartySharingI:(ADJActivityHandler *)selfI
13891398
13901399 // build package
13911400 ADJPackageBuilder *tpsBuilder = [[ADJPackageBuilder alloc ]
1392- initWithDeviceInfo : selfI.deviceInfo
1401+ initWithPackageParams : selfI.packageParams
13931402 activityState: selfI.activityState
13941403 config: selfI.adjustConfig
13951404 sessionParameters: selfI.sessionParameters
@@ -1426,7 +1435,7 @@ - (BOOL)trackMeasurementConsentI:(ADJActivityHandler *)selfI
14261435
14271436 // build package
14281437 ADJPackageBuilder *tpsBuilder = [[ADJPackageBuilder alloc ]
1429- initWithDeviceInfo : selfI.deviceInfo
1438+ initWithPackageParams : selfI.packageParams
14301439 activityState: selfI.activityState
14311440 config: selfI.adjustConfig
14321441 sessionParameters: selfI.sessionParameters
@@ -1446,6 +1455,42 @@ - (BOOL)trackMeasurementConsentI:(ADJActivityHandler *)selfI
14461455 return YES ;
14471456}
14481457
1458+ - (void )trackAdRevenueI : (ADJActivityHandler *)selfI
1459+ adRevenue : (ADJAdRevenue *)adRevenue
1460+ {
1461+ if (!selfI.activityState ) {
1462+ return ;
1463+ }
1464+ if (![selfI isEnabledI: selfI]) {
1465+ return ;
1466+ }
1467+ if (selfI.activityState .isGdprForgotten ) {
1468+ return ;
1469+ }
1470+ if (![selfI checkAdRevenueI: selfI adRevenue: adRevenue]) {
1471+ return ;
1472+ }
1473+
1474+ double now = [NSDate .date timeIntervalSince1970 ];
1475+
1476+ // Create and submit ad revenue package.
1477+ ADJPackageBuilder *adRevenueBuilder = [[ADJPackageBuilder alloc ] initWithPackageParams: selfI.packageParams
1478+ activityState: selfI.activityState
1479+ config: selfI.adjustConfig
1480+ sessionParameters: selfI.sessionParameters
1481+ trackingStatusManager: self .trackingStatusManager
1482+ createdAt: now];
1483+
1484+ ADJActivityPackage *adRevenuePackage = [adRevenueBuilder buildAdRevenuePackage: adRevenue
1485+ isInDelay: [selfI.internalState isInDelayedStart ]];
1486+ [selfI.packageHandler addPackage: adRevenuePackage];
1487+ if (selfI.adjustConfig .eventBufferingEnabled ) {
1488+ [selfI.logger info: @" Buffered event %@ " , adRevenuePackage.suffix];
1489+ } else {
1490+ [selfI.packageHandler sendFirstPackage ];
1491+ }
1492+ }
1493+
14491494- (void )launchEventResponseTasksI : (ADJActivityHandler *)selfI
14501495 eventResponseData : (ADJEventResponseData *)eventResponseData {
14511496 [selfI updateAdidI: selfI adid: eventResponseData.adid];
@@ -1710,7 +1755,7 @@ - (void)setEnabledI:(ADJActivityHandler *)selfI enabled:(BOOL)enabled {
17101755}
17111756
17121757- (void )checkForiAdI : (ADJActivityHandler *)selfI {
1713- [[UIDevice currentDevice ] adjCheckForiAd : selfI queue: selfI.internalQueue];
1758+ [ADJUtil checkForiAd : selfI queue: selfI.internalQueue];
17141759}
17151760
17161761- (BOOL )shouldFetchAdServicesI : (ADJActivityHandler *)selfI {
@@ -1727,7 +1772,7 @@ - (void)checkForAdServicesAttributionI:(ADJActivityHandler *)selfI {
17271772 if ([selfI shouldFetchAdServicesI: selfI]) {
17281773 dispatch_async (dispatch_get_global_queue (DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
17291774 NSError *error = nil ;
1730- NSString *token = [[UIDevice currentDevice ] adjFetchAdServicesAttribution : &error];
1775+ NSString *token = [ADJUtil fetchAdServicesAttribution : &error];
17311776 [selfI setAdServicesAttributionToken: token error: error];
17321777 });
17331778 }
@@ -1842,7 +1887,7 @@ - (void)appWillOpenUrlI:(ADJActivityHandler *)selfI
18421887 selfI.activityState .lastInterval = lastInterval;
18431888 }];
18441889 ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ]
1845- initWithDeviceInfo : selfI.deviceInfo
1890+ initWithPackageParams : selfI.packageParams
18461891 activityState: selfI.activityState
18471892 config: selfI.adjustConfig
18481893 sessionParameters: selfI.sessionParameters
@@ -1946,7 +1991,7 @@ - (void)setDeviceTokenI:(ADJActivityHandler *)selfI
19461991 // send info package
19471992 double now = [NSDate .date timeIntervalSince1970 ];
19481993 ADJPackageBuilder *infoBuilder = [[ADJPackageBuilder alloc ]
1949- initWithDeviceInfo : selfI.deviceInfo
1994+ initWithPackageParams : selfI.packageParams
19501995 activityState: selfI.activityState
19511996 config: selfI.adjustConfig
19521997 sessionParameters: selfI.sessionParameters
@@ -1995,7 +2040,7 @@ - (void)setPushTokenI:(ADJActivityHandler *)selfI
19952040 // send info package
19962041 double now = [NSDate .date timeIntervalSince1970 ];
19972042 ADJPackageBuilder *infoBuilder = [[ADJPackageBuilder alloc ]
1998- initWithDeviceInfo : selfI.deviceInfo
2043+ initWithPackageParams : selfI.packageParams
19992044 activityState: selfI.activityState
20002045 config: selfI.adjustConfig
20012046 sessionParameters: selfI.sessionParameters
@@ -2036,7 +2081,7 @@ - (void)setGdprForgetMeI:(ADJActivityHandler *)selfI {
20362081 // Send GDPR package
20372082 double now = [NSDate .date timeIntervalSince1970 ];
20382083 ADJPackageBuilder *gdprBuilder = [[ADJPackageBuilder alloc ]
2039- initWithDeviceInfo : selfI.deviceInfo
2084+ initWithPackageParams : selfI.packageParams
20402085 activityState: selfI.activityState
20412086 config: selfI.adjustConfig
20422087 sessionParameters: selfI.sessionParameters
@@ -2668,6 +2713,21 @@ - (BOOL)checkActivityStateI:(ADJActivityHandler *)selfI {
26682713 return YES ;
26692714}
26702715
2716+ - (BOOL )checkAdRevenueI : (ADJActivityHandler *)selfI
2717+ adRevenue : (ADJAdRevenue *)adRevenue {
2718+ if (adRevenue == nil ) {
2719+ [selfI.logger error: @" Ad revenue missing" ];
2720+ return NO ;
2721+ }
2722+
2723+ if (![adRevenue isValid ]) {
2724+ [selfI.logger error: @" Ad revenue not initialized correctly" ];
2725+ return NO ;
2726+ }
2727+
2728+ return YES ;
2729+ }
2730+
26712731- (void )registerForSKAdNetworkAttribution {
26722732 if (!self.adjustConfig .isSKAdNetworkHandlingActive ) {
26732733 return ;
@@ -2705,6 +2765,13 @@ - (void)checkConversionValue:(ADJResponseData *)responseData {
27052765 }
27062766
27072767 [ADJUtil updateSkAdNetworkConversionValue: conversionValue];
2768+
2769+ if ([self .adjustDelegate respondsToSelector: @selector (adjustConversionValueUpdated: )]) {
2770+ [self .logger debug: @" Launching conversion value updated delegate" ];
2771+ [ADJUtil launchInMainThread: self .adjustDelegate
2772+ selector: @selector (adjustConversionValueUpdated: )
2773+ withObject: conversionValue];
2774+ }
27082775}
27092776
27102777- (void )updateAttStatusFromUserCallback : (int )newAttStatusFromUser {
@@ -2737,37 +2804,28 @@ - (BOOL)canGetAttStatus {
27372804}
27382805
27392806- (BOOL )trackingEnabled {
2740- return UIDevice. currentDevice . adjTrackingEnabled ;
2807+ return [ADJUtil trackingEnabled ] ;
27412808}
27422809
27432810- (int )attStatus {
2744- int readAttStatus = UIDevice.currentDevice .adjATTStatus ;
2745-
2811+ int readAttStatus = [ADJUtil attStatus ];
27462812 [self updateAttStatus: readAttStatus];
2747-
2748- // does not need to track AttStatus update, since it will be send with package
2749-
27502813 return readAttStatus;
27512814}
27522815
27532816- (void )checkForNewAttStatus {
2754- int readAttStatus = UIDevice.currentDevice .adjATTStatus ;
2755-
2817+ int readAttStatus = [ADJUtil attStatus ];
27562818 BOOL didUpdateAttStatus = [self updateAttStatus: readAttStatus];
2757-
27582819 if (!didUpdateAttStatus) {
27592820 return ;
27602821 }
2761-
27622822 [self .activityHandler trackAttStatusUpdate ];
27632823}
27642824- (void )updateAttStatusFromUserCallback : (int )newAttStatusFromUser {
27652825 BOOL didUpdateAttStatus = [self updateAttStatus: newAttStatusFromUser];
2766-
27672826 if (!didUpdateAttStatus) {
27682827 return ;
27692828 }
2770-
27712829 [self .activityHandler trackAttStatusUpdate ];
27722830}
27732831
0 commit comments