@@ -42,6 +42,7 @@ @interface AIActivityHandler()
42
42
@property (nonatomic , copy ) NSString *userAgent;
43
43
@property (nonatomic , copy ) NSString *clientSdk;
44
44
@property (nonatomic , assign ) BOOL trackingEnabled;
45
+ @property (nonatomic , assign ) BOOL internalEnabled;
45
46
46
47
@end
47
48
@@ -70,6 +71,7 @@ - (id)initWithAppToken:(NSString *)yourAppToken {
70
71
// default values
71
72
self.environment = @" unknown" ;
72
73
self.trackMacMd5 = YES ;
74
+ self.internalEnabled = YES ;
73
75
74
76
dispatch_async (self.internalQueue , ^{
75
77
[self initInternal: yourAppToken];
@@ -119,6 +121,26 @@ - (void)finishedTrackingWithResponse:(AIResponseData *)response {
119
121
}
120
122
}
121
123
124
+ - (void )setEnabled : (BOOL )enabled {
125
+ self.internalEnabled = enabled;
126
+ if ([self checkActivityState: self .activityState]) {
127
+ self.activityState .enabled = enabled;
128
+ }
129
+ if (enabled) {
130
+ [self trackSubsessionStart ];
131
+ } else {
132
+ [self trackSubsessionEnd ];
133
+ }
134
+ }
135
+
136
+ - (BOOL )isEnabled {
137
+ if ([self checkActivityState: self .activityState]) {
138
+ return self.activityState .enabled ;
139
+ } else {
140
+ return self.internalEnabled ;
141
+ }
142
+ }
143
+
122
144
#pragma mark - internal
123
145
- (void )initInternal : (NSString *)yourAppToken {
124
146
if (![self checkAppTokenNotNil: yourAppToken]) return ;
@@ -144,6 +166,11 @@ - (void)initInternal:(NSString *)yourAppToken {
144
166
- (void )startInternal {
145
167
if (![self checkAppTokenNotNil: self .appToken]) return ;
146
168
169
+ if (self.activityState != nil
170
+ && !self.activityState .enabled ) {
171
+ return ;
172
+ }
173
+
147
174
[self .packageHandler resumeSending ];
148
175
[self startTimer ];
149
176
@@ -157,6 +184,7 @@ - (void)startInternal {
157
184
158
185
[self transferSessionPackage ];
159
186
[self .activityState resetSessionAttributes: now];
187
+ self.activityState .enabled = self.internalEnabled ;
160
188
[self writeActivityState ];
161
189
[self .logger info: @" First session" ];
162
190
return ;
@@ -200,7 +228,8 @@ - (void)endInternal {
200
228
201
229
[self .packageHandler pauseSending ];
202
230
[self stopTimer ];
203
- [self updateActivityState ];
231
+ double now = [NSDate .date timeIntervalSince1970 ];
232
+ [self updateActivityState: now];
204
233
[self writeActivityState ];
205
234
}
206
235
@@ -212,12 +241,16 @@ - (void)eventInternal:(NSString *)eventToken
212
241
if (![self checkEventTokenNotNil: eventToken]) return ;
213
242
if (![self checkEventTokenLength: eventToken]) return ;
214
243
244
+ if (!self.activityState .enabled ) {
245
+ return ;
246
+ }
247
+
215
248
AIPackageBuilder *eventBuilder = [[AIPackageBuilder alloc ] init ];
216
249
eventBuilder.eventToken = eventToken;
217
250
eventBuilder.callbackParameters = parameters;
218
251
219
252
double now = [NSDate .date timeIntervalSince1970 ];
220
- [self updateActivityState ];
253
+ [self updateActivityState: now ];
221
254
self.activityState .createdAt = now;
222
255
self.activityState .eventCount ++;
223
256
@@ -247,13 +280,17 @@ - (void)revenueInternal:(double)amount
247
280
if (![self checkEventTokenLength: eventToken]) return ;
248
281
if (![self checkTransactionId: transactionId]) return ;
249
282
283
+ if (!self.activityState .enabled ) {
284
+ return ;
285
+ }
286
+
250
287
AIPackageBuilder *revenueBuilder = [[AIPackageBuilder alloc ] init ];
251
288
revenueBuilder.amountInCents = amount;
252
289
revenueBuilder.eventToken = eventToken;
253
290
revenueBuilder.callbackParameters = parameters;
254
291
255
292
double now = [NSDate .date timeIntervalSince1970 ];
256
- [self updateActivityState ];
293
+ [self updateActivityState: now ];
257
294
self.activityState .createdAt = now;
258
295
self.activityState .eventCount ++;
259
296
@@ -275,10 +312,9 @@ - (void)revenueInternal:(double)amount
275
312
#pragma mark - private
276
313
277
314
// returns whether or not the activity state should be written
278
- - (BOOL )updateActivityState {
315
+ - (BOOL )updateActivityState : ( double ) now {
279
316
if (![self checkActivityState: self .activityState]) return NO ;
280
317
281
- double now = [NSDate .date timeIntervalSince1970 ];
282
318
double lastInterval = now - self.activityState .lastActivity ;
283
319
if (lastInterval < 0 ) {
284
320
[self .logger error: @" Time travel!" ];
@@ -375,8 +411,13 @@ - (void)stopTimer {
375
411
}
376
412
377
413
- (void )timerFired {
414
+ if (self.activityState != nil
415
+ && !self.activityState .enabled ) {
416
+ return ;
417
+ }
378
418
[self .packageHandler sendFirstPackage ];
379
- if ([self updateActivityState ]) {
419
+ double now = [NSDate .date timeIntervalSince1970 ];
420
+ if ([self updateActivityState: now]) {
380
421
[self writeActivityState ];
381
422
}
382
423
}
0 commit comments