@@ -37,7 +37,7 @@ @interface ADJActivityHandler()
3737@property (nonatomic , retain ) ADJTimer *timer;
3838@property (nonatomic , retain ) id <ADJLogger> logger;
3939@property (nonatomic , retain ) NSObject <AdjustDelegate> *delegate;
40- @property (nonatomic , retain ) ADJAttribution *attribution;
40+ @property (nonatomic , copy ) ADJAttribution *attribution;
4141@property (nonatomic , copy ) ADJConfig *adjustConfig;
4242
4343@property (nonatomic , assign ) BOOL enabled;
@@ -66,13 +66,20 @@ - (id)initWithConfig:(ADJConfig *)adjustConfig {
6666 return nil ;
6767 }
6868
69+ self.adjustConfig = adjustConfig;
70+ self.delegate = adjustConfig.delegate ;
71+
72+ if (![self .adjustConfig isValid ]) {
73+ return nil ;
74+ }
75+
6976 self.logger = ADJAdjustFactory.logger ;
7077 [self addNotificationObserver ];
7178 self.internalQueue = dispatch_queue_create (kInternalQueueName , DISPATCH_QUEUE_SERIAL);
7279 _enabled = YES ;
7380
7481 dispatch_async (self.internalQueue , ^{
75- [self initInternal: adjustConfig ];
82+ [self initInternal ];
7683 });
7784
7885 return self;
@@ -155,18 +162,21 @@ - (void)setDeviceToken:(NSData *)deviceToken {
155162}
156163
157164- (void )setIadDate : (NSDate *)iAdImpressionDate withPurchaseDate : (NSDate *)appPurchaseDate {
158- if (iAdImpressionDate != nil || appPurchaseDate != nil ) {
159- ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ]
160- initWithDeviceInfo: self .deviceInfo
161- activityState: self .activityState
162- config: self .adjustConfig];
165+ if (iAdImpressionDate == nil ) {
166+ [self .logger error: @" iAd click time is missing" ];
167+ return ;
168+ }
163169
164- [clickBuilder setClickTime: iAdImpressionDate];
165- [clickBuilder setPurchaseTime: appPurchaseDate];
170+ ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ]
171+ initWithDeviceInfo: self .deviceInfo
172+ activityState: self .activityState
173+ config: self .adjustConfig];
166174
167- ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage: @" iad" ];
168- [self .packageHandler sendClickPackage: clickPackage];
169- }
175+ [clickBuilder setClickTime: iAdImpressionDate];
176+ [clickBuilder setPurchaseTime: appPurchaseDate];
177+
178+ ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage: @" iad" ];
179+ [self .packageHandler sendClickPackage: clickPackage];
170180}
171181
172182- (BOOL )updateAttribution : (ADJAttribution *)attribution {
@@ -210,26 +220,23 @@ - (void) setAskingAttribution:(BOOL)askingAttribution {
210220}
211221
212222#pragma mark - internal
213- - (void )initInternal : (ADJConfig *)adjustConfig {
214- self.adjustConfig = adjustConfig;
215- self.deviceInfo = [ADJDeviceInfo deviceInfoWithSdkPrefix: adjustConfig.sdkPrefix];
223+ - (void )initInternal {
224+ self.deviceInfo = [ADJDeviceInfo deviceInfoWithSdkPrefix: self .adjustConfig.sdkPrefix];
216225
217- if ([adjustConfig.environment isEqualToString: ADJEnvironmentProduction]) {
226+ if ([self . adjustConfig.environment isEqualToString: ADJEnvironmentProduction]) {
218227 [self .logger setLogLevel: ADJLogLevelAssert];
219228 } else {
220- [self .logger setLogLevel: adjustConfig.logLevel];
229+ [self .logger setLogLevel: self . adjustConfig.logLevel];
221230 }
222231
223- if (!adjustConfig.macMd5TrackingEnabled ) {
232+ if (!self. adjustConfig .macMd5TrackingEnabled ) {
224233 [self .logger info: @" Tracking of macMd5 is disabled" ];
225234 }
226235
227- if (adjustConfig.eventBufferingEnabled ) {
236+ if (self. adjustConfig .eventBufferingEnabled ) {
228237 [self .logger info: @" Event buffering is enabled" ];
229238 }
230239
231- self.delegate = adjustConfig.delegate ;
232-
233240 [[UIDevice currentDevice ] adjSetIad: self ];
234241
235242 [self readAttribution ];
@@ -241,7 +248,6 @@ - (void)initInternal:(ADJConfig *)adjustConfig {
241248
242249 self.shouldGetAttribution = YES ;
243250
244-
245251 [self startInternal ];
246252}
247253
@@ -258,8 +264,6 @@ - (void)initInternal:(ADJConfig *)adjustConfig {
258264}
259265
260266- (void )startInternal {
261- if (![self checkAppTokenNotNil: self .adjustConfig.appToken]) return ;
262-
263267 if (self.activityState != nil
264268 && !self.activityState .enabled ) {
265269 return ;
@@ -324,8 +328,6 @@ - (void)startInternal {
324328}
325329
326330- (void )endInternal {
327- if (![self checkAppTokenNotNil: self .adjustConfig.appToken]) return ;
328-
329331 [self .packageHandler pauseSending ];
330332 [self stopTimer ];
331333 double now = [NSDate .date timeIntervalSince1970 ];
@@ -336,7 +338,6 @@ - (void)endInternal {
336338- (void )eventInternal : (ADJEvent *)event
337339{
338340 // check consistency
339- if (![self checkAppTokenNotNil: self .adjustConfig.appToken]) return ;
340341 if (![self checkActivityState: self .activityState]) return ;
341342 if (![event isValid ]) return ;
342343 if (![self checkTransactionId: event.transactionId]) return ;
@@ -355,6 +356,7 @@ - (void)eventInternal:(ADJEvent *)event
355356 ADJPackageBuilder *eventBuilder = [[ADJPackageBuilder alloc ] initWithDeviceInfo: self .deviceInfo
356357 activityState: self .activityState
357358 config: self .adjustConfig];
359+ [self setIadDate: [NSDate date ] withPurchaseDate: [NSDate date ]];
358360
359361 ADJActivityPackage *eventPackage = [eventBuilder buildEventPackage: event];
360362 [self .packageHandler addPackage: eventPackage];
@@ -397,12 +399,12 @@ - (void) appWillOpenUrlInternal:(NSURL *)url {
397399
398400 [self .attributionHandler getAttribution ];
399401
400-
401402 ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc ] initWithDeviceInfo: self .deviceInfo
402403 activityState: self .activityState
403404 config: self .adjustConfig];
404405 clickBuilder.deeplinkParameters = adjustDeepLinks;
405406 clickBuilder.attribution = attribution;
407+ [clickBuilder setClickTime: [NSDate date ]];
406408
407409 ADJActivityPackage *clickPackage = [clickBuilder buildClickPackage: @" deeplink" ];
408410 [self .packageHandler sendClickPackage: clickPackage];
@@ -470,22 +472,22 @@ - (BOOL)updateActivityState:(double)now {
470472}
471473
472474- (void )writeActivityState {
473- [ADJUtil writeObject: self .activityState filename: kActivityStateFilename objectName: @" activity state" ];
475+ [ADJUtil writeObject: self .activityState filename: kActivityStateFilename objectName: @" Activity state" ];
474476}
475477
476478- (void )writeAttribution {
477- [ADJUtil writeObject: self .attribution filename: kAttributionFilename objectName: @" attribution " ];
479+ [ADJUtil writeObject: self .attribution filename: kAttributionFilename objectName: @" Attribution " ];
478480}
479481
480482- (void )readActivityState {
481483 self.activityState = [ADJUtil readObject: kActivityStateFilename
482- objectName: @" activity state"
484+ objectName: @" Activity state"
483485 class: [ADJActivityState class ]];
484486}
485487
486488- (void )readAttribution {
487489 self.attribution = [ADJUtil readObject: kAttributionFilename
488- objectName: @" attribution "
490+ objectName: @" Attribution "
489491 class: [ADJAttribution class ]];
490492}
491493
@@ -560,14 +562,6 @@ - (BOOL)checkActivityState:(ADJActivityState *)activityState {
560562 return YES ;
561563}
562564
563- - (BOOL )checkAppTokenNotNil : (NSString *)appToken {
564- if (appToken == nil ) {
565- [self .logger error: @" Missing App Token" ];
566- return NO ;
567- }
568- return YES ;
569- }
570-
571565- (BOOL ) checkTransactionId : (NSString *)transactionId {
572566 if (transactionId == nil || transactionId.length == 0 ) {
573567 return YES ; // no transaction ID given
0 commit comments