Localytics SDK update because of startup issue.
This commit is contained in:
parent
850978cbe3
commit
b1f0f70849
0
Localytics/LocalyticsDatabase.h
Normal file → Executable file
0
Localytics/LocalyticsDatabase.h
Normal file → Executable file
0
Localytics/LocalyticsDatabase.m
Normal file → Executable file
0
Localytics/LocalyticsDatabase.m
Normal file → Executable file
8
Localytics/LocalyticsSession.h
Normal file → Executable file
8
Localytics/LocalyticsSession.h
Normal file → Executable file
@ -154,10 +154,10 @@
|
||||
closed and the time of closing is recorded. When the app returns to the foreground, the session
|
||||
is resumed. If the time since closing is greater than BACKGROUND_SESSION_TIMEOUT, (15 seconds
|
||||
by default) a new session is created, and uploading is triggered. Otherwise, the previous session
|
||||
is reopened. It is possible to use the return value to determine whether or not a session was resumed.
|
||||
This may be useful to some customers looking to do conditional instrumentation at the close of a session.
|
||||
It is perfectly reasonable to ignore the return value.
|
||||
@result YES if the sesion was resumed NO if it wasn't (suggesting a new session was created instead).*/
|
||||
is reopened.
|
||||
@return Returns whether the session was resumed or a new session was started. If the user has opted
|
||||
out of analytics then the return from this method is undefined.
|
||||
*/
|
||||
- (BOOL)resume;
|
||||
|
||||
/*!
|
||||
|
97
Localytics/LocalyticsSession.m
Normal file → Executable file
97
Localytics/LocalyticsSession.m
Normal file → Executable file
@ -22,7 +22,7 @@
|
||||
|
||||
#pragma mark Constants
|
||||
#define PREFERENCES_KEY @"_localytics_install_id" // The randomly generated ID for each install of the app
|
||||
#define CLIENT_VERSION @"iOS_2.12" // The version of this library
|
||||
#define CLIENT_VERSION @"iOS_2.14" // The version of this library
|
||||
#define LOCALYTICS_DIR @".localytics" // The directory in which the Localytics database is stored
|
||||
#define IFT_ETHER 0x6 // Ethernet CSMACD
|
||||
#define PATH_TO_APT @"/private/var/lib/apt/"
|
||||
@ -200,48 +200,54 @@ CLLocationCoordinate2D lastDeviceLocation = {0};
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
- (BOOL)resume {
|
||||
__block BOOL resumed = NO;
|
||||
|
||||
dispatch_sync(_queue,^{
|
||||
@try {
|
||||
// Do nothing if session is already open
|
||||
if(self.isSessionOpen == YES) {
|
||||
resumed = YES;
|
||||
return;
|
||||
}
|
||||
|
||||
if([self ll_isOptedIn] == false) {
|
||||
[self logMessage:@"Can't resume session because user is opted out."];
|
||||
resumed = NO;
|
||||
return;
|
||||
}
|
||||
|
||||
// conditions for resuming previous session
|
||||
if(self.sessionHasBeenOpen &&
|
||||
(!self.sessionCloseTime ||
|
||||
[self.sessionCloseTime timeIntervalSinceNow]*-1 <= self.backgroundSessionTimeout)) {
|
||||
// Note that we allow the session to be resumed even if the database size exceeds the
|
||||
// maximum. This is because we don't want to create incomplete sessions. If the DB was large
|
||||
// enough that the previous session could not be opened, there will be nothing to resume. But
|
||||
// if this session caused it to go over it is better to let it complete and stop the next one
|
||||
// from being created.
|
||||
[self logMessage:@"Resume called - Resuming previous session."];
|
||||
[self reopenPreviousSession];
|
||||
|
||||
resumed = YES;
|
||||
} else {
|
||||
// otherwise open new session and upload
|
||||
[self logMessage:@"Resume called - Opening a new session."];
|
||||
[self ll_open];
|
||||
|
||||
resumed = NO;
|
||||
}
|
||||
self.sessionCloseTime = nil;
|
||||
} @catch (NSException *e) {}
|
||||
});
|
||||
return resumed;
|
||||
|
||||
// Do nothing if session is already open
|
||||
if(self.isSessionOpen == YES)
|
||||
return YES;
|
||||
|
||||
BOOL ret = NO;
|
||||
// conditions for resuming previous session
|
||||
if(self.sessionHasBeenOpen &&
|
||||
(!self.sessionCloseTime ||
|
||||
[self.sessionCloseTime timeIntervalSinceNow]*-1 <= self.backgroundSessionTimeout)) {
|
||||
// Note that we allow the session to be resumed even if the database size exceeds the
|
||||
// maximum. This is because we don't want to create incomplete sessions. If the DB was large
|
||||
// enough that the previous session could not be opened, there will be nothing to resume. But
|
||||
// if this session caused it to go over it is better to let it complete and stop the next one
|
||||
// from being created.
|
||||
ret = YES;
|
||||
dispatch_async(_queue, ^{
|
||||
@try {
|
||||
if([self ll_isOptedIn] == false) {
|
||||
[self logMessage:@"Can't resume session because user is opted out."];
|
||||
} else {
|
||||
[self logMessage:@"Resume called - Resuming previous session."];
|
||||
[self reopenPreviousSession];
|
||||
}
|
||||
}
|
||||
@catch (NSException * e) {}
|
||||
});
|
||||
|
||||
} else {
|
||||
ret = NO;
|
||||
dispatch_async(_queue, ^{
|
||||
@try {
|
||||
if([self ll_isOptedIn] == false) {
|
||||
[self logMessage:@"Can't resume session because user is opted out."];
|
||||
} else {
|
||||
// otherwise open new session and upload
|
||||
[self logMessage:@"Resume called - Opening a new session."];
|
||||
[self ll_open];
|
||||
}
|
||||
}
|
||||
@catch (NSException * e) {}
|
||||
});
|
||||
|
||||
}
|
||||
self.sessionCloseTime = nil;
|
||||
return ret;
|
||||
}
|
||||
|
||||
- (void)close {
|
||||
@ -1120,10 +1126,11 @@ CLLocationCoordinate2D lastDeviceLocation = {0};
|
||||
*/
|
||||
- (NSString *)advertisingIdentifier {
|
||||
NSString *adId = nil;
|
||||
SEL adidSelector = NSSelectorFromString(@"identifierForAdvertising");
|
||||
if ([[UIDevice currentDevice] respondsToSelector:adidSelector]) {
|
||||
adId = [[[UIDevice currentDevice] performSelector:adidSelector] performSelector:NSSelectorFromString(@"UUIDString")];
|
||||
}
|
||||
Class advertisingClass = NSClassFromString(@"ASIdentifierManager");
|
||||
if (advertisingClass) {
|
||||
SEL adidSelector = NSSelectorFromString(@"advertisingIdentifier");
|
||||
adId = [[[advertisingClass performSelector:NSSelectorFromString(@"sharedManager")] performSelector:adidSelector] performSelector:NSSelectorFromString(@"UUIDString")];
|
||||
}
|
||||
return adId;
|
||||
}
|
||||
|
||||
|
0
Localytics/LocalyticsUploader.h
Normal file → Executable file
0
Localytics/LocalyticsUploader.h
Normal file → Executable file
0
Localytics/LocalyticsUploader.m
Normal file → Executable file
0
Localytics/LocalyticsUploader.m
Normal file → Executable file
0
Localytics/WebserviceConstants.h
Normal file → Executable file
0
Localytics/WebserviceConstants.h
Normal file → Executable file
Loading…
Reference in New Issue
Block a user