From bce6b96417b86ffb862141935990549dc9a6be76 Mon Sep 17 00:00:00 2001 From: Maarten Billemont Date: Wed, 12 Sep 2012 15:58:54 +0200 Subject: [PATCH] Tag screens in Localytics + email fix + psc fix [FIXED] Sending email with no recipient caused a crash. [FIXED] Duplicate persistence coordinator. [UPDATED] Crashlytics and Localytics SDKs. [UPDATED] Don't continue the Localytics session when device locked. [UPDATED] Put Localytics communication on HTTPS for confidentiality. [ADDED] Tagging screens in Localytics. --- .../Versions/A/Crashlytics | Bin 711699 -> 744231 bytes .../Versions/A/Headers/Crashlytics.h | 31 + .../Versions/A/Resources/Info.plist | Bin 759 -> 761 bytes Crashlytics/Crashlytics.framework/run | Bin 44596 -> 48692 bytes External/Pearl | 2 +- Localytics/LocalyticsDatabase.h | 127 +- Localytics/LocalyticsDatabase.m | 1780 +++++++----- Localytics/LocalyticsSession.h | 467 ++-- Localytics/LocalyticsSession.m | 2426 +++++++++-------- Localytics/LocalyticsUploader.h | 26 +- Localytics/LocalyticsUploader.m | 55 +- Localytics/UploaderThread.h | 48 - Localytics/UploaderThread.m | 260 -- Localytics/WebserviceConstants.h | 17 +- MasterPassword/MPAppDelegate_Store.m | 6 +- MasterPassword/iOS/MPAppDelegate.m | 36 +- MasterPassword/iOS/MPAppsViewController.m | 7 + MasterPassword/iOS/MPGuideViewController.m | 3 + MasterPassword/iOS/MPMainViewController.m | 6 +- .../iOS/MPPreferencesViewController.m | 9 + MasterPassword/iOS/MPTypeViewController.m | 3 + MasterPassword/iOS/MPUnlockViewController.m | 7 +- 22 files changed, 2807 insertions(+), 2509 deletions(-) delete mode 100644 Localytics/UploaderThread.h delete mode 100644 Localytics/UploaderThread.m diff --git a/Crashlytics/Crashlytics.framework/Versions/A/Crashlytics b/Crashlytics/Crashlytics.framework/Versions/A/Crashlytics index 8a09fe3c9bdd71052684cea3142d6339eb2692c2..bb0d23de2102a9d0a80034a91d4e0b58d5b061fe 100644 GIT binary patch literal 744231 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

^PS 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%0DH^7HB7wgL(XsP{7siRG$@wv0z$$ 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

u0>aXr9!*^C_?9h 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%0ADq@qBdx$8leQPL2s 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
wT*6T>kBZx*~it0yt{n5=~)S+F+cF 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
)}0=(7F&StVlM&NvB%wH5m2>usy4F<^(R_w+X5 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 +@optional + +/** + * Returns the session identifier for the crash report. + **/ +- (NSString *)identifier; + +/** + * Returns the custom key value data for the crash report. + **/ +- (NSDictionary *)customKeys; + +@end + /** * * The CrashlyticsDelegate protocol provides a mechanism for your application to take @@ -169,4 +189,15 @@ OBJC_EXTERN void CLSNSLog(NSString *format, ...); **/ - (void)crashlyticsDidDetectCrashDuringPreviousExecution:(Crashlytics *)crashlytics; +/** + * + * Just like crashlyticsDidDetectCrashDuringPreviousExecution this delegate method is + * called once a Crashlytics instance has determined that the last execution of the + * application ended in a crash. A CLSCrashReport is passed back that contains data about + * the last crash report that was generated. See the CLSCrashReport protocol for method details. + * This method is called after crashlyticsDidDetectCrashDuringPreviousExecution. + * + **/ +- (void)crashlytics:(Crashlytics *)crashlytics didDetectCrashDuringPreviousExecution:(id )crash; + @end diff --git a/Crashlytics/Crashlytics.framework/Versions/A/Resources/Info.plist b/Crashlytics/Crashlytics.framework/Versions/A/Resources/Info.plist index 975d24520e2b4675a0db8f6ec708c2cdf666a034..e7e6418b5fd61e173308a72bd05dce1b52ba5c0a 100644 GIT binary patch delta 56 zcmey)`jd6T2S!H2$sZZT*+LEVjPwjA^Du3aKN@L1k%3{i6Dq*Ue Ke3MC@u@(TH4h@6= diff --git a/Crashlytics/Crashlytics.framework/run b/Crashlytics/Crashlytics.framework/run index 018498b256831b8c84f182790d8d67ff39c11f10..0d4ea17676703835736fa8a4b8779eb6b32c3c0a 100755 GIT binary patch delta 8493 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 -#import - -#define MAX_DATABASE_SIZE 500000 // The maximum allowed disk size of the primary database file at open, in bytes -#define VACUUM_THRESHOLD 0.8 // The database is vacuumed after its size exceeds this proportion of the maximum. - -@interface LocalyticsDatabase : NSObject { - sqlite3 *_databaseConnection; -} - -+ (LocalyticsDatabase *)sharedLocalyticsDatabase; - -- (NSUInteger)databaseSize; -- (int)eventCount; -- (NSTimeInterval)createdTimestamp; - -- (BOOL)beginTransaction:(NSString *)name; -- (BOOL)releaseTransaction:(NSString *)name; -- (BOOL)rollbackTransaction:(NSString *)name; - -- (BOOL)incrementLastUploadNumber:(int *)uploadNumber; -- (BOOL)incrementLastSessionNumber:(int *)sessionNumber; - -- (BOOL)addEventWithBlobString:(NSString *)blob; -- (BOOL)addCloseEventWithBlobString:(NSString *)blob; -- (BOOL)addFlowEventWithBlobString:(NSString *)blob; -- (BOOL)removeLastCloseAndFlowEvents; - -- (BOOL)addHeaderWithSequenceNumber:(int)number blobString:(NSString *)blob rowId:(sqlite3_int64 *)insertedRowId; -- (int)unstagedEventCount; -- (BOOL)stageEventsForUpload:(sqlite3_int64)headerId; -- (BOOL)updateAppKey:(NSString *)appKey; -- (NSString *)uploadBlobString; -- (BOOL)deleteUploadedData; -- (BOOL)resetAnalyticsData; -- (BOOL)vacuumIfRequired; - -- (NSTimeInterval)lastSessionStartTimestamp; -- (BOOL)setLastsessionStartTimestamp:(NSTimeInterval)timestamp; - -- (BOOL)isOptedOut; -- (BOOL)setOptedOut:(BOOL)optOut; -- (NSString *)installId; -- (NSString *)appKey; // Most recent app key-- may not be that used to open the session. - -- (NSString *)customDimension:(int)dimension; -- (BOOL)setCustomDimension:(int)dimension value:(NSString *)value; - -@end +// +// LocalyticsDatabase.h +// Copyright (C) 2012 Char Software Inc., DBA Localytics +// +// This code is provided under the Localytics Modified BSD License. +// A copy of this license has been distributed in a file called LICENSE +// with this source code. +// +// Please visit www.localytics.com for more information. + +#import +#import + +#define MAX_DATABASE_SIZE 500000 // The maximum allowed disk size of the primary database file at open, in bytes +#define VACUUM_THRESHOLD 0.8 // The database is vacuumed after its size exceeds this proportion of the maximum. + +@interface LocalyticsDatabase : NSObject { + sqlite3 *_databaseConnection; +} + ++ (LocalyticsDatabase *)sharedLocalyticsDatabase; + +- (NSUInteger)databaseSize; +- (int)eventCount; +- (NSTimeInterval)createdTimestamp; + +- (BOOL)beginTransaction:(NSString *)name; +- (BOOL)releaseTransaction:(NSString *)name; +- (BOOL)rollbackTransaction:(NSString *)name; + +- (BOOL)incrementLastUploadNumber:(int *)uploadNumber; +- (BOOL)incrementLastSessionNumber:(int *)sessionNumber; + +- (BOOL)addEventWithBlobString:(NSString *)blob; +- (BOOL)addCloseEventWithBlobString:(NSString *)blob; +- (BOOL)queueCloseEventWithBlobString:(NSString *)blob; +- (NSString *)dequeueCloseEventBlobString; +- (BOOL)addFlowEventWithBlobString:(NSString *)blob; +- (BOOL)removeLastCloseAndFlowEvents; + +- (BOOL)addHeaderWithSequenceNumber:(int)number blobString:(NSString *)blob rowId:(sqlite3_int64 *)insertedRowId; +- (int)unstagedEventCount; +- (BOOL)stageEventsForUpload:(sqlite3_int64)headerId; +- (BOOL)updateAppKey:(NSString *)appKey; +- (NSString *)uploadBlobString; +- (BOOL)deleteUploadedData; +- (BOOL)resetAnalyticsData; +- (BOOL)vacuumIfRequired; + +- (NSTimeInterval)lastSessionStartTimestamp; +- (BOOL)setLastsessionStartTimestamp:(NSTimeInterval)timestamp; + +- (BOOL)isOptedOut; +- (BOOL)setOptedOut:(BOOL)optOut; +- (NSString *)installId; +- (NSString *)appKey; // Most recent app key-- may not be that used to open the session. + +- (NSString *)customDimension:(int)dimension; +- (BOOL)setCustomDimension:(int)dimension value:(NSString *)value; + +- (NSString *)customerId; +- (BOOL)setCustomerId:(NSString *)newCustomerId; + +- (NSInteger)safeIntegerValueFromDictionary:(NSDictionary *)dict forKey:(NSString *)key; +- (NSString *)safeStringValueFromDictionary:(NSDictionary *)dict forKey:(NSString *)key; +- (NSDictionary *)safeDictionaryFromDictionary:(NSDictionary *)dict forKey:(NSString *)key; +- (NSArray *)safeListFromDictionary:(NSDictionary *)dict forKey:(NSString *)key; + + +@end diff --git a/Localytics/LocalyticsDatabase.m b/Localytics/LocalyticsDatabase.m index 3b3700fe..2dc9216c 100644 --- a/Localytics/LocalyticsDatabase.m +++ b/Localytics/LocalyticsDatabase.m @@ -1,743 +1,1037 @@ -// -// LocalyticsDatabase.m -// LocalyticsDemo -// -// Created by jkaufman on 5/26/11. -// Copyright 2011 Localytics. All rights reserved. -// - -#import "LocalyticsDatabase.h" - -#define LOCALYTICS_DIR @".localytics" // Name for the directory in which Localytics database is stored -#define LOCALYTICS_DB @"localytics" // File name for the database (without extension) -#define BUSY_TIMEOUT 30 // Maximum time SQlite will busy-wait for the database to unlock before returning SQLITE_BUSY - -@interface LocalyticsDatabase () - - (int)schemaVersion; - - (void)createSchema; - - (void)upgradeToSchemaV2; - - (void)upgradeToSchemaV3; - - (void)moveDbToCaches; - - (NSString *)randomUUID; -@end - -@implementation LocalyticsDatabase - -// The singleton database object. -static LocalyticsDatabase *_sharedLocalyticsDatabase = nil; - -+ (NSString *)localyticsDirectoryPath { - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); - return [[paths objectAtIndex:0] stringByAppendingPathComponent:LOCALYTICS_DIR]; -} - -+ (NSString *)localyticsDatabasePath { - NSString *path = [[LocalyticsDatabase localyticsDirectoryPath] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.sqlite", LOCALYTICS_DB]]; - return path; -} - -#pragma mark Singleton Class -+ (LocalyticsDatabase *)sharedLocalyticsDatabase { - @synchronized(self) { - if (_sharedLocalyticsDatabase == nil) { - _sharedLocalyticsDatabase = [[self alloc] init]; - } - } - return _sharedLocalyticsDatabase; -} - -- (LocalyticsDatabase *)init { - if((self = [super init])) { - - // Mover any data that a previous library may have left in the documents directory - [self moveDbToCaches]; - - // Create directory structure for Localytics. - NSString *directoryPath = [LocalyticsDatabase localyticsDirectoryPath]; - if (![[NSFileManager defaultManager] fileExistsAtPath:directoryPath]) { - [[NSFileManager defaultManager] createDirectoryAtPath:directoryPath withIntermediateDirectories:YES attributes:nil error:nil]; - } - - // Attempt to open database. It will be created if it does not exist, already. - NSString *dbPath = [LocalyticsDatabase localyticsDatabasePath]; - int code = sqlite3_open([dbPath UTF8String], &_databaseConnection); - - // If we were unable to open the database, it is likely corrupted. Clobber it and move on. - if (code != SQLITE_OK) { - [[NSFileManager defaultManager] removeItemAtPath:dbPath error:nil]; - code = sqlite3_open([dbPath UTF8String], &_databaseConnection); - } - - // Check db connection, creating schema if necessary. - if (code == SQLITE_OK) { - sqlite3_busy_timeout(_databaseConnection, BUSY_TIMEOUT); // Defaults to 0, otherwise. - if ([self schemaVersion] == 0) { - [self createSchema]; - } - } - - // Perform any Migrations if necessary - if ([self schemaVersion] < 2) { - [self upgradeToSchemaV2]; - } - if ([self schemaVersion] < 3) { - [self upgradeToSchemaV3]; - } - } - - return self; -} - -#pragma mark - Database - -- (BOOL)beginTransaction:(NSString *)name { - const char *sql = [[NSString stringWithFormat:@"SAVEPOINT %@", name] cStringUsingEncoding:NSUTF8StringEncoding]; - int code = sqlite3_exec(_databaseConnection, sql, NULL, NULL, NULL); - return code == SQLITE_OK; -} - -- (BOOL)releaseTransaction:(NSString *)name { - const char *sql = [[NSString stringWithFormat:@"RELEASE SAVEPOINT %@", name] cStringUsingEncoding:NSUTF8StringEncoding]; - int code = sqlite3_exec(_databaseConnection, sql, NULL, NULL, NULL); - return code == SQLITE_OK; -} - -- (BOOL)rollbackTransaction:(NSString *)name { - const char *sql = [[NSString stringWithFormat:@"ROLLBACK SAVEPOINT %@", name] cStringUsingEncoding:NSUTF8StringEncoding]; - int code = sqlite3_exec(_databaseConnection, sql, NULL, NULL, NULL); - return code == SQLITE_OK; -} - -- (int)schemaVersion { - int version = 0; - const char *sql = "SELECT MAX(schema_version) FROM localytics_info"; - sqlite3_stmt *selectSchemaVersion; - if(sqlite3_prepare_v2(_databaseConnection, sql, -1, &selectSchemaVersion, NULL) == SQLITE_OK) { - if(sqlite3_step(selectSchemaVersion) == SQLITE_ROW) { - version = sqlite3_column_int(selectSchemaVersion, 0); - } - } - sqlite3_finalize(selectSchemaVersion); - return version; -} - -- (NSString *)installId { - NSString *installId = nil; - - sqlite3_stmt *selectInstallId; - sqlite3_prepare_v2(_databaseConnection, "SELECT install_id FROM localytics_info", -1, &selectInstallId, NULL); - int code = sqlite3_step(selectInstallId); - if (code == SQLITE_ROW && sqlite3_column_text(selectInstallId, 0)) { - installId = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectInstallId, 0)]; - } - sqlite3_finalize(selectInstallId); - - return installId; -} - -- (NSString *)appKey { - NSString *appKey = nil; - - sqlite3_stmt *selectAppKey; - sqlite3_prepare_v2(_databaseConnection, "SELECT app_key FROM localytics_info", -1, &selectAppKey, NULL); - int code = sqlite3_step(selectAppKey); - if (code == SQLITE_ROW && sqlite3_column_text(selectAppKey, 0)) { - appKey = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectAppKey, 0)]; - } - sqlite3_finalize(selectAppKey); - - return appKey; -} - -// Due to the new iOS storage guidelines it is necessary to move the database out of the documents directory -// and into the /library/caches directory -- (void)moveDbToCaches { - NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *localyticsDocumentsDirectory = [[documentPaths objectAtIndex:0] stringByAppendingPathComponent:LOCALYTICS_DIR]; - NSArray *cachesPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); - NSString *localyticsCachesDirectory = [[cachesPaths objectAtIndex:0] stringByAppendingPathComponent:LOCALYTICS_DIR]; - - // If the old directory doesn't exist, there is nothing else to do here - if([[NSFileManager defaultManager] fileExistsAtPath:localyticsDocumentsDirectory] == NO) - { - return; - } - - // Try to move the directory - if(NO == [[NSFileManager defaultManager] moveItemAtPath:localyticsDocumentsDirectory - toPath:localyticsCachesDirectory - error:nil]) - { - // If the move failed try and, delete the old directory - [ [NSFileManager defaultManager] removeItemAtPath:localyticsDocumentsDirectory error:nil]; - } -} - -- (void)createSchema { - int code = SQLITE_OK; - - // Execute schema creation within a single transaction. - code = sqlite3_exec(_databaseConnection, "BEGIN", NULL, NULL, NULL); - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, - "CREATE TABLE upload_headers (" - "sequence_number INTEGER PRIMARY KEY, " - "blob_string TEXT)", - NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, - "CREATE TABLE events (" - "event_id INTEGER PRIMARY KEY AUTOINCREMENT, " // In case foreign key constraints are reintroduced. - "upload_header INTEGER, " - "blob_string TEXT NOT NULL)", - NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, - "CREATE TABLE localytics_info (" - "schema_version INTEGER PRIMARY KEY, " - "last_upload_number INTEGER, " - "last_session_number INTEGER, " - "opt_out BOOLEAN, " - "last_close_event INTEGER, " - "last_flow_event INTEGER, " - "last_session_start REAL, " - "app_key CHAR(64), " - "custom_d0 CHAR(64), " - "custom_d1 CHAR(64), " - "custom_d2 CHAR(64), " - "custom_d3 CHAR(64) " - ")", - NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, - "INSERT INTO localytics_info (schema_version, last_upload_number, last_session_number, opt_out) " - "VALUES (3, 0, 0, 0)", NULL, NULL, NULL); - } - - // Commit transaction. - if (code == SQLITE_OK || code == SQLITE_DONE) { - sqlite3_exec(_databaseConnection, "COMMIT", NULL, NULL, NULL); - } else { - sqlite3_exec(_databaseConnection, "ROLLBACK", NULL, NULL, NULL); - } -} - -// V2 adds a unique identifier for each installation -// This identifier has been moved to user preferences so the database an live in the caches directory -// Also adds storage for custom dimensions -- (void)upgradeToSchemaV2 { - int code = SQLITE_OK; - - code = sqlite3_exec(_databaseConnection, "BEGIN", NULL, NULL, NULL); - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, - "ALTER TABLE localytics_info ADD install_id CHAR(40)", - NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, - "ALTER TABLE localytics_info ADD custom_d0 CHAR(64)", - NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, - "ALTER TABLE localytics_info ADD custom_d1 CHAR(64)", - NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, - "ALTER TABLE localytics_info ADD custom_d2 CHAR(64)", - NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - sqlite3_exec(_databaseConnection, - "ALTER TABLE localytics_info ADD custom_d3 CHAR(64)", - NULL, NULL, NULL); - } - - // Attempt to set schema version and install_id regardless of the result code following the ALTER statements above. - // This is necessary because a previous version of the library performed the migration without setting these values. - // The transaction will succeed even if the individual statements fail with errors (eg. "duplicate column name"). - sqlite3_stmt *updateLocalyticsInfo; - sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info set install_id = ?, schema_version = 2 ", -1, &updateLocalyticsInfo, NULL); - sqlite3_bind_text (updateLocalyticsInfo, 1, [[self randomUUID] UTF8String], -1, SQLITE_TRANSIENT); - code = sqlite3_step(updateLocalyticsInfo); - sqlite3_finalize(updateLocalyticsInfo); - - // Commit transaction. - if (code == SQLITE_OK || code == SQLITE_DONE) { - sqlite3_exec(_databaseConnection, "COMMIT", NULL, NULL, NULL); - } else { - sqlite3_exec(_databaseConnection, "ROLLBACK", NULL, NULL, NULL); - } -} - -// V3 adds a field for the last app key and patches a V2 migration issue. -- (void)upgradeToSchemaV3 { - sqlite3_exec(_databaseConnection, - "ALTER TABLE localytics_info ADD app_key CHAR(64)", - NULL, NULL, NULL); -} - -- (NSUInteger)databaseSize { - NSUInteger size = 0; - NSDictionary *fileAttributes = [[NSFileManager defaultManager] - attributesOfItemAtPath:[LocalyticsDatabase localyticsDatabasePath] - error:nil]; - size = [fileAttributes fileSize]; - return size; -} - -- (int) eventCount { - int count = 0; - const char *sql = "SELECT count(*) FROM events"; - sqlite3_stmt *selectEventCount; - - if(sqlite3_prepare_v2(_databaseConnection, sql, -1, &selectEventCount, NULL) == SQLITE_OK) - { - if(sqlite3_step(selectEventCount) == SQLITE_ROW) { - count = sqlite3_column_int(selectEventCount, 0); - } - } - sqlite3_finalize(selectEventCount); - - return count; -} - -- (NSTimeInterval)createdTimestamp { - NSTimeInterval timestamp = 0; - NSDictionary *fileAttributes = [[NSFileManager defaultManager] - attributesOfItemAtPath:[LocalyticsDatabase localyticsDatabasePath] - error:nil]; - timestamp = [[fileAttributes fileCreationDate] timeIntervalSince1970]; - return timestamp; -} - -- (NSTimeInterval)lastSessionStartTimestamp { - - NSTimeInterval lastSessionStart = 0; - - sqlite3_stmt *selectLastSessionStart; - sqlite3_prepare_v2(_databaseConnection, "SELECT last_session_start FROM localytics_info", -1, &selectLastSessionStart, NULL); - int code = sqlite3_step(selectLastSessionStart); - if (code == SQLITE_ROW) { - lastSessionStart = sqlite3_column_double(selectLastSessionStart, 0) == 1; - } - sqlite3_finalize(selectLastSessionStart); - - return lastSessionStart; -} - -- (BOOL)setLastsessionStartTimestamp:(NSTimeInterval)timestamp { - sqlite3_stmt *updateLastSessionStart; - sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info SET last_session_start = ?", -1, &updateLastSessionStart, NULL); - sqlite3_bind_double(updateLastSessionStart, 1, timestamp); - int code = sqlite3_step(updateLastSessionStart); - sqlite3_finalize(updateLastSessionStart); - - return code == SQLITE_DONE; -} - -- (BOOL)isOptedOut { - BOOL optedOut = NO; - - sqlite3_stmt *selectOptOut; - sqlite3_prepare_v2(_databaseConnection, "SELECT opt_out FROM localytics_info", -1, &selectOptOut, NULL); - int code = sqlite3_step(selectOptOut); - if (code == SQLITE_ROW) { - optedOut = sqlite3_column_int(selectOptOut, 0) == 1; - } - sqlite3_finalize(selectOptOut); - - return optedOut; -} - -- (BOOL)setOptedOut:(BOOL)optOut { - sqlite3_stmt *updateOptedOut; - sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info SET opt_out = ?", -1, &updateOptedOut, NULL); - sqlite3_bind_int(updateOptedOut, 1, optOut); - int code = sqlite3_step(updateOptedOut); - sqlite3_finalize(updateOptedOut); - - return code == SQLITE_OK; -} - -- (NSString *)customDimension:(int)dimension { - if(dimension < 0 || dimension > 3) { - return nil; - } - - NSString *value = nil; - NSString *query = [NSString stringWithFormat:@"select custom_d%i from localytics_info", dimension]; - - sqlite3_stmt *selectCustomDim; - sqlite3_prepare_v2(_databaseConnection, [query UTF8String], -1, &selectCustomDim, NULL); - int code = sqlite3_step(selectCustomDim); - if (code == SQLITE_ROW && sqlite3_column_text(selectCustomDim, 0)) { - value = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectCustomDim, 0)]; - } - sqlite3_finalize(selectCustomDim); - - return value; -} - -- (BOOL)setCustomDimension:(int)dimension value:(NSString *)value { - if(dimension < 0 || dimension > 3) { - return false; - } - - NSString *query = [NSString stringWithFormat:@"update localytics_info SET custom_d%i = %@", - dimension, - (value == nil) ? @"null" : [NSString stringWithFormat:@"\"%@\"", value]]; - - int code = sqlite3_exec(_databaseConnection, [query UTF8String], NULL, NULL, NULL); - - return code == SQLITE_OK; -} - -- (BOOL)incrementLastUploadNumber:(int *)uploadNumber { - NSString *t = @"increment_upload_number"; - int code = SQLITE_OK; - - code = [self beginTransaction:t] ? SQLITE_OK : SQLITE_ERROR; - - if(code == SQLITE_OK) { - // Increment value - code = sqlite3_exec(_databaseConnection, - "UPDATE localytics_info " - "SET last_upload_number = (last_upload_number + 1)", - NULL, NULL, NULL); - } - - if(code == SQLITE_OK) { - // Retrieve new value - sqlite3_stmt *selectUploadNumber; - sqlite3_prepare_v2(_databaseConnection, - "SELECT last_upload_number FROM localytics_info", - -1, &selectUploadNumber, NULL); - code = sqlite3_step(selectUploadNumber); - if (code == SQLITE_ROW) { - *uploadNumber = sqlite3_column_int(selectUploadNumber, 0); - } - sqlite3_finalize(selectUploadNumber); - } - - if(code == SQLITE_ROW) { - [self releaseTransaction:t]; - } else { - [self rollbackTransaction:t]; - } - - return code == SQLITE_ROW; -} - -- (BOOL)incrementLastSessionNumber:(int *)sessionNumber { - NSString *t = @"increment_session_number"; - int code = [self beginTransaction:t] ? SQLITE_OK : SQLITE_ERROR; - - if(code == SQLITE_OK) { - // Increment value - code = sqlite3_exec(_databaseConnection, - "UPDATE localytics_info " - "SET last_session_number = (last_session_number + 1)", - NULL, NULL, NULL); - } - - if(code == SQLITE_OK) { - // Retrieve new value - sqlite3_stmt *selectSessionNumber; - sqlite3_prepare_v2(_databaseConnection, - "SELECT last_session_number FROM localytics_info", - -1, &selectSessionNumber, NULL); - code = sqlite3_step(selectSessionNumber); - if (code == SQLITE_ROW && sessionNumber != NULL) { - *sessionNumber = sqlite3_column_int(selectSessionNumber, 0); - } - sqlite3_finalize(selectSessionNumber); - } - - if(code == SQLITE_ROW) { - [self releaseTransaction:t]; - } else { - [self rollbackTransaction:t]; - } - - return code == SQLITE_ROW; -} - -- (BOOL)addEventWithBlobString:(NSString *)blob { - - int code = SQLITE_OK; - sqlite3_stmt *insertEvent; - sqlite3_prepare_v2(_databaseConnection, "INSERT INTO events (blob_string) VALUES (?)", -1, &insertEvent, NULL); - sqlite3_bind_text(insertEvent, 1, [blob UTF8String], -1, SQLITE_TRANSIENT); - code = sqlite3_step(insertEvent); - sqlite3_finalize(insertEvent); - - return code == SQLITE_DONE; -} - -- (BOOL)addCloseEventWithBlobString:(NSString *)blob { - NSString *t = @"add_close_event"; - BOOL success = [self beginTransaction:t]; - - // Add close event. - if (success) { - success = [self addEventWithBlobString:blob]; - } - - // Record row id to localytics_info so that it can be removed if the session resumes. - if (success) { - sqlite3_stmt *updateCloseEvent; - sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info SET last_close_event = (SELECT event_id FROM events WHERE rowid = ?)", -1, &updateCloseEvent, NULL); - sqlite3_int64 lastRow = sqlite3_last_insert_rowid(_databaseConnection); - sqlite3_bind_int64(updateCloseEvent, 1, lastRow); - int code = sqlite3_step(updateCloseEvent); - sqlite3_finalize(updateCloseEvent); - success = code == SQLITE_DONE; - } - - if (success) { - [self releaseTransaction:t]; - } else { - [self rollbackTransaction:t]; - } - return success; -} - -- (BOOL)addFlowEventWithBlobString:(NSString *)blob { - NSString *t = @"add_flow_event"; - BOOL success = [self beginTransaction:t]; - - // Add flow event. - if (success) { - success = [self addEventWithBlobString:blob]; - } - - // Record row id to localytics_info so that it can be removed if the session resumes. - if (success) { - sqlite3_stmt *updateFlowEvent; - sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info SET last_flow_event = (SELECT event_id FROM events WHERE rowid = ?)", -1, &updateFlowEvent, NULL); - sqlite3_int64 lastRow = sqlite3_last_insert_rowid(_databaseConnection); - sqlite3_bind_int64(updateFlowEvent, 1, lastRow); - int code = sqlite3_step(updateFlowEvent); - sqlite3_finalize(updateFlowEvent); - success = code == SQLITE_DONE; - } - - if (success) { - [self releaseTransaction:t]; - } else { - [self rollbackTransaction:t]; - } - return success; -} - -- (BOOL)removeLastCloseAndFlowEvents { - // Attempt to remove the last recorded close event. - // Fail quietly if none was saved or it was previously removed. - int code = sqlite3_exec(_databaseConnection, "DELETE FROM events WHERE event_id = (SELECT last_close_event FROM localytics_info) OR event_id = (SELECT last_flow_event FROM localytics_info)", NULL, NULL, NULL); - - return code == SQLITE_OK; -} - -- (BOOL)addHeaderWithSequenceNumber:(int)number blobString:(NSString *)blob rowId:(sqlite3_int64 *)insertedRowId { - sqlite3_stmt *insertHeader; - sqlite3_prepare_v2(_databaseConnection, "INSERT INTO upload_headers (sequence_number, blob_string) VALUES (?, ?)", -1, &insertHeader, NULL); - sqlite3_bind_int(insertHeader, 1, number); - sqlite3_bind_text(insertHeader, 2, [blob UTF8String], -1, SQLITE_TRANSIENT); - int code = sqlite3_step(insertHeader); - sqlite3_finalize(insertHeader); - - if (code == SQLITE_DONE && insertedRowId != NULL) { - *insertedRowId = sqlite3_last_insert_rowid(_databaseConnection); - } - - return code == SQLITE_DONE; -} - -- (int)unstagedEventCount { - int rowCount = 0; - sqlite3_stmt *selectEventCount; - sqlite3_prepare_v2(_databaseConnection, "SELECT COUNT(*) FROM events WHERE UPLOAD_HEADER IS NULL", -1, &selectEventCount, NULL); - int code = sqlite3_step(selectEventCount); - if (code == SQLITE_ROW) { - rowCount = sqlite3_column_int(selectEventCount, 0); - } - sqlite3_finalize(selectEventCount); - - return rowCount; -} - -- (BOOL)stageEventsForUpload:(sqlite3_int64)headerId { - - // Associate all outstanding events with the given upload header ID. - NSString *stageEvents = [NSString stringWithFormat:@"UPDATE events SET upload_header = ? WHERE upload_header IS NULL"]; - sqlite3_stmt *updateEvents; - sqlite3_prepare_v2(_databaseConnection, [stageEvents UTF8String], -1, &updateEvents, NULL); - sqlite3_bind_int(updateEvents, 1, headerId); - int code = sqlite3_step(updateEvents); - sqlite3_finalize(updateEvents); - BOOL success = (code == SQLITE_DONE); - - return success; -} - -- (BOOL)updateAppKey:(NSString *)appKey { - sqlite3_stmt *updateAppKey; - sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info set app_key = ?", -1, &updateAppKey, NULL); - sqlite3_bind_text (updateAppKey, 1, [appKey UTF8String], -1, SQLITE_TRANSIENT); - int code = sqlite3_step(updateAppKey); - sqlite3_finalize(updateAppKey); - BOOL success = (code == SQLITE_DONE); - - return success; -} - -- (NSString *)uploadBlobString { - - // Retrieve the blob strings of each upload header and its child events, in order. - const char *sql = "SELECT * FROM ( " - " SELECT h.blob_string AS 'blob', h.sequence_number as 'seq', 0 FROM upload_headers h" - " UNION ALL " - " SELECT e.blob_string AS 'blob', e.upload_header as 'seq', 1 FROM events e" - ") " - "ORDER BY 2, 3"; - sqlite3_stmt *selectBlobs; - sqlite3_prepare_v2(_databaseConnection, sql, -1, &selectBlobs, NULL); - NSMutableString *uploadBlobString = [NSMutableString string]; - while (sqlite3_step(selectBlobs) == SQLITE_ROW) { - const char *blob = (const char *)sqlite3_column_text(selectBlobs, 0); - if (blob != NULL) { - NSString *blobString = [[NSString alloc] initWithCString:blob encoding:NSUTF8StringEncoding]; - [uploadBlobString appendString:blobString]; - [blobString release]; - } - } - sqlite3_finalize(selectBlobs); - - return [[uploadBlobString copy] autorelease]; -} - -- (BOOL)deleteUploadedData { - // Delete all headers and staged events. - NSString *t = @"delete_upload_data"; - int code = [self beginTransaction:t] ? SQLITE_OK : SQLITE_ERROR; - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, "DELETE FROM events WHERE upload_header IS NOT NULL", NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, "DELETE FROM upload_headers", NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - [self releaseTransaction:t]; - } else { - [self rollbackTransaction:t]; - } - - return code == SQLITE_OK; -} - -- (BOOL)resetAnalyticsData { - // Delete or zero all analytics data. - // Reset: headers, events, session number, upload number, last session start, last close event, and last flow event. - // Unaffected: schema version, opt out status, install ID (deprecated), and app key. - - NSString *t = @"reset_analytics_data"; - int code = [self beginTransaction:t] ? SQLITE_OK : SQLITE_ERROR; - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, "DELETE FROM events", NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection, "DELETE FROM upload_headers", NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - code = sqlite3_exec(_databaseConnection,"UPDATE localytics_info SET last_session_number = 0, last_upload_number = 0," - "last_close_event = null, last_flow_event = null, last_session_start = null, " - "custom_d0 = null, custom_d1 = null, custom_d2 = null, custom_d3 = null", - NULL, NULL, NULL); - } - - if (code == SQLITE_OK) { - [self releaseTransaction:t]; - } else { - [self rollbackTransaction:t]; - } - - return code == SQLITE_OK; -} - -- (BOOL)vacuumIfRequired { - int code = SQLITE_OK; - if ([self databaseSize] > MAX_DATABASE_SIZE * VACUUM_THRESHOLD) { - code = sqlite3_exec(_databaseConnection, "VACUUM", NULL, NULL, NULL); - } - - return code == SQLITE_OK; -} - -- (NSString *)randomUUID { - CFUUIDRef theUUID = CFUUIDCreate(NULL); - CFStringRef stringUUID = CFUUIDCreateString(NULL, theUUID); - CFRelease(theUUID); - return [(NSString *)stringUUID autorelease]; -} - -#pragma mark - Lifecycle - -+ (id)allocWithZone:(NSZone *)zone { - @synchronized(self) { - if (_sharedLocalyticsDatabase == nil) { - _sharedLocalyticsDatabase = [super allocWithZone:zone]; - return _sharedLocalyticsDatabase; - } - } - // returns nil on subsequent allocations - return nil; -} - -- (id)copyWithZone:(NSZone *)zone { - return self; -} - -- (id)retain { - return self; -} - -- (unsigned)retainCount { - // maximum value of an unsigned int - prevents additional retains for the class - return UINT_MAX; -} - -- (oneway void)release { - // ignore release commands -} - -- (id)autorelease { - return self; -} - -- (void)dealloc { - sqlite3_close(_databaseConnection); - [super dealloc]; -} - -@end +// +// LocalyticsDatabase.m +// Copyright (C) 2012 Char Software Inc., DBA Localytics +// +// This code is provided under the Localytics Modified BSD License. +// A copy of this license has been distributed in a file called LICENSE +// with this source code. +// +// Please visit www.localytics.com for more information. + +#import "LocalyticsDatabase.h" + +#define LOCALYTICS_DIR @".localytics" // Name for the directory in which Localytics database is stored +#define LOCALYTICS_DB @"localytics" // File name for the database (without extension) +#define BUSY_TIMEOUT 30 // Maximum time SQlite will busy-wait for the database to unlock before returning SQLITE_BUSY + +@interface LocalyticsDatabase () + - (int)schemaVersion; + - (void)createSchema; + - (void)upgradeToSchemaV2; + - (void)upgradeToSchemaV3; + - (void)upgradeToSchemaV4; + - (void)upgradeToSchemaV5; + - (void)upgradeToSchemaV6; +- (void)upgradeToSchemaV7; + - (void)moveDbToCaches; + - (NSString *)randomUUID; +@end + +@implementation LocalyticsDatabase + +// The singleton database object. +static LocalyticsDatabase *_sharedLocalyticsDatabase = nil; + ++ (NSString *)localyticsDirectoryPath { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); + return [[paths objectAtIndex:0] stringByAppendingPathComponent:LOCALYTICS_DIR]; +} + ++ (NSString *)localyticsDatabasePath { + NSString *path = [[LocalyticsDatabase localyticsDirectoryPath] stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.sqlite", LOCALYTICS_DB]]; + return path; +} + +#pragma mark Singleton Class ++ (LocalyticsDatabase *)sharedLocalyticsDatabase { + @synchronized(self) { + if (_sharedLocalyticsDatabase == nil) { + _sharedLocalyticsDatabase = [[self alloc] init]; + } + } + return _sharedLocalyticsDatabase; +} + +- (LocalyticsDatabase *)init { + if((self = [super init])) { + + // Mover any data that a previous library may have left in the documents directory + [self moveDbToCaches]; + + // Create directory structure for Localytics. + NSString *directoryPath = [LocalyticsDatabase localyticsDirectoryPath]; + if (![[NSFileManager defaultManager] fileExistsAtPath:directoryPath]) { + [[NSFileManager defaultManager] createDirectoryAtPath:directoryPath withIntermediateDirectories:YES attributes:nil error:nil]; + } + + // Attempt to open database. It will be created if it does not exist, already. + NSString *dbPath = [LocalyticsDatabase localyticsDatabasePath]; + int code = sqlite3_open([dbPath UTF8String], &_databaseConnection); + + // If we were unable to open the database, it is likely corrupted. Clobber it and move on. + if (code != SQLITE_OK) { + [[NSFileManager defaultManager] removeItemAtPath:dbPath error:nil]; + code = sqlite3_open([dbPath UTF8String], &_databaseConnection); + } + + // Enable foreign key constraints. + if (code == SQLITE_OK) { + const char *sql = [@"PRAGMA foreign_keys = ON;" cStringUsingEncoding:NSUTF8StringEncoding]; + code = sqlite3_exec(_databaseConnection, sql, NULL, NULL, NULL); + } + + // Check db connection, creating schema if necessary. + if (code == SQLITE_OK) { + sqlite3_busy_timeout(_databaseConnection, BUSY_TIMEOUT); // Defaults to 0, otherwise. + if ([self schemaVersion] == 0) { + [self createSchema]; + } + } + + // Perform any Migrations if necessary + if ([self schemaVersion] < 2) { + [self upgradeToSchemaV2]; + } + if ([self schemaVersion] < 3) { + [self upgradeToSchemaV3]; + } + if ([self schemaVersion] < 4) { + [self upgradeToSchemaV4]; + } + if ([self schemaVersion] < 5) { + [self upgradeToSchemaV5]; + } + if ([self schemaVersion] < 6) { + [self upgradeToSchemaV6]; + } + if ([self schemaVersion] < 7) { + [self upgradeToSchemaV7]; + } + } + + return self; +} + +#pragma mark - Database + +- (BOOL)beginTransaction:(NSString *)name { + const char *sql = [[NSString stringWithFormat:@"SAVEPOINT %@", name] cStringUsingEncoding:NSUTF8StringEncoding]; + int code = sqlite3_exec(_databaseConnection, sql, NULL, NULL, NULL); + return code == SQLITE_OK; +} + +- (BOOL)releaseTransaction:(NSString *)name { + const char *sql = [[NSString stringWithFormat:@"RELEASE SAVEPOINT %@", name] cStringUsingEncoding:NSUTF8StringEncoding]; + int code = sqlite3_exec(_databaseConnection, sql, NULL, NULL, NULL); + return code == SQLITE_OK; +} + +- (BOOL)rollbackTransaction:(NSString *)name { + const char *sql = [[NSString stringWithFormat:@"ROLLBACK SAVEPOINT %@", name] cStringUsingEncoding:NSUTF8StringEncoding]; + int code = sqlite3_exec(_databaseConnection, sql, NULL, NULL, NULL); + return code == SQLITE_OK; +} + +- (int)schemaVersion { + int version = 0; + const char *sql = "SELECT MAX(schema_version) FROM localytics_info"; + sqlite3_stmt *selectSchemaVersion; + if(sqlite3_prepare_v2(_databaseConnection, sql, -1, &selectSchemaVersion, NULL) == SQLITE_OK) { + if(sqlite3_step(selectSchemaVersion) == SQLITE_ROW) { + version = sqlite3_column_int(selectSchemaVersion, 0); + } + } + sqlite3_finalize(selectSchemaVersion); + return version; +} + +- (NSString *)installId { + NSString *installId = nil; + + sqlite3_stmt *selectInstallId; + sqlite3_prepare_v2(_databaseConnection, "SELECT install_id FROM localytics_info", -1, &selectInstallId, NULL); + int code = sqlite3_step(selectInstallId); + if (code == SQLITE_ROW && sqlite3_column_text(selectInstallId, 0)) { + installId = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectInstallId, 0)]; + } + sqlite3_finalize(selectInstallId); + + return installId; +} + +- (NSString *)appKey { + NSString *appKey = nil; + + sqlite3_stmt *selectAppKey; + sqlite3_prepare_v2(_databaseConnection, "SELECT app_key FROM localytics_info", -1, &selectAppKey, NULL); + int code = sqlite3_step(selectAppKey); + if (code == SQLITE_ROW && sqlite3_column_text(selectAppKey, 0)) { + appKey = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectAppKey, 0)]; + } + sqlite3_finalize(selectAppKey); + + return appKey; +} + +// Due to the new iOS storage guidelines it is necessary to move the database out of the documents directory +// and into the /library/caches directory +- (void)moveDbToCaches { + NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *localyticsDocumentsDirectory = [[documentPaths objectAtIndex:0] stringByAppendingPathComponent:LOCALYTICS_DIR]; + NSArray *cachesPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); + NSString *localyticsCachesDirectory = [[cachesPaths objectAtIndex:0] stringByAppendingPathComponent:LOCALYTICS_DIR]; + + // If the old directory doesn't exist, there is nothing else to do here + if([[NSFileManager defaultManager] fileExistsAtPath:localyticsDocumentsDirectory] == NO) + { + return; + } + + // Try to move the directory + if(NO == [[NSFileManager defaultManager] moveItemAtPath:localyticsDocumentsDirectory + toPath:localyticsCachesDirectory + error:nil]) + { + // If the move failed try and, delete the old directory + [ [NSFileManager defaultManager] removeItemAtPath:localyticsDocumentsDirectory error:nil]; + } +} + +- (void)createSchema { + int code = SQLITE_OK; + + // Execute schema creation within a single transaction. + code = sqlite3_exec(_databaseConnection, "BEGIN", NULL, NULL, NULL); + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "CREATE TABLE upload_headers (" + "sequence_number INTEGER PRIMARY KEY, " + "blob_string TEXT)", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "CREATE TABLE events (" + "event_id INTEGER PRIMARY KEY AUTOINCREMENT, " // In case foreign key constraints are reintroduced. + "upload_header INTEGER, " + "blob_string TEXT NOT NULL)", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "CREATE TABLE localytics_info (" + "schema_version INTEGER PRIMARY KEY, " + "last_upload_number INTEGER, " + "last_session_number INTEGER, " + "opt_out BOOLEAN, " + "last_close_event INTEGER, " + "last_flow_event INTEGER, " + "last_session_start REAL, " + "app_key CHAR(64), " + "custom_d0 CHAR(64), " + "custom_d1 CHAR(64), " + "custom_d2 CHAR(64), " + "custom_d3 CHAR(64) " + ")", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "INSERT INTO localytics_info (schema_version, last_upload_number, last_session_number, opt_out) " + "VALUES (3, 0, 0, 0)", NULL, NULL, NULL); + } + + // Commit transaction. + if (code == SQLITE_OK || code == SQLITE_DONE) { + sqlite3_exec(_databaseConnection, "COMMIT", NULL, NULL, NULL); + } else { + sqlite3_exec(_databaseConnection, "ROLLBACK", NULL, NULL, NULL); + } +} + +// V2 adds a unique identifier for each installation +// This identifier has been moved to user preferences so the database an live in the caches directory +// Also adds storage for custom dimensions +- (void)upgradeToSchemaV2 { + int code = SQLITE_OK; + + code = sqlite3_exec(_databaseConnection, "BEGIN", NULL, NULL, NULL); + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "ALTER TABLE localytics_info ADD install_id CHAR(40)", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "ALTER TABLE localytics_info ADD custom_d0 CHAR(64)", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "ALTER TABLE localytics_info ADD custom_d1 CHAR(64)", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "ALTER TABLE localytics_info ADD custom_d2 CHAR(64)", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + sqlite3_exec(_databaseConnection, + "ALTER TABLE localytics_info ADD custom_d3 CHAR(64)", + NULL, NULL, NULL); + } + + // Attempt to set schema version and install_id regardless of the result code following the ALTER statements above. + // This is necessary because a previous version of the library performed the migration without setting these values. + // The transaction will succeed even if the individual statements fail with errors (eg. "duplicate column name"). + sqlite3_stmt *updateLocalyticsInfo; + sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info set install_id = ?, schema_version = 2 ", -1, &updateLocalyticsInfo, NULL); + sqlite3_bind_text (updateLocalyticsInfo, 1, [[self randomUUID] UTF8String], -1, SQLITE_TRANSIENT); + code = sqlite3_step(updateLocalyticsInfo); + sqlite3_finalize(updateLocalyticsInfo); + + // Commit transaction. + if (code == SQLITE_OK || code == SQLITE_DONE) { + sqlite3_exec(_databaseConnection, "COMMIT", NULL, NULL, NULL); + } else { + sqlite3_exec(_databaseConnection, "ROLLBACK", NULL, NULL, NULL); + } +} + +// V3 adds a field for the last app key and patches a V2 migration issue. +- (void)upgradeToSchemaV3 { + int code = sqlite3_exec(_databaseConnection, "BEGIN", NULL, NULL, NULL); + + if (code == SQLITE_OK) { + sqlite3_exec(_databaseConnection, + "ALTER TABLE localytics_info ADD app_key CHAR(64)", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "UPDATE localytics_info set schema_version = 3", + NULL, NULL, NULL); + } + + // Commit transaction. + if (code == SQLITE_OK || code == SQLITE_DONE) { + sqlite3_exec(_databaseConnection, "COMMIT", NULL, NULL, NULL); + } else { + sqlite3_exec(_databaseConnection, "ROLLBACK", NULL, NULL, NULL); + } +} + +// V4 adds a field for the customer id. +- (void)upgradeToSchemaV4 { + int code = sqlite3_exec(_databaseConnection, "BEGIN", NULL, NULL, NULL); + + if (code == SQLITE_OK) { + sqlite3_exec(_databaseConnection, + "ALTER TABLE localytics_info ADD customer_id CHAR(64)", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "UPDATE localytics_info set schema_version = 4", + NULL, NULL, NULL); + } + + // Commit transaction. + if (code == SQLITE_OK || code == SQLITE_DONE) { + sqlite3_exec(_databaseConnection, "COMMIT", NULL, NULL, NULL); + } else { + sqlite3_exec(_databaseConnection, "ROLLBACK", NULL, NULL, NULL); + } +} + +// V5 adds AMP related tables. +- (void)upgradeToSchemaV5 { + + int code = sqlite3_exec(_databaseConnection, "BEGIN", NULL, NULL, NULL); + + //The AMP DB table was initially created here. in Version 7 it will be dropped and re-added with the correct data types. + //therefore the code that creates it is no longer going to be called here. + + //we still want to change the schema version + + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "UPDATE localytics_info set schema_version = 5", + NULL, NULL, NULL); + } + + // Commit transaction. + if (code == SQLITE_OK || code == SQLITE_DONE) { + sqlite3_exec(_databaseConnection, "COMMIT", NULL, NULL, NULL); + } else { + sqlite3_exec(_databaseConnection, "ROLLBACK", NULL, NULL, NULL); + } +} + +// V6 adds a field for the queued close event blob string. +- (void)upgradeToSchemaV6 { + int code = sqlite3_exec(_databaseConnection, "BEGIN", NULL, NULL, NULL); + + if (code == SQLITE_OK) { + sqlite3_exec(_databaseConnection, + "ALTER TABLE localytics_info ADD queued_close_event_blob TEXT", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "UPDATE localytics_info set schema_version = 6", + NULL, NULL, NULL); + } + + // Commit transaction. + if (code == SQLITE_OK || code == SQLITE_DONE) { + sqlite3_exec(_databaseConnection, "COMMIT", NULL, NULL, NULL); + } else { + sqlite3_exec(_databaseConnection, "ROLLBACK", NULL, NULL, NULL); + } +} + +-(void)upgradeToSchemaV7 { + int code = sqlite3_exec(_databaseConnection, "BEGIN", NULL, NULL, NULL); + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, "DROP TABLE IF EXISTS localytics_amp_rule", NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "CREATE TABLE IF NOT EXISTS localytics_amp_rule (" + "rule_id INTEGER PRIMARY KEY AUTOINCREMENT, " + "rule_name TEXT UNIQUE, " + "expiration INTEGER, " + "phone_location TEXT, " + "phone_size_width INTEGER, " + "phone_size_height INTEGER, " + "tablet_location TEXT, " + "tablet_size_width INTEGER, " + "tablet_size_height INTEGER, " + "display_seconds INTEGER, " + "display_session INTEGER, " + "version INTEGER, " + "did_display INTEGER, " + "times_to_display INTEGER, " + "internet_required INTEGER, " + "ab_test TEXT" + ")", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "CREATE TABLE IF NOT EXISTS localytics_amp_ruleevent (" + "rule_id INTEGER, " + "event_name TEXT, " + "FOREIGN KEY(rule_id) REFERENCES localytics_amp_rule(rule_id) ON DELETE CASCADE " + ")", + NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, + "UPDATE localytics_info set schema_version = 7", + NULL, NULL, NULL); + } + + // Commit transaction. + if (code == SQLITE_OK || code == SQLITE_DONE) { + sqlite3_exec(_databaseConnection, "COMMIT", NULL, NULL, NULL); + } else { + sqlite3_exec(_databaseConnection, "ROLLBACK", NULL, NULL, NULL); + } +} + +- (NSUInteger)databaseSize { + NSUInteger size = 0; + NSDictionary *fileAttributes = [[NSFileManager defaultManager] + attributesOfItemAtPath:[LocalyticsDatabase localyticsDatabasePath] + error:nil]; + size = [fileAttributes fileSize]; + return size; +} + +- (int) eventCount { + int count = 0; + const char *sql = "SELECT count(*) FROM events"; + sqlite3_stmt *selectEventCount; + + if(sqlite3_prepare_v2(_databaseConnection, sql, -1, &selectEventCount, NULL) == SQLITE_OK) + { + if(sqlite3_step(selectEventCount) == SQLITE_ROW) { + count = sqlite3_column_int(selectEventCount, 0); + } + } + sqlite3_finalize(selectEventCount); + + return count; +} + +- (NSTimeInterval)createdTimestamp { + NSTimeInterval timestamp = 0; + NSDictionary *fileAttributes = [[NSFileManager defaultManager] + attributesOfItemAtPath:[LocalyticsDatabase localyticsDatabasePath] + error:nil]; + timestamp = [[fileAttributes fileCreationDate] timeIntervalSince1970]; + return timestamp; +} + +- (NSTimeInterval)lastSessionStartTimestamp { + + NSTimeInterval lastSessionStart = 0; + + sqlite3_stmt *selectLastSessionStart; + sqlite3_prepare_v2(_databaseConnection, "SELECT last_session_start FROM localytics_info", -1, &selectLastSessionStart, NULL); + int code = sqlite3_step(selectLastSessionStart); + if (code == SQLITE_ROW) { + lastSessionStart = sqlite3_column_double(selectLastSessionStart, 0); + } + sqlite3_finalize(selectLastSessionStart); + + return lastSessionStart; +} + +- (BOOL)setLastsessionStartTimestamp:(NSTimeInterval)timestamp { + sqlite3_stmt *updateLastSessionStart; + sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info SET last_session_start = ?", -1, &updateLastSessionStart, NULL); + sqlite3_bind_double(updateLastSessionStart, 1, timestamp); + int code = sqlite3_step(updateLastSessionStart); + sqlite3_finalize(updateLastSessionStart); + + return code == SQLITE_DONE; +} + +- (BOOL)isOptedOut { + BOOL optedOut = NO; + + sqlite3_stmt *selectOptOut; + sqlite3_prepare_v2(_databaseConnection, "SELECT opt_out FROM localytics_info", -1, &selectOptOut, NULL); + int code = sqlite3_step(selectOptOut); + if (code == SQLITE_ROW) { + optedOut = sqlite3_column_int(selectOptOut, 0) == 1; + } + sqlite3_finalize(selectOptOut); + + return optedOut; +} + +- (BOOL)setOptedOut:(BOOL)optOut { + sqlite3_stmt *updateOptedOut; + sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info SET opt_out = ?", -1, &updateOptedOut, NULL); + sqlite3_bind_int(updateOptedOut, 1, optOut); + int code = sqlite3_step(updateOptedOut); + sqlite3_finalize(updateOptedOut); + + return code == SQLITE_OK; +} + +- (NSString *)customDimension:(int)dimension { + if(dimension < 0 || dimension > 3) { + return nil; + } + + NSString *value = nil; + NSString *query = [NSString stringWithFormat:@"select custom_d%i from localytics_info", dimension]; + + sqlite3_stmt *selectCustomDim; + sqlite3_prepare_v2(_databaseConnection, [query UTF8String], -1, &selectCustomDim, NULL); + int code = sqlite3_step(selectCustomDim); + if (code == SQLITE_ROW && sqlite3_column_text(selectCustomDim, 0)) { + value = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectCustomDim, 0)]; + } + sqlite3_finalize(selectCustomDim); + + return value; +} + +- (BOOL)setCustomDimension:(int)dimension value:(NSString *)value { + if(dimension < 0 || dimension > 3) { + return false; + } + + NSString *query = [NSString stringWithFormat:@"update localytics_info SET custom_d%i = %@", + dimension, + (value == nil) ? @"null" : [NSString stringWithFormat:@"\"%@\"", value]]; + + int code = sqlite3_exec(_databaseConnection, [query UTF8String], NULL, NULL, NULL); + + return code == SQLITE_OK; +} + +- (BOOL)incrementLastUploadNumber:(int *)uploadNumber { + NSString *t = @"increment_upload_number"; + int code = SQLITE_OK; + + code = [self beginTransaction:t] ? SQLITE_OK : SQLITE_ERROR; + + if(code == SQLITE_OK) { + // Increment value + code = sqlite3_exec(_databaseConnection, + "UPDATE localytics_info " + "SET last_upload_number = (last_upload_number + 1)", + NULL, NULL, NULL); + } + + if(code == SQLITE_OK) { + // Retrieve new value + sqlite3_stmt *selectUploadNumber; + sqlite3_prepare_v2(_databaseConnection, + "SELECT last_upload_number FROM localytics_info", + -1, &selectUploadNumber, NULL); + code = sqlite3_step(selectUploadNumber); + if (code == SQLITE_ROW) { + *uploadNumber = sqlite3_column_int(selectUploadNumber, 0); + } + sqlite3_finalize(selectUploadNumber); + } + + if(code == SQLITE_ROW) { + [self releaseTransaction:t]; + } else { + [self rollbackTransaction:t]; + } + + return code == SQLITE_ROW; +} + +- (BOOL)incrementLastSessionNumber:(int *)sessionNumber { + NSString *t = @"increment_session_number"; + int code = [self beginTransaction:t] ? SQLITE_OK : SQLITE_ERROR; + + if(code == SQLITE_OK) { + // Increment value + code = sqlite3_exec(_databaseConnection, + "UPDATE localytics_info " + "SET last_session_number = (last_session_number + 1)", + NULL, NULL, NULL); + } + + if(code == SQLITE_OK) { + // Retrieve new value + sqlite3_stmt *selectSessionNumber; + sqlite3_prepare_v2(_databaseConnection, + "SELECT last_session_number FROM localytics_info", + -1, &selectSessionNumber, NULL); + code = sqlite3_step(selectSessionNumber); + if (code == SQLITE_ROW && sessionNumber != NULL) { + *sessionNumber = sqlite3_column_int(selectSessionNumber, 0); + } + sqlite3_finalize(selectSessionNumber); + } + + if(code == SQLITE_ROW) { + [self releaseTransaction:t]; + } else { + [self rollbackTransaction:t]; + } + + return code == SQLITE_ROW; +} + +- (BOOL)addEventWithBlobString:(NSString *)blob { + + int code = SQLITE_OK; + sqlite3_stmt *insertEvent; + sqlite3_prepare_v2(_databaseConnection, "INSERT INTO events (blob_string) VALUES (?)", -1, &insertEvent, NULL); + sqlite3_bind_text(insertEvent, 1, [blob UTF8String], -1, SQLITE_TRANSIENT); + code = sqlite3_step(insertEvent); + sqlite3_finalize(insertEvent); + + return code == SQLITE_DONE; +} + +- (BOOL)addCloseEventWithBlobString:(NSString *)blob { + NSString *t = @"add_close_event"; + BOOL success = [self beginTransaction:t]; + + // Add close event. + if (success) { + success = [self addEventWithBlobString:blob]; + } + + // Record row id to localytics_info so that it can be removed if the session resumes. + if (success) { + sqlite3_stmt *updateCloseEvent; + sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info SET last_close_event = (SELECT event_id FROM events WHERE rowid = ?)", -1, &updateCloseEvent, NULL); + sqlite3_int64 lastRow = sqlite3_last_insert_rowid(_databaseConnection); + sqlite3_bind_int64(updateCloseEvent, 1, lastRow); + int code = sqlite3_step(updateCloseEvent); + sqlite3_finalize(updateCloseEvent); + success = code == SQLITE_DONE; + } + + if (success) { + [self releaseTransaction:t]; + } else { + [self rollbackTransaction:t]; + } + return success; +} + +- (BOOL)queueCloseEventWithBlobString:(NSString *)blob { + NSString *t = @"queue_close_event"; + BOOL success = [self beginTransaction:t]; + + // Queue close event. + if (success) { + sqlite3_stmt *queueCloseEvent; + sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info SET queued_close_event_blob = ?", -1, &queueCloseEvent, NULL); + sqlite3_bind_text(queueCloseEvent, 1, [blob UTF8String], -1, SQLITE_TRANSIENT); + int code = sqlite3_step(queueCloseEvent); + sqlite3_finalize(queueCloseEvent); + success = code == SQLITE_DONE; + } + + if (success) { + [self releaseTransaction:t]; + } else { + [self rollbackTransaction:t]; + } + return success; +} + +- (NSString *)dequeueCloseEventBlobString { + NSString *value = nil; + NSString *query = @"SELECT queued_close_event_blob FROM localytics_info"; + + sqlite3_stmt *selectStmt; + sqlite3_prepare_v2(_databaseConnection, [query UTF8String], -1, &selectStmt, NULL); + int code = sqlite3_step(selectStmt); + if (code == SQLITE_ROW && sqlite3_column_text(selectStmt, 0)) { + value = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectStmt, 0)]; + } + sqlite3_finalize(selectStmt); + + // Clear the queued close event blob. + [self queueCloseEventWithBlobString:nil]; + + return value; +} + +- (BOOL)addFlowEventWithBlobString:(NSString *)blob { + NSString *t = @"add_flow_event"; + BOOL success = [self beginTransaction:t]; + + // Add flow event. + if (success) { + success = [self addEventWithBlobString:blob]; + } + + // Record row id to localytics_info so that it can be removed if the session resumes. + if (success) { + sqlite3_stmt *updateFlowEvent; + sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info SET last_flow_event = (SELECT event_id FROM events WHERE rowid = ?)", -1, &updateFlowEvent, NULL); + sqlite3_int64 lastRow = sqlite3_last_insert_rowid(_databaseConnection); + sqlite3_bind_int64(updateFlowEvent, 1, lastRow); + int code = sqlite3_step(updateFlowEvent); + sqlite3_finalize(updateFlowEvent); + success = code == SQLITE_DONE; + } + + if (success) { + [self releaseTransaction:t]; + } else { + [self rollbackTransaction:t]; + } + return success; +} + +- (BOOL)removeLastCloseAndFlowEvents { + // Attempt to remove the last recorded close event. + // Fail quietly if none was saved or it was previously removed. + int code = sqlite3_exec(_databaseConnection, "DELETE FROM events WHERE event_id = (SELECT last_close_event FROM localytics_info) OR event_id = (SELECT last_flow_event FROM localytics_info)", NULL, NULL, NULL); + + return code == SQLITE_OK; +} + +- (BOOL)addHeaderWithSequenceNumber:(int)number blobString:(NSString *)blob rowId:(sqlite3_int64 *)insertedRowId { + sqlite3_stmt *insertHeader; + sqlite3_prepare_v2(_databaseConnection, "INSERT INTO upload_headers (sequence_number, blob_string) VALUES (?, ?)", -1, &insertHeader, NULL); + sqlite3_bind_int(insertHeader, 1, number); + sqlite3_bind_text(insertHeader, 2, [blob UTF8String], -1, SQLITE_TRANSIENT); + int code = sqlite3_step(insertHeader); + sqlite3_finalize(insertHeader); + + if (code == SQLITE_DONE && insertedRowId != NULL) { + *insertedRowId = sqlite3_last_insert_rowid(_databaseConnection); + } + + return code == SQLITE_DONE; +} + +- (int)unstagedEventCount { + int rowCount = 0; + sqlite3_stmt *selectEventCount; + sqlite3_prepare_v2(_databaseConnection, "SELECT COUNT(*) FROM events WHERE UPLOAD_HEADER IS NULL", -1, &selectEventCount, NULL); + int code = sqlite3_step(selectEventCount); + if (code == SQLITE_ROW) { + rowCount = sqlite3_column_int(selectEventCount, 0); + } + sqlite3_finalize(selectEventCount); + + return rowCount; +} + +- (BOOL)stageEventsForUpload:(sqlite3_int64)headerId { + + // Associate all outstanding events with the given upload header ID. + NSString *stageEvents = [NSString stringWithFormat:@"UPDATE events SET upload_header = ? WHERE upload_header IS NULL"]; + sqlite3_stmt *updateEvents; + sqlite3_prepare_v2(_databaseConnection, [stageEvents UTF8String], -1, &updateEvents, NULL); + sqlite3_bind_int(updateEvents, 1, headerId); + int code = sqlite3_step(updateEvents); + sqlite3_finalize(updateEvents); + BOOL success = (code == SQLITE_DONE); + + return success; +} + +- (BOOL)updateAppKey:(NSString *)appKey { + sqlite3_stmt *updateAppKey; + sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info set app_key = ?", -1, &updateAppKey, NULL); + sqlite3_bind_text (updateAppKey, 1, [appKey UTF8String], -1, SQLITE_TRANSIENT); + int code = sqlite3_step(updateAppKey); + sqlite3_finalize(updateAppKey); + BOOL success = (code == SQLITE_DONE); + + return success; +} + +- (NSString *)uploadBlobString { + + // Retrieve the blob strings of each upload header and its child events, in order. + const char *sql = "SELECT * FROM ( " + " SELECT h.blob_string AS 'blob', h.sequence_number as 'seq', 0 FROM upload_headers h" + " UNION ALL " + " SELECT e.blob_string AS 'blob', e.upload_header as 'seq', 1 FROM events e" + ") " + "ORDER BY 2, 3"; + sqlite3_stmt *selectBlobs; + sqlite3_prepare_v2(_databaseConnection, sql, -1, &selectBlobs, NULL); + NSMutableString *uploadBlobString = [NSMutableString string]; + while (sqlite3_step(selectBlobs) == SQLITE_ROW) { + const char *blob = (const char *)sqlite3_column_text(selectBlobs, 0); + if (blob != NULL) { + NSString *blobString = [[NSString alloc] initWithCString:blob encoding:NSUTF8StringEncoding]; + [uploadBlobString appendString:blobString]; + [blobString release]; + } + } + sqlite3_finalize(selectBlobs); + + return [[uploadBlobString copy] autorelease]; +} + +- (BOOL)deleteUploadedData { + // Delete all headers and staged events. + NSString *t = @"delete_upload_data"; + int code = [self beginTransaction:t] ? SQLITE_OK : SQLITE_ERROR; + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, "DELETE FROM events WHERE upload_header IS NOT NULL", NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, "DELETE FROM upload_headers", NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + [self releaseTransaction:t]; + } else { + [self rollbackTransaction:t]; + } + + return code == SQLITE_OK; +} + +- (BOOL)resetAnalyticsData { + // Delete or zero all analytics data. + // Reset: headers, events, session number, upload number, last session start, last close event, and last flow event. + // Unaffected: schema version, opt out status, install ID (deprecated), and app key. + + NSString *t = @"reset_analytics_data"; + int code = [self beginTransaction:t] ? SQLITE_OK : SQLITE_ERROR; + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, "DELETE FROM events", NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, "DELETE FROM upload_headers", NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, "DELETE FROM localytics_amp_rule", NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection, "DELETE FROM localytics_amp_ruleevent", NULL, NULL, NULL); + } + + if (code == SQLITE_OK) { + code = sqlite3_exec(_databaseConnection,"UPDATE localytics_info SET last_session_number = 0, last_upload_number = 0," + "last_close_event = null, last_flow_event = null, last_session_start = null, " + "custom_d0 = null, custom_d1 = null, custom_d2 = null, custom_d3 = null, " + "customer_id = null, queued_close_event_blob = null ", + NULL, NULL, NULL); + } + + + if (code == SQLITE_OK) { + [self releaseTransaction:t]; + } else { + [self rollbackTransaction:t]; + } + + return code == SQLITE_OK; +} + +- (BOOL)vacuumIfRequired { + int code = SQLITE_OK; + if ([self databaseSize] > MAX_DATABASE_SIZE * VACUUM_THRESHOLD) { + code = sqlite3_exec(_databaseConnection, "VACUUM", NULL, NULL, NULL); + } + + return code == SQLITE_OK; +} + +- (NSString *)randomUUID { + CFUUIDRef theUUID = CFUUIDCreate(NULL); + CFStringRef stringUUID = CFUUIDCreateString(NULL, theUUID); + CFRelease(theUUID); + return [(NSString *)stringUUID autorelease]; +} + +- (NSString *)customerId { + NSString *customerId = nil; + + sqlite3_stmt *selectCustomerId; + sqlite3_prepare_v2(_databaseConnection, "SELECT customer_id FROM localytics_info", -1, &selectCustomerId, NULL); + int code = sqlite3_step(selectCustomerId); + if (code == SQLITE_ROW && sqlite3_column_text(selectCustomerId, 0)) { + customerId = [NSString stringWithUTF8String:(char *)sqlite3_column_text(selectCustomerId, 0)]; + } + sqlite3_finalize(selectCustomerId); + + return customerId; +} + +- (BOOL)setCustomerId:(NSString *)newCustomerId +{ + sqlite3_stmt *updateCustomerId; + sqlite3_prepare_v2(_databaseConnection, "UPDATE localytics_info set customer_id = ?", -1, &updateCustomerId, NULL); + sqlite3_bind_text (updateCustomerId, 1, [newCustomerId UTF8String], -1, SQLITE_TRANSIENT); + int code = sqlite3_step(updateCustomerId); + sqlite3_finalize(updateCustomerId); + BOOL success = (code == SQLITE_DONE); + + return success; +} + +#pragma mark - Safe NSDictionary value methods + +- (NSInteger)safeIntegerValueFromDictionary:(NSDictionary *)dict forKey:(NSString *)key +{ + NSInteger integerValue = 0; + id value = [dict objectForKey:key]; + if ([value isKindOfClass:[NSNumber class]] || [value isKindOfClass:[NSString class]]) { + integerValue = [value integerValue]; + } else if ([value isKindOfClass:[NSNull class]]) { + integerValue = 0; + } + + return integerValue; +} + +- (NSString *)safeStringValueFromDictionary:(NSDictionary *)dict forKey:(NSString *)key +{ + NSString *stringValue = nil; + id value = [dict objectForKey:key]; + if ([value isKindOfClass:[NSString class]]) { + stringValue = value; + } else if ([value isKindOfClass:[NSNumber class]]) { + stringValue = [value stringValue]; + } else if ([value isKindOfClass:[NSNull class]]) { + stringValue = nil; + } + + return stringValue; +} + +- (NSDictionary *)safeDictionaryFromDictionary:(NSDictionary *)dict forKey:(NSString *)key +{ + NSDictionary *dictValue = nil; + id value = [dict objectForKey:key]; + if ([value isKindOfClass:[NSDictionary class]]) { + dictValue = value; + } + return dictValue; +} + +- (NSArray *)safeListFromDictionary:(NSDictionary *)dict forKey:(NSString *)key +{ + NSArray *arrayValue = nil; + id value = [dict objectForKey:key]; + if ([value isKindOfClass:[NSArray class]]) { + arrayValue = value; + } + return arrayValue; +} + +#pragma mark - Lifecycle + ++ (id)allocWithZone:(NSZone *)zone { + @synchronized(self) { + if (_sharedLocalyticsDatabase == nil) { + _sharedLocalyticsDatabase = [super allocWithZone:zone]; + return _sharedLocalyticsDatabase; + } + } + // returns nil on subsequent allocations + return nil; +} + +- (id)copyWithZone:(NSZone *)zone { + return self; +} + +- (id)retain { + return self; +} + +- (unsigned)retainCount { + // maximum value of an unsigned int - prevents additional retains for the class + return UINT_MAX; +} + +- (oneway void)release { + // ignore release commands +} + +- (id)autorelease { + return self; +} + +- (void)dealloc { + sqlite3_close(_databaseConnection); + [super dealloc]; +} + +@end diff --git a/Localytics/LocalyticsSession.h b/Localytics/LocalyticsSession.h index e204469d..6b18ca91 100644 --- a/Localytics/LocalyticsSession.h +++ b/Localytics/LocalyticsSession.h @@ -1,216 +1,251 @@ -// LocalyticsSession.h -// Copyright (C) 2009 Char Software Inc., DBA Localytics -// -// This code is provided under the Localytics Modified BSD License. -// A copy of this license has been distributed in a file called LICENSE -// with this source code. -// -// Please visit www.localytics.com for more information. - -#import - -// Set this to true to enable localytics traces (useful for debugging) -#define DO_LOCALYTICS_LOGGING false - -/*! - @class LocalyticsSession - @discussion The class which manages creating, collecting, & uploading a Localytics session. - Please see the following guides for information on how to best use this - library, sample code, and other useful information: -

- - Best Practices -
    -
  • Instantiate the LocalyticsSession object in applicationDidFinishLaunching.
  • -
  • Open your session and begin your uploads in applicationDidFinishLaunching. This way the - upload has time to complete and it all happens before your users have a - chance to begin any data intensive actions of their own.
  • -
  • Close the session in applicationWillTerminate, and in applicationDidEnterBackground.
  • -
  • Resume the session in applicationWillEnterForeground.
  • -
  • Do not call any Localytics functions inside a loop. Instead, calls - such as tagEvent should follow user actions. This limits the - amount of data which is stored and uploaded.
  • -
  • Do not use multiple LocalticsSession objects to upload data with - multiple application keys. This can cause invalid state.
  • -
- - @author Localytics - */ -@interface LocalyticsSession : NSObject { - - BOOL _hasInitialized; // Whether or not the session object has been initialized. - BOOL _isSessionOpen; // Whether or not this session has been opened. - float _backgroundSessionTimeout; // If an App stays in the background for more - // than this many seconds, start a new session - // when it returns to foreground. - @private - #pragma mark Member Variables - dispatch_queue_t _queue; // Queue of Localytics block objects. - dispatch_group_t _criticalGroup; // Group of blocks the must complete before backgrounding. - NSString *_sessionUUID; // Unique identifier for this session. - NSString *_applicationKey; // Unique identifier for the instrumented application - NSTimeInterval _lastSessionStartTimestamp; // The start time of the most recent session. - NSDate *_sessionResumeTime; // Time session was started or resumed. - NSDate *_sessionCloseTime; // Time session was closed. - NSMutableString *_unstagedFlowEvents; // Comma-delimited list of app screens and events tagged during this - // session that have NOT been staged for upload. - NSMutableString *_stagedFlowEvents; // App screens and events tagged during this session that HAVE been staged - // for upload. - NSMutableString *_screens; // Comma-delimited list of screens tagged during this session. - NSTimeInterval _sessionActiveDuration; // Duration that session open. - BOOL _sessionHasBeenOpen; // Whether or not this session has ever been open. -} - -@property dispatch_queue_t queue; -@property dispatch_group_t criticalGroup; -@property BOOL isSessionOpen; -@property BOOL hasInitialized; -@property float backgroundSessionTimeout; - -#pragma mark Public Methods -/*! - @method sharedLocalyticsSession - @abstract Accesses the Session object. This is a Singleton class which maintains - a single session throughout your application. It is possible to manage your own - session, but this is the easiest way to access the Localytics object throughout your code. - The class is accessed within the code using the following syntax: - [[LocalyticsSession sharedLocalyticsSession] functionHere] - So, to tag an event, all that is necessary, anywhere in the code is: - [[LocalyticsSession sharedLocalyticsSession] tagEvent:@"MY_EVENT"]; - */ -+ (LocalyticsSession *)sharedLocalyticsSession; - -/*! - @method LocalyticsSession - @abstract Initializes the Localytics Object. Not necessary if you choose to use startSession. - @param applicationKey The key unique for each application generated at www.localytics.com - */ -- (void)LocalyticsSession:(NSString *)appKey; - -/*! - @method startSession - @abstract An optional convenience initialize method that also calls the LocalyticsSession, open & - upload methods. Best Practice is to call open & upload immediately after Localytics Session when loading an app, - this method fascilitates that behavior. - It is recommended that this call be placed in applicationDidFinishLaunching. - @param applicationKey The key unique for each application generated - at www.localytics.com - */ -- (void)startSession:(NSString *)appKey; - -/*! - @method setOptIn - @abstract (OPTIONAL) Allows the application to control whether or not it will collect user data. - Even if this call is used, it is necessary to continue calling upload(). No new data will be - collected, so nothing new will be uploaded but it is necessary to upload an event telling the - server this user has opted out. - @param optedIn True if the user is opted in, false otherwise. - */ -- (void)setOptIn:(BOOL)optedIn; - -/*! - @method isOptedIn - @abstract (OPTIONAL) Whether or not this user has is opted in or out. The only way they can be - opted out is if setOptIn(false) has been called before this. This function should only be - used to pre-populate a checkbox in an options menu. It is not recommended that an application - branch based on Localytics instrumentation because this creates an additional test case. If - the app is opted out, all subsequent Localytics calls will return immediately. - @result true if the user is opted in, false otherwise. - */ -- (BOOL)isOptedIn; - -/*! - @method open - @abstract Opens the Localytics session. Not necessary if you choose to use startSession. - The session time as presented on the website is the time between open and the - final close so it is recommended to open the session as early as possible, and close - it at the last moment. The session must be opened before any tags can - be written. It is recommended that this call be placed in applicationDidFinishLaunching. -
- If for any reason this is called more than once every subsequent open call - will be ignored. - */ -- (void)open; - -/*! - @method resume - @abstract Resumes the Localytics session. When the App enters the background, the session is - 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. -*/ -- (void)resume; - -/*! - @method close - @abstract Closes the Localytics session. This should be called in - applicationWillTerminate. -
- If close is not called, the session will still be uploaded but no - events will be processed and the session time will not appear. This is - because the session is not yet closed so it should not be used in - comparison with sessions which are closed. - */ -- (void)close; - -/*! - @method tagEvent - @abstract Allows a session to tag a particular event as having occurred. For - example, if a view has three buttons, it might make sense to tag - each button click with the name of the button which was clicked. - For another example, in a game with many levels it might be valuable - to create a new tag every time the user gets to a new level in order - to determine how far the average user is progressing in the game. -
- Tagging Best Practices -
    -
  • DO NOT use tags to record personally identifiable information.
  • -
  • The best way to use tags is to create all the tag strings as predefined - constants and only use those. This is more efficient and removes the risk of - collecting personal information.
  • -
  • Do not set tags inside loops or any other place which gets called - frequently. This can cause a lot of data to be stored and uploaded.
  • -
-
- See the tagging guide at: http://wiki.localytics.com/ - @param event The name of the event which occurred. - */ -- (void)tagEvent:(NSString *)event; - -- (void)tagEvent:(NSString *)event attributes:(NSDictionary *)attributes; - -- (void)tagEvent:(NSString *)event attributes:(NSDictionary *)attributes reportAttributes:(NSDictionary *)reportAttributes; - -/*! - @method tagScreen - @abstract Allows tagging the flow of screens encountered during the session. - @param screen The name of the screen - */ -- (void)tagScreen:(NSString *)screen; - -/*! - @method upload - @abstract Creates a low priority thread which uploads any Localytics data already stored - on the device. This should be done early in the process life in order to - guarantee as much time as possible for slow connections to complete. It is also reasonable - to upload again when the application is exiting because if the upload is cancelled the data - will just get uploaded the next time the app comes up. - */ -- (void)upload; - -/*! - @method setCustomDimension - @abstract (ENTERPRISE ONLY) Sets the value of a custom dimension. Custom dimensions are dimensions - which contain user defined data unlike the predefined dimensions such as carrier, model, and country. - Once a value for a custom dimension is set, the device it was set on will continue to upload that value - until the value is changed. To clear a value pass nil as the value. - The proper use of custom dimensions involves defining a dimension with less than ten distinct possible - values and assigning it to one of the four available custom dimensions. Once assigned this definition should - never be changed without changing the App Key otherwise old installs of the application will pollute new data. - */ -- (void)setCustomDimension:(int)dimension value:(NSString *)value; - -@end +// LocalyticsSession.h +// Copyright (C) 2012 Char Software Inc., DBA Localytics +// +// This code is provided under the Localytics Modified BSD License. +// A copy of this license has been distributed in a file called LICENSE +// with this source code. +// +// Please visit www.localytics.com for more information. + +#import +#import + +// Set this to true to enable localytics traces (useful for debugging) +#define DO_LOCALYTICS_LOGGING false + +/*! + @class LocalyticsSession + @discussion The class which manages creating, collecting, & uploading a Localytics session. + Please see the following guides for information on how to best use this + library, sample code, and other useful information: + + + Best Practices +
    +
  • Instantiate the LocalyticsSession object in applicationDidFinishLaunching.
  • +
  • Open your session and begin your uploads in applicationDidFinishLaunching. This way the + upload has time to complete and it all happens before your users have a + chance to begin any data intensive actions of their own.
  • +
  • Close the session in applicationWillTerminate, and in applicationDidEnterBackground.
  • +
  • Resume the session in applicationWillEnterForeground.
  • +
  • Do not call any Localytics functions inside a loop. Instead, calls + such as tagEvent should follow user actions. This limits the + amount of data which is stored and uploaded.
  • +
  • Do not use multiple LocalticsSession objects to upload data with + multiple application keys. This can cause invalid state.
  • +
+ + @author Localytics + */ + +@interface LocalyticsSession : NSObject { + + BOOL _hasInitialized; // Whether or not the session object has been initialized. + BOOL _isSessionOpen; // Whether or not this session has been opened. + float _backgroundSessionTimeout; // If an App stays in the background for more + // than this many seconds, start a new session + // when it returns to foreground. + @private + #pragma mark Member Variables + dispatch_queue_t _queue; // Queue of Localytics block objects. + dispatch_group_t _criticalGroup; // Group of blocks the must complete before backgrounding. + NSString *_sessionUUID; // Unique identifier for this session. + NSString *_applicationKey; // Unique identifier for the instrumented application + NSTimeInterval _lastSessionStartTimestamp; // The start time of the most recent session. + NSDate *_sessionResumeTime; // Time session was started or resumed. + NSDate *_sessionCloseTime; // Time session was closed. + NSMutableString *_unstagedFlowEvents; // Comma-delimited list of app screens and events tagged during this + // session that have NOT been staged for upload. + NSMutableString *_stagedFlowEvents; // App screens and events tagged during this session that HAVE been staged + // for upload. + NSMutableString *_screens; // Comma-delimited list of screens tagged during this session. + NSTimeInterval _sessionActiveDuration; // Duration that session open. + BOOL _sessionHasBeenOpen; // Whether or not this session has ever been open. +} + +@property (nonatomic,readonly) dispatch_queue_t queue; +@property (nonatomic,readonly) dispatch_group_t criticalGroup; +@property BOOL isSessionOpen; +@property BOOL hasInitialized; +@property float backgroundSessionTimeout; + +- (void)logMessage:(NSString *)message; +@property (nonatomic, assign, readonly) NSTimeInterval lastSessionStartTimestamp; +@property (nonatomic, assign, readonly) NSInteger sessionNumber; + + +/*! + @property enableHTTPS + @abstract Determines whether or not HTTPS is used when calling the Localytics + post URL. The default is NO. + */ +@property (nonatomic, assign) BOOL enableHTTPS; // Defaults to NO. + +#pragma mark Public Methods +/*! + @method sharedLocalyticsSession + @abstract Accesses the Session object. This is a Singleton class which maintains + a single session throughout your application. It is possible to manage your own + session, but this is the easiest way to access the Localytics object throughout your code. + The class is accessed within the code using the following syntax: + [[LocalyticsSession sharedLocalyticsSession] functionHere] + So, to tag an event, all that is necessary, anywhere in the code is: + [[LocalyticsSession sharedLocalyticsSession] tagEvent:@"MY_EVENT"]; + */ ++ (LocalyticsSession *)sharedLocalyticsSession; + +/*! + @method LocalyticsSession + @abstract Initializes the Localytics Object. Not necessary if you choose to use startSession. + @param applicationKey The key unique for each application generated at www.localytics.com + */ +- (void)LocalyticsSession:(NSString *)appKey; + +/*! + @method startSession + @abstract An optional convenience initialize method that also calls the LocalyticsSession, open & + upload methods. Best Practice is to call open & upload immediately after Localytics Session when loading an app, + this method fascilitates that behavior. + It is recommended that this call be placed in applicationDidFinishLaunching. + @param applicationKey The key unique for each application generated + at www.localytics.com + */ +- (void)startSession:(NSString *)appKey; + +/*! + @method setOptIn + @abstract (OPTIONAL) Allows the application to control whether or not it will collect user data. + Even if this call is used, it is necessary to continue calling upload(). No new data will be + collected, so nothing new will be uploaded but it is necessary to upload an event telling the + server this user has opted out. + @param optedIn True if the user is opted in, false otherwise. + */ +- (void)setOptIn:(BOOL)optedIn; + +/*! + @method isOptedIn + @abstract (OPTIONAL) Whether or not this user has is opted in or out. The only way they can be + opted out is if setOptIn(false) has been called before this. This function should only be + used to pre-populate a checkbox in an options menu. It is not recommended that an application + branch based on Localytics instrumentation because this creates an additional test case. If + the app is opted out, all subsequent Localytics calls will return immediately. + @result true if the user is opted in, false otherwise. + */ +- (BOOL)isOptedIn; + +/*! + @method open + @abstract Opens the Localytics session. Not necessary if you choose to use startSession. + The session time as presented on the website is the time between open and the + final close so it is recommended to open the session as early as possible, and close + it at the last moment. The session must be opened before any tags can + be written. It is recommended that this call be placed in applicationDidFinishLaunching. +
+ If for any reason this is called more than once every subsequent open call + will be ignored. + */ +- (void)open; + +/*! + @method resume + @abstract Resumes the Localytics session. When the App enters the background, the session is + 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).*/ +- (BOOL)resume; + +/*! + @method close + @abstract Closes the Localytics session. This should be called in + applicationWillTerminate. +
+ If close is not called, the session will still be uploaded but no + events will be processed and the session time will not appear. This is + because the session is not yet closed so it should not be used in + comparison with sessions which are closed. + */ +- (void)close; + +/*! + @method tagEvent + @abstract Allows a session to tag a particular event as having occurred. For + example, if a view has three buttons, it might make sense to tag + each button click with the name of the button which was clicked. + For another example, in a game with many levels it might be valuable + to create a new tag every time the user gets to a new level in order + to determine how far the average user is progressing in the game. +
+ Tagging Best Practices +
    +
  • DO NOT use tags to record personally identifiable information.
  • +
  • The best way to use tags is to create all the tag strings as predefined + constants and only use those. This is more efficient and removes the risk of + collecting personal information.
  • +
  • Do not set tags inside loops or any other place which gets called + frequently. This can cause a lot of data to be stored and uploaded.
  • +
+
+ See the tagging guide at: http://wiki.localytics.com/ + @param event The name of the event which occurred. + */ +- (void)tagEvent:(NSString *)event; + +- (void)tagEvent:(NSString *)event attributes:(NSDictionary *)attributes; + +- (void)tagEvent:(NSString *)event attributes:(NSDictionary *)attributes reportAttributes:(NSDictionary *)reportAttributes; + +/*! + @method tagScreen + @abstract Allows tagging the flow of screens encountered during the session. + @param screen The name of the screen + */ +- (void)tagScreen:(NSString *)screen; + +/*! + @method upload + @abstract Creates a low priority thread which uploads any Localytics data already stored + on the device. This should be done early in the process life in order to + guarantee as much time as possible for slow connections to complete. It is also reasonable + to upload again when the application is exiting because if the upload is cancelled the data + will just get uploaded the next time the app comes up. + */ +- (void)upload; + +/*! + @method setCustomDimension + @abstract (ENTERPRISE ONLY) Sets the value of a custom dimension. Custom dimensions are dimensions + which contain user defined data unlike the predefined dimensions such as carrier, model, and country. + Once a value for a custom dimension is set, the device it was set on will continue to upload that value + until the value is changed. To clear a value pass nil as the value. + The proper use of custom dimensions involves defining a dimension with less than ten distinct possible + values and assigning it to one of the four available custom dimensions. Once assigned this definition should + never be changed without changing the App Key otherwise old installs of the application will pollute new data. + */ +- (void)setCustomDimension:(int)dimension value:(NSString *)value; + +/*! + @method setLocation + @abstract Stores the user's location. This will be used in all event and session calls. + If your application has already collected the user's location, it may be passed to Localytics + via this function. This will cause all events and the session close to include the locatin + information. It is not required that you call this function. + @param deviceLocation The user's location. + */ +- (void)setLocation:(CLLocationCoordinate2D)deviceLocation; + +/*! + @method ampTrigger + @abstract Displays the AMP message for the specific event. + Is a stub implementation here to prevent crashes if this class is accidentally used inplace of + the LocalyticsAmpSession + @param event Name of the event. + */ +- (void)ampTrigger:(NSString *)event; + +@end diff --git a/Localytics/LocalyticsSession.m b/Localytics/LocalyticsSession.m index 8f75c36d..c0599b38 100644 --- a/Localytics/LocalyticsSession.m +++ b/Localytics/LocalyticsSession.m @@ -1,1148 +1,1278 @@ -// LocalyticsSession.m -// Copyright (C) 2009 Char Software Inc., DBA Localytics -// -// This code is provided under the Localytics Modified BSD License. -// A copy of this license has been distributed in a file called LICENSE -// with this source code. -// -// Please visit www.localytics.com for more information. - -#import "LocalyticsSession.h" -#import "WebserviceConstants.h" -#import "LocalyticsUploader.h" -#import "LocalyticsDatabase.h" - -#include -#include -#include -#include -#include -#include -#include - -#pragma mark Constants -#define PREFERENCES_KEY @"_localytics_install_id" // The randomly generated ID for each install of the app -#define CLIENT_VERSION @"iOS_2.6" // 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/" - -#define DEFAULT_BACKGROUND_SESSION_TIMEOUT 15 // Default value for how many seconds a session persists when App shifts to the background. - -// The singleton session object. -static LocalyticsSession *_sharedLocalyticsSession = nil; - -@interface LocalyticsSession() - -@property (nonatomic, retain) NSString *sessionUUID; -@property (nonatomic, retain) NSString *applicationKey; -@property (nonatomic, assign) NSTimeInterval lastSessionStartTimestamp; -@property (nonatomic, retain) NSDate *sessionResumeTime; -@property (nonatomic, retain) NSDate *sessionCloseTime; -@property (nonatomic, retain) NSMutableString *unstagedFlowEvents; -@property (nonatomic, retain) NSMutableString *stagedFlowEvents; -@property (nonatomic, retain) NSMutableString *screens; -@property (nonatomic, assign) NSTimeInterval sessionActiveDuration; -@property (nonatomic, assign) BOOL sessionHasBeenOpen; - -// Private methods. -- (void)ll_open; -- (void)reopenPreviousSession; -- (void)addFlowEventWithName:(NSString *)name type:(NSString *)eventType; -- (void)addScreenWithName:(NSString *)name; -- (NSString *)blobHeaderStringWithSequenceNumber:(int)nextSequenceNumber; -- (BOOL)ll_isOptedIn; -- (BOOL)createOptEvent:(BOOL)optState; -- (BOOL)saveApplicationFlowAndRemoveOnResume:(BOOL)removeOnResume; -- (NSString *)formatAttributeWithName:(NSString *)paramName value:(NSString *)paramValue; -- (NSString *)formatAttributeWithName:(NSString *)paramName value:(NSString *)paramValue first:(BOOL)firstAttribute; -- (void)logMessage:(NSString *)message; - -// Datapoint methods. -- (NSString *)customDimensions; -- (NSString *)macAddress; -- (NSString *)hashString:(NSString *)input; -- (NSString *)randomUUID; -- (NSString *)escapeString:(NSString *)input; -- (NSString *)installationId; -- (NSString *)uniqueDeviceIdentifier; -- (NSString *)appVersion; -- (NSTimeInterval)currentTimestamp; -- (BOOL)isDeviceJailbroken; -- (NSString *)deviceModel; -- (NSString *)modelSizeString; -- (double)availableMemory; - -@end - -@implementation LocalyticsSession - -@synthesize queue = _queue; -@synthesize criticalGroup = _criticalGroup; -@synthesize sessionUUID = _sessionUUID; -@synthesize applicationKey = _applicationKey; -@synthesize lastSessionStartTimestamp = _lastSessionStartTimestamp; -@synthesize sessionResumeTime = _sessionResumeTime; -@synthesize sessionCloseTime = _sessionCloseTime; -@synthesize isSessionOpen = _isSessionOpen; -@synthesize hasInitialized = _hasInitialized; -@synthesize backgroundSessionTimeout = _backgroundSessionTimeout; -@synthesize unstagedFlowEvents = _unstagedFlowEvents; -@synthesize stagedFlowEvents = _stagedFlowEvents; -@synthesize screens = _screens; -@synthesize sessionActiveDuration = _sessionActiveDuration; -@synthesize sessionHasBeenOpen = _sessionHasBeenOpen; - -#pragma mark Singleton - -+ (LocalyticsSession *)sharedLocalyticsSession { - @synchronized(self) { - if (_sharedLocalyticsSession == nil) { - _sharedLocalyticsSession = [[self alloc] init]; - } - } - return _sharedLocalyticsSession; -} - -- (LocalyticsSession *)init { - if((self = [super init])) { - _isSessionOpen = NO; - _hasInitialized = NO; - _backgroundSessionTimeout = DEFAULT_BACKGROUND_SESSION_TIMEOUT; - _sessionHasBeenOpen = NO; - _queue = dispatch_queue_create("com.Localytics.operations", DISPATCH_QUEUE_SERIAL); - _criticalGroup = dispatch_group_create(); - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; - - [LocalyticsDatabase sharedLocalyticsDatabase]; - } - - return self; -} - -#pragma mark Public Methods - -- (void)LocalyticsSession:(NSString *)appKey { - // If the session has already initialized, don't bother doing it again. - if(self.hasInitialized) - { - [self logMessage:@"Object has already been initialized."]; - return; - } - - @try { - - if(appKey == (id)[NSNull null] || appKey.length == 0) { - [self logMessage:@"App key is null or empty."]; - self.hasInitialized = NO; - return; - } - - // App key should only be alphanumeric chars and dashes. - NSString *trimmedAppKey = [appKey stringByReplacingOccurrencesOfString:@"-" withString:@""]; - if([[trimmedAppKey stringByTrimmingCharactersInSet:[NSCharacterSet alphanumericCharacterSet]] isEqualToString:@""] == false) { - [self logMessage:@"App key may only contain dashes and alphanumeric characters."]; - self.hasInitialized = NO; - return; - } - - if ([LocalyticsDatabase sharedLocalyticsDatabase]) { - // Check if the app key has changed. - NSString *lastAppKey = [[LocalyticsDatabase sharedLocalyticsDatabase] appKey]; - if (![lastAppKey isEqualToString:appKey]) { - if (lastAppKey) { - // Clear previous events and dimensions to guarantee that new data isn't associated with the old app key. - [[LocalyticsDatabase sharedLocalyticsDatabase] resetAnalyticsData]; - - // Vacuum to improve the odds of opening a new session following bulk delete. - [[LocalyticsDatabase sharedLocalyticsDatabase] vacuumIfRequired]; - } - // Record the key for future checks. - [[LocalyticsDatabase sharedLocalyticsDatabase] updateAppKey:appKey]; - } - - self.applicationKey = appKey; - self.hasInitialized = YES; - [self logMessage:[@"Object Initialized. Application's key is: " stringByAppendingString:self.applicationKey]]; - } - } - @catch (NSException * e) {} -} - -- (void)startSession:(NSString *)appKey { - [self LocalyticsSession:appKey]; - [self open]; - [self upload]; -} - -// Public interface to ll_open. -- (void)open { - dispatch_async(_queue, ^{ - [self ll_open]; - }); -} - -- (void)resume { - dispatch_async(_queue, ^{ - // Do nothing if session is already open - if(self.isSessionOpen == YES) - return; - - if([self ll_isOptedIn] == false) { - [self logMessage:@"Can't resume session because user is opted out."]; - 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]; - } else { - // otherwise open new session and upload - [self logMessage:@"Resume called - Opening a new session."]; - [self ll_open]; - } - self.sessionCloseTime = nil; - }); -} - -- (void)close { - dispatch_group_async(_criticalGroup, _queue, ^{ - // Do nothing if the session is not open - if (self.isSessionOpen == NO) { - [self logMessage:@"Unable to close session"]; - return; - } - - // Save time of close - self.sessionCloseTime = [NSDate date]; - - // Update active session duration. - self.sessionActiveDuration += [self.sessionCloseTime timeIntervalSinceDate:self.sessionResumeTime]; - - int sessionLength = (int)[[NSDate date] timeIntervalSince1970] - self.lastSessionStartTimestamp; - - @try { - // Create the JSON representing the close blob - NSMutableString *closeEventString = [NSMutableString string]; - [closeEventString appendString:@"{"]; - [closeEventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"c" first:YES]]; - [closeEventString appendString:[self formatAttributeWithName:PARAM_SESSION_UUID value:self.sessionUUID]]; - [closeEventString appendString:[self formatAttributeWithName:PARAM_UUID value:[self randomUUID] ]]; - [closeEventString appendFormat:@",\"%@\":%u", PARAM_SESSION_START, (long)self.lastSessionStartTimestamp]; - [closeEventString appendFormat:@",\"%@\":%u", PARAM_SESSION_ACTIVE, (long)self.sessionActiveDuration]; - [closeEventString appendFormat:@",\"%@\":%u", PARAM_CLIENT_TIME, (long)[self currentTimestamp]]; - - // Avoid recording session lengths of users with unreasonable client times (usually caused by developers testing clock change attacks) - if(sessionLength > 0 && sessionLength < 400000) { - [closeEventString appendFormat:@",\"%@\":%u", PARAM_SESSION_TOTAL, sessionLength]; - } - - // Open second level - screen flow - [closeEventString appendFormat:@",\"%@\":[", PARAM_SESSION_SCREENFLOW]; - [closeEventString appendString:self.screens]; - - // Close second level - screen flow - [closeEventString appendString:@"]"]; - - // Append the custom dimensions - [closeEventString appendString:[self customDimensions]]; - - // Close first level - close blob - [closeEventString appendString:@"}\n"]; - - BOOL success = [[LocalyticsDatabase sharedLocalyticsDatabase] addCloseEventWithBlobString:[[closeEventString copy] autorelease]]; - - self.isSessionOpen = NO; // Session is no longer open. - - if (success) { - // Record final session flow, opting to remove it from the database if the session happens to resume. - // This is safe now that the session has closed because no new events can be added. - success = [self saveApplicationFlowAndRemoveOnResume:YES]; - } - - if (success) { - [self logMessage:@"Session succesfully closed."]; - } else { - [self logMessage:@"Failed to record session close."]; - } - } - @catch (NSException * e) {} - }); -} - -- (void)setOptIn:(BOOL)optedIn { - dispatch_async(_queue, ^{ - @try { - LocalyticsDatabase *db = [LocalyticsDatabase sharedLocalyticsDatabase]; - NSString *t = @"set_opt"; - BOOL success = [db beginTransaction:t]; - - // Write out opt event. - if (success) { - success = [self createOptEvent:optedIn]; - } - - // Update database with the option (stored internally as an opt-out). - if (success) { - [db setOptedOut:optedIn == NO]; - } - - if (success && optedIn == NO) { - // Disable all further Localytics calls for this and future sessions - // This should not be flipped when the session is opted back in because that - // would create an incomplete session. - self.isSessionOpen = NO; - } - - if (success) { - [db releaseTransaction:t]; - [self logMessage:[NSString stringWithFormat:@"Application opted %@", optedIn ? @"in" : @"out"]]; - } else { - [db rollbackTransaction:t]; - [self logMessage:@"Failed to update opt state."]; - } - } - @catch (NSException * e) {} - }); -} - -// Public interface to ll_isOptedIn. -- (BOOL)isOptedIn { - __block BOOL optedIn = YES; - dispatch_sync(_queue, ^{ - optedIn = [self ll_isOptedIn]; - }); - return optedIn; -} - -// A convenience function for users who don't wish to add attributes. -- (void)tagEvent:(NSString *)event { - [self tagEvent:event attributes:nil reportAttributes:nil]; -} - -// Most users should use this tagEvent call. -- (void)tagEvent:(NSString *)event attributes:(NSDictionary *)attributes { - [self tagEvent:event attributes:attributes reportAttributes:nil]; -} - -- (void)tagEvent:(NSString *)event attributes:(NSDictionary *)attributes reportAttributes:(NSDictionary *)reportAttributes { - dispatch_async(_queue, ^{ - @try { - // Do nothing if the session is not open. - if (self.isSessionOpen == NO) - { - [self logMessage:@"Cannot tag an event because the session is not open."]; - return; - } - - if(event == (id)[NSNull null] || event.length == 0) - { - [self logMessage:@"Event tagged without a name. Skipping."]; - return; - } - - // Create the JSON for the event - NSMutableString *eventString = [[[NSMutableString alloc] init] autorelease]; - [eventString appendString:@"{"]; - [eventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"e" first:YES] ]; - [eventString appendString:[self formatAttributeWithName:PARAM_UUID value:[self randomUUID] ]]; - [eventString appendString:[self formatAttributeWithName:PARAM_APP_KEY value:self.applicationKey ]]; - [eventString appendString:[self formatAttributeWithName:PARAM_SESSION_UUID value:self.sessionUUID ]]; - [eventString appendString:[self formatAttributeWithName:PARAM_EVENT_NAME value:[self escapeString:event] ]]; - [eventString appendFormat:@",\"%@\":%u", PARAM_CLIENT_TIME, (long)[self currentTimestamp]]; - - // Append the custom dimensions - [eventString appendString:[self customDimensions]]; - - // If there are any attributes for this event, add them as a hash - int attrIndex = 0; - if(attributes != nil) - { - // Open second level - attributes - [eventString appendString:[NSString stringWithFormat:@",\"%@\":{", PARAM_ATTRIBUTES]]; - for (id key in [attributes allKeys]) - { - // Have to escape paramName and paramValue because they user-defined. - [eventString appendString: - [self formatAttributeWithName:[self escapeString:[key description]] - value:[self escapeString:[[attributes valueForKey:key] description]] - first:(attrIndex == 0)]]; - attrIndex++; - } - - // Close second level - attributes - [eventString appendString:@"}"]; - } - - // If there are any report attributes for this event, add them as above - attrIndex = 0; - if(reportAttributes != nil) - { - [eventString appendString:[NSString stringWithFormat:@",\"%@\":{", PARAM_REPORT_ATTRIBUTES]]; - for(id key in [reportAttributes allKeys]) { - [eventString appendString: - [self formatAttributeWithName:[self escapeString:[key description]] - value:[self escapeString:[[reportAttributes valueForKey:key] description]] - first:(attrIndex == 0)]]; - attrIndex++; - } - [eventString appendString:@"}"]; - } - - // Close first level - Event information - [eventString appendString:@"}\n"]; - - BOOL success = [[LocalyticsDatabase sharedLocalyticsDatabase] addEventWithBlobString:[[eventString copy] autorelease]]; - if (success) { - // User-originated events should be tracked as application flow. - [self addFlowEventWithName:event type:@"e"]; // "e" for Event. - - [self logMessage:[@"Tagged event: " stringByAppendingString:event]]; - } else { - [self logMessage:@"Failed to tag event."]; - } - } - @catch (NSException * e) {} - }); -} - -- (void)tagScreen:(NSString *)screen { - dispatch_async(_queue, ^{ - // Do nothing if the session is not open. - if (self.isSessionOpen == NO) - { - [self logMessage:@"Cannot tag a screen because the session is not open."]; - return; - } - - // Tag screen with description to enforce string type and avoid retaining objects passed by clients in lieu of a - // screen name. - NSString *screenName = [screen description]; - [self addFlowEventWithName:screenName type:@"s"]; // "s" for Screen. - - // Maintain a parallel list of only screen names. This is submitted in the session close event. - // This may be removed in a future version of the client library. - [self addScreenWithName:screenName]; - - [self logMessage:[@"Tagged screen: " stringByAppendingString:screenName]]; - }); -} - -- (void)setCustomDimension:(int)dimension value:(NSString *)value { - dispatch_async(_queue, ^{ - if(dimension < 0 || dimension > 3) { - [self logMessage:@"Only valid dimensions are 0 - 3"]; - return; - } - - if(false == [[LocalyticsDatabase sharedLocalyticsDatabase] setCustomDimension:dimension value:value]) { - [self logMessage:@"Unable to set custom dimensions."]; - } - }); -} - -- (void)upload { - dispatch_group_async(_criticalGroup, _queue, ^{ - @try { - if ([[LocalyticsUploader sharedLocalyticsUploader] isUploading]) { - [self logMessage:@"An upload is already in progress. Aborting."]; - return; - } - - NSString *t = @"stage_upload"; - LocalyticsDatabase *db = [LocalyticsDatabase sharedLocalyticsDatabase]; - BOOL success = [db beginTransaction:t]; - - // - The event list for the current session is not modified - // New flow events are only transitioned to the "old" list if the upload is staged successfully. The queue - // ensures that the list of events are not modified while a call to upload is in progress. - if (success) { - // Write flow blob to database. This is for a session in progress and should not be removed upon resume. - success = [self saveApplicationFlowAndRemoveOnResume:NO]; - } - - if (success && [db unstagedEventCount] > 0) { - // Increment upload sequence number. - int sequenceNumber = 0; - success = [db incrementLastUploadNumber:&sequenceNumber]; - - // Write out header to database. - sqlite3_int64 headerRowId = 0; - if (success) { - NSString *headerBlob = [self blobHeaderStringWithSequenceNumber:sequenceNumber]; - success = [db addHeaderWithSequenceNumber:sequenceNumber blobString:headerBlob rowId:&headerRowId]; - } - - // Associate unstaged events. - if (success) { - success = [db stageEventsForUpload:headerRowId]; - } - } - - if (success) { - // Complete transaction - [db releaseTransaction:t]; - - // Move new flow events to the old flow event array. - if (self.unstagedFlowEvents.length) { - if (self.stagedFlowEvents.length) { - [self.stagedFlowEvents appendFormat:@",%@", self.unstagedFlowEvents]; - } else { - self.stagedFlowEvents = [[self.unstagedFlowEvents mutableCopy] autorelease]; - } - self.unstagedFlowEvents = [NSMutableString string]; - } - - // Begin upload. - [[LocalyticsUploader sharedLocalyticsUploader] uploaderWithApplicationKey:self.applicationKey]; - } else { - [db rollbackTransaction:t]; - [self logMessage:@"Failed to start upload."]; - } - } - @catch (NSException * e) { } - }); -} - -#pragma mark Private Methods - -- (void)ll_open { - // There are a number of conditions in which nothing should be done: - if (self.hasInitialized == NO || // the session object has not yet initialized - self.isSessionOpen == YES) // session has already been opened - { - [self logMessage:@"Unable to open session."]; - return; - } - - if([self ll_isOptedIn] == false) { - [self logMessage:@"Can't open session because user is opted out."]; - return; - } - - @try { - // If there is too much data on the disk, don't bother collecting any more. - LocalyticsDatabase *db = [LocalyticsDatabase sharedLocalyticsDatabase]; - if([db databaseSize] > MAX_DATABASE_SIZE) { - [self logMessage:@"Database has exceeded the maximum size. Session not opened."]; - self.isSessionOpen = NO; - return; - } - - self.sessionActiveDuration = 0; - self.sessionResumeTime = [NSDate date]; - self.unstagedFlowEvents = [NSMutableString string]; - self.stagedFlowEvents = [NSMutableString string]; - self.screens = [NSMutableString string]; - - // Begin transaction for session open. - NSString *t = @"open_session"; - BOOL success = [db beginTransaction:t]; - - // Save session start time. - self.lastSessionStartTimestamp = [self.sessionResumeTime timeIntervalSince1970]; - if (success) { - success = [db setLastsessionStartTimestamp:self.lastSessionStartTimestamp]; - } - - // Retrieve next session number. - int sessionNumber = 0; - if (success) { - success = [db incrementLastSessionNumber:&sessionNumber]; - } - - if (success) { - // Prepare session open event. - self.sessionUUID = [self randomUUID]; - - // Store event. - NSMutableString *openEventString = [NSMutableString string]; - [openEventString appendString:@"{"]; - [openEventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"s" first:YES]]; - [openEventString appendString:[self formatAttributeWithName:PARAM_NEW_SESSION_UUID value:self.sessionUUID]]; - [openEventString appendFormat:@",\"%@\":%u", PARAM_CLIENT_TIME, (long)self.lastSessionStartTimestamp]; - [openEventString appendFormat:@",\"%@\":%d", PARAM_SESSION_NUMBER, sessionNumber]; - - [openEventString appendString:[self customDimensions]]; - - [openEventString appendString:@"}\n"]; - - [self customDimensions]; - - success = [db addEventWithBlobString:[[openEventString copy] autorelease]]; - } - - if (success) { - [db releaseTransaction:t]; - self.isSessionOpen = YES; - self.sessionHasBeenOpen = YES; - [self logMessage:[@"Succesfully opened session. UUID is: " stringByAppendingString:self.sessionUUID]]; - } else { - [db rollbackTransaction:t]; - self.isSessionOpen = NO; - [self logMessage:@"Failed to open session."]; - } - } - @catch (NSException * e) {} -} - -/*! - @method reopenPreviousSession - @abstract Reopens the previous session, using previous session variables. If there was no previous session, do nothing. -*/ -- (void)reopenPreviousSession { - if(self.sessionHasBeenOpen == NO){ - [self logMessage:@"Unable to reopen previous session, because a previous session was never opened."]; - return; - } - - // Record session resume time. - self.sessionResumeTime = [NSDate date]; - - //Remove close and flow events if they exist. - [[LocalyticsDatabase sharedLocalyticsDatabase] removeLastCloseAndFlowEvents]; - - self.isSessionOpen = YES; -} - -/*! - @method addFlowEventWithName:type: - @abstract Adds a simple key-value pair to the list of events tagged during this session. - @param name The name of the tagged event. - @param eventType A key representing the type of the tagged event. Either "s" for Screen or "e" for Event. - */ -- (void)addFlowEventWithName:(NSString *)name type:(NSString *)eventType { - if (!name || !eventType) - return; - - // Format new event as simple key-value dictionary. - NSString *eventString = [self formatAttributeWithName:eventType value:[self escapeString:name] first:YES]; - - // Flow events are uploaded as a sequence of key-value pairs. Wrap the above in braces and append to the list. - BOOL previousFlowEvents = self.unstagedFlowEvents.length > 0; - if (previousFlowEvents) { - [self.unstagedFlowEvents appendString:@","]; - } - [self.unstagedFlowEvents appendFormat:@"{%@}", eventString]; -} - -/*! - @method addScreenWithName: - @abstract Adds a name to list of screens encountered during this session. - @discussion The complete list of names is sent with the session close event. Screen names are stored in parallel to the - screen flow events list and may be removed in future versions of this library. - @param name The name of the tagged screen. - */ -- (void)addScreenWithName:(NSString *)name { - if (self.screens.length > 0) { - [self.screens appendString:@","]; - } - [self.screens appendFormat:@"\"%@\"", [self escapeString:name]]; -} - -/*! - @method blobHeaderStringWithSequenceNumber: - @abstract Creates the JSON string for the upload blob header, substituting in the given upload sequence number. - @param nextSequenceNumber The sequence number for the current upload attempt. - @return The upload header JSON blob. - */ -- (NSString *)blobHeaderStringWithSequenceNumber:(int)nextSequenceNumber { - - NSMutableString *headerString = [[[NSMutableString alloc] init] autorelease]; - - // Common header information. - UIDevice *thisDevice = [UIDevice currentDevice]; - NSLocale *locale = [NSLocale currentLocale]; - NSLocale *english = [[[NSLocale alloc] initWithLocaleIdentifier: @"en_US"] autorelease]; - NSLocale *device_locale = [[NSLocale preferredLanguages] objectAtIndex:0]; - NSString *device_language = [english displayNameForKey:NSLocaleIdentifier value:device_locale]; - NSString *locale_country = [english displayNameForKey:NSLocaleCountryCode value:[locale objectForKey:NSLocaleCountryCode]]; - NSString *uuid = [self randomUUID]; - NSString *device_uuid = [self uniqueDeviceIdentifier]; - - // Open first level - blob information - [headerString appendString:@"{"]; - [headerString appendFormat:@"\"%@\":%d", PARAM_SEQUENCE_NUMBER, nextSequenceNumber]; - [headerString appendFormat:@",\"%@\":%u", PARAM_PERSISTED_AT, (long)[[LocalyticsDatabase sharedLocalyticsDatabase] createdTimestamp]]; - [headerString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"h" ]]; - [headerString appendString:[self formatAttributeWithName:PARAM_UUID value:uuid ]]; - - // Open second level - blob header attributes - [headerString appendString:[NSString stringWithFormat:@",\"%@\":{", PARAM_ATTRIBUTES]]; - [headerString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"a" first:YES]]; - - // >> Application and session information - [headerString appendString:[self formatAttributeWithName:PARAM_INSTALL_ID value:[self installationId] ]]; - [headerString appendString:[self formatAttributeWithName:PARAM_APP_KEY value:self.applicationKey ]]; - [headerString appendString:[self formatAttributeWithName:PARAM_APP_VERSION value:[self appVersion] ]]; - [headerString appendString:[self formatAttributeWithName:PARAM_LIBRARY_VERSION value:CLIENT_VERSION ]]; - - // >> Device Information -// [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_UUID value:device_uuid ]]; - [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_UUID_HASHED value:[self hashString:device_uuid] ]]; - [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_PLATFORM value:[thisDevice model] ]]; - [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_OS_VERSION value:[thisDevice systemVersion] ]]; - [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_MODEL value:[self deviceModel] ]]; - -// MAC Address collection. Uncomment the following line to add Mac address to the mix of collected identifiers -// [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_MAC value:[self hashString:[self macAddress]] ]]; - [headerString appendString:[NSString stringWithFormat:@",\"%@\":%d", PARAM_DEVICE_MEMORY, (long)[self availableMemory] ]]; - [headerString appendString:[self formatAttributeWithName:PARAM_LOCALE_LANGUAGE value:device_language]]; - [headerString appendString:[self formatAttributeWithName:PARAM_LOCALE_COUNTRY value:locale_country]]; - [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_COUNTRY value:[locale objectForKey:NSLocaleCountryCode]]]; - [headerString appendString:[NSString stringWithFormat:@",\"%@\":%@", PARAM_JAILBROKEN, [self isDeviceJailbroken] ? @"true" : @"false"]]; - - // Close second level - attributes - [headerString appendString:@"}"]; - - // Close first level - blob information - [headerString appendString:@"}\n"]; - - return [[headerString copy] autorelease]; -} - -- (BOOL)ll_isOptedIn { - return [[LocalyticsDatabase sharedLocalyticsDatabase] isOptedOut] == NO; -} - -/*! - @method createOptEvent: - @abstract Generates the JSON for an opt event (user opting in or out) and writes it to the database. - @return YES if the event was written to the database, NO otherwise - */ -- (BOOL)createOptEvent:(BOOL)optState { - NSMutableString *optEventString = [NSMutableString string]; - [optEventString appendString:@"{"]; - [optEventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"o" first:YES]]; - [optEventString appendString:[self formatAttributeWithName:PARAM_APP_KEY value:self.applicationKey first:NO]]; - [optEventString appendString:[NSString stringWithFormat:@",\"%@\":%@", PARAM_OPT_VALUE, (optState ? @"true" : @"false") ]]; - [optEventString appendFormat:@",\"%@\":%u", PARAM_CLIENT_TIME, (long)[self currentTimestamp]]; - [optEventString appendString:@"}\n"]; - - BOOL success = [[LocalyticsDatabase sharedLocalyticsDatabase] addEventWithBlobString:[[optEventString copy] autorelease]]; - return success; -} - -/* - @method saveApplicationFlowAndRemoveOnResume: - @abstract Constructs an application flow blob string and writes it to the database, optionally flagging it for deletion - if the session is resumed. - @param removeOnResume YES if the application flow blob should be deleted if the session is resumed. - @return YES if the application flow event was written to the database successfully. - */ -- (BOOL)saveApplicationFlowAndRemoveOnResume:(BOOL)removeOnResume { - BOOL success = YES; - - // If there are no new events, then there is nothing additional to save. - if (self.unstagedFlowEvents.length) { - // Flows are uploaded as a distinct blob type containing arrays of new and previously-uploaded event and - // screen names. Write a flow event to the database. - NSMutableString *flowEventString = [[[NSMutableString alloc] init] autorelease]; - - // Open first level - flow blob event - [flowEventString appendString:@"{"]; - [flowEventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"f" first:YES]]; - [flowEventString appendString:[self formatAttributeWithName:PARAM_UUID value:[self randomUUID] ]]; - [flowEventString appendFormat:@",\"%@\":%u", PARAM_SESSION_START, (long)self.lastSessionStartTimestamp]; - - // Open second level - new flow events - [flowEventString appendFormat:@",\"%@\":[", PARAM_NEW_FLOW_EVENTS]; - [flowEventString appendString:self.unstagedFlowEvents]; // Flow events are escaped in |-addFlowEventWithName:| - // Close second level - new flow events - [flowEventString appendString:@"]"]; - - // Open second level - old flow events - [flowEventString appendFormat:@",\"%@\":[", PARAM_OLD_FLOW_EVENTS]; - [flowEventString appendString:self.stagedFlowEvents]; - // Close second level - old flow events - [flowEventString appendString:@"]"]; - - // Close first level - flow blob event - [flowEventString appendString:@"}\n"]; - - success = [[LocalyticsDatabase sharedLocalyticsDatabase] addFlowEventWithBlobString:[[flowEventString copy] autorelease]]; - } - return success; -} - -// Convenience method for formatAttributeWithName which sets firstAttribute to NO since -// this is the most common way to call it. -- (NSString *)formatAttributeWithName:(NSString *)paramName value:(NSString *)paramValue { - return [self formatAttributeWithName:paramName value:paramValue first:NO]; -} - -/*! - @method formatAttributeWithName:value:firstAttribute: - @abstract Returns the given string key/value pair as a JSON string. - @param paramName The name of the parameter - @param paramValue The value of the parameter - @param firstAttribute YES if this attribute is first in an attribute list - @return a JSON string which can be dumped to the JSON file - */ -- (NSString *)formatAttributeWithName:(NSString *)paramName value:(NSString *)paramValue first:(BOOL)firstAttribute { - // The expected result is one of: - // "paramname":"paramvalue" - // "paramname":null - NSMutableString *formattedString = [NSMutableString string]; - if (!firstAttribute) { - [formattedString appendString:@","]; - } - - NSString *quotedString = @"\"%@\""; - paramName = [NSString stringWithFormat:quotedString, paramName]; - paramValue = paramValue ? [NSString stringWithFormat:quotedString, paramValue] : @"null"; - [formattedString appendFormat:@"%@:%@", paramName, paramValue]; - return [[formattedString copy] autorelease]; -} - -/*! - @method escapeString - @abstract Formats the input string so it fits nicely in a JSON document. This includes - escaping double quote and slash characters. - @return The escaped version of the input string - */ -- (NSString *)escapeString:(NSString *)input -{ - NSString *output = [input stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]; - output = [output stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; - output = [output stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; - return output; -} - -- (void)applicationDidEnterBackground:(NSNotification *)notification -{ - [self logMessage:@"Application entered the background."]; - - // Continue executing until critical blocks finish executing or background time runs out, whichever comes first. - UIApplication *application = (UIApplication *)[notification object]; - __block UIBackgroundTaskIdentifier taskID = [application beginBackgroundTaskWithExpirationHandler:^{ - // Synchronize with the main queue in case the the tasks finish at the same time as the expiration handler. - dispatch_async(dispatch_get_main_queue(), ^{ - if (taskID != UIBackgroundTaskInvalid) { - [self logMessage:@"Failed to finish executing critical tasks. Cleaning up."]; - [application endBackgroundTask:taskID]; - taskID = UIBackgroundTaskInvalid; - } - }); - }]; - - // Critical tasks have finished. Expire the background task. - dispatch_group_notify(_criticalGroup, dispatch_get_main_queue(), ^{ - [self logMessage:@"Finished executing critical tasks."]; - if (taskID != UIBackgroundTaskInvalid) { - [application endBackgroundTask:taskID]; - taskID = UIBackgroundTaskInvalid; - } - }); -} - -/*! - @method logMessage - @abstract Logs a message with (localytics) prepended to it. - @param message The message to log - */ -- (void)logMessage:(NSString *)message -{ - if(DO_LOCALYTICS_LOGGING) { - NSLog(@"(localytics) %s\n", [message UTF8String]); - } -} - -#pragma mark Datapoint Functions -/*! - @method customDimensions - @abstract Returns the json blob containing the custom dimensions. Assumes this will be appended - to an existing blob and as a result prepends the results with a comma. - */ -- (NSString *)customDimensions -{ - NSMutableString *dimensions = [[[NSMutableString alloc] init] autorelease]; - - for(int i=0; i <4; i++) { - NSString *dimension = [[LocalyticsDatabase sharedLocalyticsDatabase] customDimension:i]; - if(dimension) { - [dimensions appendFormat:@",\"c%i\":\"%@\"", i, dimension]; - } - } - - return [[dimensions copy] autorelease]; -} - -/*! - @method macAddress - @abstract Returns the macAddress of this device. - */ -- (NSString *)macAddress -{ - NSMutableString* result = [NSMutableString string]; - - BOOL success; - struct ifaddrs* addrs; - const struct ifaddrs* cursor; - const struct sockaddr_dl* dlAddr; - const uint8_t * base; - int i; - - success = (getifaddrs(&addrs) == 0); - if(success) - { - cursor = addrs; - while(cursor != NULL) - { - if((cursor->ifa_addr->sa_family == AF_LINK) && (((const struct sockaddr_dl *) cursor->ifa_addr)->sdl_type == IFT_ETHER)) - { - dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr; - base = (const uint8_t *) &dlAddr->sdl_data[dlAddr->sdl_nlen]; - - for(i=0; isdl_alen; i++) - { - if(i != 0) { - [result appendString:@":"]; - } - [result appendFormat:@"%02x", base[i]]; - } - break; - } - cursor = cursor->ifa_next; - } - freeifaddrs(addrs); - } - - return result; -} - -/*! - @method hashString - @abstract SHA1 Hashes a string - */ -- (NSString *)hashString:(NSString *)input -{ - NSData *stringBytes = [input dataUsingEncoding: NSUTF8StringEncoding]; - unsigned char digest[CC_SHA1_DIGEST_LENGTH]; - - if (CC_SHA1([stringBytes bytes], [stringBytes length], digest)) { - NSMutableString* hashedUUID = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; - for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) { - [hashedUUID appendFormat:@"%02x", digest[i]]; - } - return hashedUUID; - } - - return nil; -} - -/*! - @method randomUUID - @abstract Generates a random UUID - @return NSString containing the new UUID - */ -- (NSString *)randomUUID { - CFUUIDRef theUUID = CFUUIDCreate(NULL); - CFStringRef stringUUID = CFUUIDCreateString(NULL, theUUID); - CFRelease(theUUID); - return [(NSString *)stringUUID autorelease]; -} - -/*! - @method installationId - @abstract Looks in user preferences for an ID unique to this installation. If one is not - found it checks if one happens to be in the database (carroyover from older version of the db) - if not, it generates one. - @return A string uniquely identifying this installation of this app - */ -- (NSString *) installationId { - NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; - NSString *installId = [prefs stringForKey:PREFERENCES_KEY]; - - if(installId == nil) - { - [self logMessage:@"Install ID not found in preferences, checking DB"]; - installId = [[LocalyticsDatabase sharedLocalyticsDatabase] installId]; - } - - // If it hasn't been found yet, generate a new one. - if(installId == nil) - { - [self logMessage:@"Install ID not find one in database, generating a new one."]; - installId = [self randomUUID]; - } - - // Store the newly generated installId - [prefs setObject:installId forKey:PREFERENCES_KEY]; - [[NSUserDefaults standardUserDefaults] synchronize]; - - return installId; -} - -/*! - @method uniqueDeviceIdentifier - @abstract A unique device identifier is a hash value composed from various hardware identifiers such - as the device’s serial number. It is guaranteed to be unique for every device but cannot - be tied to a user account. [UIDevice Class Reference] - @return An 1-way hashed identifier unique to this device. - */ -- (NSString *)uniqueDeviceIdentifier { - -// Supress the warning for uniqueIdentifier being deprecated. -// We collect it as long as it is available along with a randomly generated ID. -// This way, when this becomes unavailable we can map existing users so the -// new vs returning counts do not break. This will be removed before it causes grief. -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wdeprecated-declarations" - NSString *systemId = [[UIDevice currentDevice] uniqueIdentifier]; -#pragma clang diagnostic pop - - return systemId; -} - -/*! - @method appVersion - @abstract Gets the pretty string for this application's version. - @return The application's version as a pretty string - */ -- (NSString *)appVersion { - return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; -} - -/*! - @method currentTimestamp - @abstract Gets the current time as seconds since Unix epoch. - @return an NSTimeInterval time. - */ -- (NSTimeInterval)currentTimestamp { - return [[NSDate date] timeIntervalSince1970]; -} - -/*! - @method isDeviceJailbroken - @abstract checks for the existance of apt to determine whether the user is running any - of the jailbroken app sources. - @return whether or not the device is jailbroken. - */ -- (BOOL) isDeviceJailbroken { - NSFileManager *sessionFileManager = [NSFileManager defaultManager]; - return [sessionFileManager fileExistsAtPath:PATH_TO_APT]; -} - -/*! - @method deviceModel - @abstract Gets the device model string. - @return a platform string identifying the device - */ -- (NSString *)deviceModel { - char *buffer[256] = { 0 }; - size_t size = sizeof(buffer); - sysctlbyname("hw.machine", buffer, &size, NULL, 0); - NSString *platform = [NSString stringWithCString:(const char*)buffer - encoding:NSUTF8StringEncoding]; - return platform; -} - -/*! - @method modelSizeString - @abstract Checks how much disk space is reported and uses that to determine the model - @return A string identifying the model, e.g. 8GB, 16GB, etc - */ -- (NSString *) modelSizeString { - -#if TARGET_IPHONE_SIMULATOR - return @"simulator"; -#endif - - // User partition - NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSDictionary *stats = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[path lastObject] error:nil]; - uint64_t user = [[stats objectForKey:NSFileSystemSize] longLongValue]; - - // System partition - path = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSSystemDomainMask, YES); - stats = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[path lastObject] error:nil]; - uint64_t system = [[stats objectForKey:NSFileSystemSize] longLongValue]; - - // Add up and convert to gigabytes - // TODO: seem to be missing a system partiton or two... - NSInteger size = (user + system) >> 30; - - // Find nearest power of 2 (eg, 1,2,4,8,16,32,etc). Over 64 and we return 0 - for (NSInteger gig = 1; gig < 257; gig = gig << 1) { - if (size < gig) - return [NSString stringWithFormat:@"%dGB", gig]; - } - return nil; -} - -/*! - @method availableMemory - @abstract Reports how much memory is available - @return A double containing the available free memory - */ -- (double)availableMemory { - double result = NSNotFound; - vm_statistics_data_t stats; - mach_msg_type_number_t count = HOST_VM_INFO_COUNT; - if (!host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&stats, &count)) - result = vm_page_size * stats.free_count; - - return result; -} - - -#pragma mark System Functions -+ (id)allocWithZone:(NSZone *)zone { - @synchronized(self) { - if (_sharedLocalyticsSession == nil) { - _sharedLocalyticsSession = [super allocWithZone:zone]; - return _sharedLocalyticsSession; - } - } - // returns nil on subsequent allocations - return nil; -} - -- (id)copyWithZone:(NSZone *)zone { - return self; -} - -- (id)retain { - return self; -} - -- (unsigned)retainCount { - // maximum value of an unsigned int - prevents additional retains for the class - return UINT_MAX; -} - -- (oneway void)release { - // ignore release commands -} - -- (id)autorelease { - return self; -} - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil]; - - dispatch_release(_criticalGroup); - dispatch_release(_queue); - [_sessionUUID release]; - [_applicationKey release]; - [_sessionCloseTime release]; - [_unstagedFlowEvents release]; - [_stagedFlowEvents release]; - [_screens release]; - [_sharedLocalyticsSession release]; - - [super dealloc]; -} - -@end +// LocalyticsSession.m +// Copyright (C) 2012 Char Software Inc., DBA Localytics +// +// This code is provided under the Localytics Modified BSD License. +// A copy of this license has been distributed in a file called LICENSE +// with this source code. +// +// Please visit www.localytics.com for more information. + +#import "LocalyticsSession.h" +#import "WebserviceConstants.h" +#import "LocalyticsUploader.h" +#import "LocalyticsDatabase.h" + +#include +#include +#include +#include +#include +#include +#include + +#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 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/" + +#define DEFAULT_BACKGROUND_SESSION_TIMEOUT 15 // Default value for how many seconds a session persists when App shifts to the background. + +// The singleton session object. +static LocalyticsSession *_sharedLocalyticsSession = nil; + +@interface LocalyticsSession() + +@property (nonatomic, retain) NSString *sessionUUID; +@property (nonatomic, retain) NSString *applicationKey; +@property (nonatomic, assign) NSTimeInterval lastSessionStartTimestamp; +@property (nonatomic, retain) NSDate *sessionResumeTime; +@property (nonatomic, retain) NSDate *sessionCloseTime; +@property (nonatomic, retain) NSMutableString *unstagedFlowEvents; +@property (nonatomic, retain) NSMutableString *stagedFlowEvents; +@property (nonatomic, retain) NSMutableString *screens; +@property (nonatomic, assign) NSTimeInterval sessionActiveDuration; +@property (nonatomic, assign) BOOL sessionHasBeenOpen; +@property (nonatomic, assign) NSInteger sessionNumber; + +// Private methods. +- (void)ll_open; +- (void)reopenPreviousSession; +- (void)addFlowEventWithName:(NSString *)name type:(NSString *)eventType; +- (void)addScreenWithName:(NSString *)name; +- (NSString *)blobHeaderStringWithSequenceNumber:(int)nextSequenceNumber; +- (BOOL)ll_isOptedIn; +- (BOOL)createOptEvent:(BOOL)optState; +- (BOOL)saveApplicationFlowAndRemoveOnResume:(BOOL)removeOnResume; +- (NSString *)formatAttributeWithName:(NSString *)paramName value:(NSString *)paramValue; +- (NSString *)formatAttributeWithName:(NSString *)paramName value:(NSString *)paramValue first:(BOOL)firstAttribute; +-(void) uploadCallback:(NSDictionary*)info; + +// Datapoint methods. +- (NSString *)customDimensions; +- (NSString *)locationDimensions; +- (NSString *)hashString:(NSString *)input; +- (NSString *)randomUUID; +- (NSString *)escapeString:(NSString *)input; +- (NSString *)installationId; +- (NSString *)appVersion; +- (NSTimeInterval)currentTimestamp; +- (BOOL)isDeviceJailbroken; +- (NSString *)deviceModel; +- (NSString *)modelSizeString; +- (double)availableMemory; +- (NSString *)advertisingIdentifier; +- (NSString *)uniqueDeviceIdentifier; + +@end + +@implementation LocalyticsSession + +@synthesize queue = _queue; +@synthesize criticalGroup = _criticalGroup; +@synthesize sessionUUID = _sessionUUID; +@synthesize applicationKey = _applicationKey; +@synthesize lastSessionStartTimestamp = _lastSessionStartTimestamp; +@synthesize sessionResumeTime = _sessionResumeTime; +@synthesize sessionCloseTime = _sessionCloseTime; +@synthesize isSessionOpen = _isSessionOpen; +@synthesize hasInitialized = _hasInitialized; +@synthesize backgroundSessionTimeout = _backgroundSessionTimeout; +@synthesize unstagedFlowEvents = _unstagedFlowEvents; +@synthesize stagedFlowEvents = _stagedFlowEvents; +@synthesize screens = _screens; +@synthesize sessionActiveDuration = _sessionActiveDuration; +@synthesize sessionHasBeenOpen = _sessionHasBeenOpen; +@synthesize sessionNumber = _sessionNumber; +@synthesize enableHTTPS = _enableHTTPS; + +// Stores the last location passed in to the app. +CLLocationCoordinate2D lastDeviceLocation = {0}; + +#pragma mark Singleton + ++ (LocalyticsSession *)sharedLocalyticsSession { + @synchronized(self) { + if (_sharedLocalyticsSession == nil) { + _sharedLocalyticsSession = [[self alloc] init]; + } + } + return _sharedLocalyticsSession; +} + +- (LocalyticsSession *)init { + if((self = [super init])) { + _isSessionOpen = NO; + _hasInitialized = NO; + _backgroundSessionTimeout = DEFAULT_BACKGROUND_SESSION_TIMEOUT; + _sessionHasBeenOpen = NO; + _queue = dispatch_queue_create("com.Localytics.operations", DISPATCH_QUEUE_SERIAL); + _criticalGroup = dispatch_group_create(); + _enableHTTPS = NO; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidEnterBackground:) name:UIApplicationDidEnterBackgroundNotification object:nil]; + + [LocalyticsDatabase sharedLocalyticsDatabase]; + } + + return self; +} + +#pragma mark Public Methods + +- (void)LocalyticsSession:(NSString *)appKey { + // If the session has already initialized, don't bother doing it again. + if(self.hasInitialized) + { + [self logMessage:@"Object has already been initialized."]; + return; + } + + @try { + + if(appKey == (id)[NSNull null] || appKey.length == 0) { + [self logMessage:@"App key is null or empty."]; + self.hasInitialized = NO; + return; + } + + // App key should only be alphanumeric chars and dashes. + NSString *trimmedAppKey = [appKey stringByReplacingOccurrencesOfString:@"-" withString:@""]; + if([[trimmedAppKey stringByTrimmingCharactersInSet:[NSCharacterSet alphanumericCharacterSet]] isEqualToString:@""] == false) { + [self logMessage:@"App key may only contain dashes and alphanumeric characters."]; + self.hasInitialized = NO; + return; + } + + if ([LocalyticsDatabase sharedLocalyticsDatabase]) { + // Check if the app key has changed. + NSString *lastAppKey = [[LocalyticsDatabase sharedLocalyticsDatabase] appKey]; + if (![lastAppKey isEqualToString:appKey]) { + if (lastAppKey) { + // Clear previous events and dimensions to guarantee that new data isn't associated with the old app key. + [[LocalyticsDatabase sharedLocalyticsDatabase] resetAnalyticsData]; + + // Vacuum to improve the odds of opening a new session following bulk delete. + [[LocalyticsDatabase sharedLocalyticsDatabase] vacuumIfRequired]; + } + // Record the key for future checks. + [[LocalyticsDatabase sharedLocalyticsDatabase] updateAppKey:appKey]; + } + + self.applicationKey = appKey; + self.hasInitialized = YES; + [self logMessage:[@"Object Initialized. Application's key is: " stringByAppendingString:self.applicationKey]]; + } + } + @catch (NSException * e) {} +} + +- (void)startSession:(NSString *)appKey { + //check app key + NSPredicate *matchPred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"[A-Fa-f0-9-]+"]; + BOOL matches = [matchPred evaluateWithObject:appKey]; + if (matches == NO) { + //generate exception + NSException *exception = [NSException exceptionWithName:@"Invalid Localytics App Key" reason:@"Application key is not valid. Please look at the iOS integration guidlines at http://www.localytics.com/docs/iphone-integration/" userInfo:nil]; + [exception raise]; + } + + [self LocalyticsSession:appKey]; + [self open]; + [self upload]; +} + +// Public interface to ll_open. +- (void)open { + dispatch_async(_queue, ^{ + [self ll_open]; + }); +} + + +- (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; +} + +- (void)close { + dispatch_group_async(_criticalGroup, _queue, ^{ + // Do nothing if the session is not open + if (self.isSessionOpen == NO) { + [self logMessage:@"Unable to close session"]; + return; + } + + // Save time of close + self.sessionCloseTime = [NSDate date]; + + // Update active session duration. + self.sessionActiveDuration += [self.sessionCloseTime timeIntervalSinceDate:self.sessionResumeTime]; + + int sessionLength = (int)[[NSDate date] timeIntervalSince1970] - self.lastSessionStartTimestamp; + + @try { + // Create the JSON representing the close blob + NSMutableString *closeEventString = [NSMutableString string]; + [closeEventString appendString:@"{"]; + [closeEventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"c" first:YES]]; + [closeEventString appendString:[self formatAttributeWithName:PARAM_SESSION_UUID value:self.sessionUUID]]; + [closeEventString appendString:[self formatAttributeWithName:PARAM_UUID value:[self randomUUID] ]]; + [closeEventString appendFormat:@",\"%@\":%ld", PARAM_SESSION_START, (long)self.lastSessionStartTimestamp]; + [closeEventString appendFormat:@",\"%@\":%ld", PARAM_SESSION_ACTIVE, (long)self.sessionActiveDuration]; + [closeEventString appendFormat:@",\"%@\":%ld", PARAM_CLIENT_TIME, (long)[self currentTimestamp]]; + + // Avoid recording session lengths of users with unreasonable client times (usually caused by developers testing clock change attacks) + if(sessionLength > 0 && sessionLength < 400000) { + [closeEventString appendFormat:@",\"%@\":%d", PARAM_SESSION_TOTAL, sessionLength]; + } + + // Open second level - screen flow + [closeEventString appendFormat:@",\"%@\":[", PARAM_SESSION_SCREENFLOW]; + [closeEventString appendString:self.screens]; + + // Close second level - screen flow + [closeEventString appendString:@"]"]; + + // Append the custom dimensions + [closeEventString appendString:[self customDimensions]]; + + // Append the location + [closeEventString appendString:[self locationDimensions]]; + + // Close first level - close blob + [closeEventString appendString:@"}\n"]; + + BOOL success = [[LocalyticsDatabase sharedLocalyticsDatabase] queueCloseEventWithBlobString:[[closeEventString copy] autorelease]]; + + self.isSessionOpen = NO; // Session is no longer open. + + if (success) { + [self logMessage:@"Session succesfully closed."]; + } else { + [self logMessage:@"Failed to record session close."]; + } + } + @catch (NSException * e) {} + }); +} + +- (void)setOptIn:(BOOL)optedIn { + dispatch_async(_queue, ^{ + @try { + LocalyticsDatabase *db = [LocalyticsDatabase sharedLocalyticsDatabase]; + NSString *t = @"set_opt"; + BOOL success = [db beginTransaction:t]; + + // Write out opt event. + if (success) { + success = [self createOptEvent:optedIn]; + } + + // Update database with the option (stored internally as an opt-out). + if (success) { + [db setOptedOut:optedIn == NO]; + } + + if (success && optedIn == NO) { + // Disable all further Localytics calls for this and future sessions + // This should not be flipped when the session is opted back in because that + // would create an incomplete session. + self.isSessionOpen = NO; + } + + if (success) { + [db releaseTransaction:t]; + [self logMessage:[NSString stringWithFormat:@"Application opted %@", optedIn ? @"in" : @"out"]]; + } else { + [db rollbackTransaction:t]; + [self logMessage:@"Failed to update opt state."]; + } + } + @catch (NSException * e) {} + }); +} + +// Public interface to ll_isOptedIn. +- (BOOL)isOptedIn { + __block BOOL optedIn = YES; + dispatch_sync(_queue, ^{ + optedIn = [self ll_isOptedIn]; + }); + return optedIn; +} + +// A convenience function for users who don't wish to add attributes. +- (void)tagEvent:(NSString *)event { + [self tagEvent:event attributes:nil reportAttributes:nil]; +} + +// Most users should use this tagEvent call. +- (void)tagEvent:(NSString *)event attributes:(NSDictionary *)attributes { + [self tagEvent:event attributes:attributes reportAttributes:nil]; +} + +- (void)tagEvent:(NSString *)event attributes:(NSDictionary *)attributes reportAttributes:(NSDictionary *)reportAttributes { + dispatch_async(_queue, ^{ + @try { + // Do nothing if the session is not open. + if (self.isSessionOpen == NO) + { + [self logMessage:@"Cannot tag an event because the session is not open."]; + return; + } + + if(event == (id)[NSNull null] || event.length == 0) + { + [self logMessage:@"Event tagged without a name. Skipping."]; + return; + } + + // Create the JSON for the event + NSMutableString *eventString = [[[NSMutableString alloc] init] autorelease]; + [eventString appendString:@"{"]; + [eventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"e" first:YES] ]; + [eventString appendString:[self formatAttributeWithName:PARAM_UUID value:[self randomUUID] ]]; + [eventString appendString:[self formatAttributeWithName:PARAM_APP_KEY value:self.applicationKey ]]; + [eventString appendString:[self formatAttributeWithName:PARAM_SESSION_UUID value:self.sessionUUID ]]; + [eventString appendString:[self formatAttributeWithName:PARAM_EVENT_NAME value:[self escapeString:event] ]]; + [eventString appendFormat:@",\"%@\":%ld", PARAM_CLIENT_TIME, (long)[self currentTimestamp]]; + + // Append the custom dimensions + [eventString appendString:[self customDimensions]]; + + // Append the location + [eventString appendString:[self locationDimensions]]; + + // If there are any attributes for this event, add them as a hash + int attrIndex = 0; + if(attributes != nil) + { + // Open second level - attributes + [eventString appendString:[NSString stringWithFormat:@",\"%@\":{", PARAM_ATTRIBUTES]]; + for (id key in [attributes allKeys]) + { + // Have to escape paramName and paramValue because they user-defined. + [eventString appendString: + [self formatAttributeWithName:[self escapeString:[key description]] + value:[self escapeString:[[attributes valueForKey:key] description]] + first:(attrIndex == 0)]]; + attrIndex++; + } + + // Close second level - attributes + [eventString appendString:@"}"]; + } + + // If there are any report attributes for this event, add them as above + attrIndex = 0; + if(reportAttributes != nil) + { + [eventString appendString:[NSString stringWithFormat:@",\"%@\":{", PARAM_REPORT_ATTRIBUTES]]; + for(id key in [reportAttributes allKeys]) { + [eventString appendString: + [self formatAttributeWithName:[self escapeString:[key description]] + value:[self escapeString:[[reportAttributes valueForKey:key] description]] + first:(attrIndex == 0)]]; + attrIndex++; + } + [eventString appendString:@"}"]; + } + + // Close first level - Event information + [eventString appendString:@"}\n"]; + + BOOL success = [[LocalyticsDatabase sharedLocalyticsDatabase] addEventWithBlobString:[[eventString copy] autorelease]]; + if (success) { + // User-originated events should be tracked as application flow. + [self addFlowEventWithName:event type:@"e"]; // "e" for Event. + + [self ampTrigger:event]; + + [self logMessage:[@"Tagged event: " stringByAppendingString:event]]; + } else { + [self logMessage:@"Failed to tag event."]; + } + } + @catch (NSException * e) {} + }); +} + +- (void)tagScreen:(NSString *)screen { + dispatch_async(_queue, ^{ + // Do nothing if the session is not open. + if (self.isSessionOpen == NO) + { + [self logMessage:@"Cannot tag a screen because the session is not open."]; + return; + } + + // Tag screen with description to enforce string type and avoid retaining objects passed by clients in lieu of a + // screen name. + NSString *screenName = [screen description]; + [self addFlowEventWithName:screenName type:@"s"]; // "s" for Screen. + + // Maintain a parallel list of only screen names. This is submitted in the session close event. + // This may be removed in a future version of the client library. + [self addScreenWithName:screenName]; + + [self logMessage:[@"Tagged screen: " stringByAppendingString:screenName]]; + }); +} + +- (void)setLocation:(CLLocationCoordinate2D)deviceLocation { + lastDeviceLocation = deviceLocation; + [self logMessage:@"Setting Location"]; +} + +- (void)setCustomDimension:(int)dimension value:(NSString *)value { + dispatch_async(_queue, ^{ + if(dimension < 0 || dimension > 3) { + [self logMessage:@"Only valid dimensions are 0 - 3"]; + return; + } + + if(false == [[LocalyticsDatabase sharedLocalyticsDatabase] setCustomDimension:dimension value:value]) { + [self logMessage:@"Unable to set custom dimensions."]; + } + }); +} + +- (void)upload { + dispatch_group_async(_criticalGroup, _queue, ^{ + @try { + if ([[LocalyticsUploader sharedLocalyticsUploader] isUploading]) { + [self logMessage:@"An upload is already in progress. Aborting."]; + return; + } + + NSString *t = @"stage_upload"; + LocalyticsDatabase *db = [LocalyticsDatabase sharedLocalyticsDatabase]; + BOOL success = [db beginTransaction:t]; + + // - The event list for the current session is not modified + // New flow events are only transitioned to the "old" list if the upload is staged successfully. The queue + // ensures that the list of events are not modified while a call to upload is in progress. + if (success) { + // Write flow blob to database. This is for a session in progress and should not be removed upon resume. + success = [self saveApplicationFlowAndRemoveOnResume:NO]; + } + + if (success && [db unstagedEventCount] > 0) { + // Increment upload sequence number. + int sequenceNumber = 0; + success = [db incrementLastUploadNumber:&sequenceNumber]; + + // Write out header to database. + sqlite3_int64 headerRowId = 0; + if (success) { + NSString *headerBlob = [self blobHeaderStringWithSequenceNumber:sequenceNumber]; + success = [db addHeaderWithSequenceNumber:sequenceNumber blobString:headerBlob rowId:&headerRowId]; + } + + // Associate unstaged events. + if (success) { + success = [db stageEventsForUpload:headerRowId]; + } + } + + if (success) { + // Complete transaction + [db releaseTransaction:t]; + + // Move new flow events to the old flow event array. + if (self.unstagedFlowEvents.length) { + if (self.stagedFlowEvents.length) { + [self.stagedFlowEvents appendFormat:@",%@", self.unstagedFlowEvents]; + } else { + self.stagedFlowEvents = [[self.unstagedFlowEvents mutableCopy] autorelease]; + } + self.unstagedFlowEvents = [NSMutableString string]; + } + + // Begin upload. + [[LocalyticsUploader sharedLocalyticsUploader] uploaderWithApplicationKey:self.applicationKey useHTTPS:[self enableHTTPS] installId:[self installationId] resultTarget:self callback:@selector(uploadCallback:)]; + } else { + [db rollbackTransaction:t]; + [self logMessage:@"Failed to start upload."]; + } + } + @catch (NSException * e) { } + }); +} + +#pragma mark Private Methods + +-(NSString*)libraryVersion { + return CLIENT_VERSION; +} + +-(void) uploadCallback:(NSDictionary*)info{ +} + +- (void)dequeueCloseEventBlobString +{ + LocalyticsDatabase *db = [LocalyticsDatabase sharedLocalyticsDatabase]; + NSString *closeEventString = [db dequeueCloseEventBlobString]; + if (closeEventString) { + BOOL success = [db addCloseEventWithBlobString:closeEventString]; + if (!success) { + // Re-queue the close event. + [db queueCloseEventWithBlobString:closeEventString]; + } + } +} + +- (void)ll_open { + // There are a number of conditions in which nothing should be done: + if (self.hasInitialized == NO || // the session object has not yet initialized + self.isSessionOpen == YES) // session has already been opened + { + [self logMessage:@"Unable to open session."]; + return; + } + + if([self ll_isOptedIn] == false) { + [self logMessage:@"Can't open session because user is opted out."]; + return; + } + + @try { + // If there is too much data on the disk, don't bother collecting any more. + LocalyticsDatabase *db = [LocalyticsDatabase sharedLocalyticsDatabase]; + if([db databaseSize] > MAX_DATABASE_SIZE) { + [self logMessage:@"Database has exceeded the maximum size. Session not opened."]; + self.isSessionOpen = NO; + return; + } + + [self dequeueCloseEventBlobString]; + + self.sessionActiveDuration = 0; + self.sessionResumeTime = [NSDate date]; + self.unstagedFlowEvents = [NSMutableString string]; + self.stagedFlowEvents = [NSMutableString string]; + self.screens = [NSMutableString string]; + + // Begin transaction for session open. + NSString *t = @"open_session"; + BOOL success = [db beginTransaction:t]; + + // lastSessionStartTimestamp isn't really the last session start time. + // It's the sessionResumeTime which is [NSDate date] or now. Therefore, + // save the current lastSessionTimestamp value from the database so it + // can be used to calculate the elapsed time between session start times. + NSTimeInterval previousSessionStartTimeInterval = [db lastSessionStartTimestamp]; + + // Save session start time. + self.lastSessionStartTimestamp = [self.sessionResumeTime timeIntervalSince1970]; + if (success) { + success = [db setLastsessionStartTimestamp:self.lastSessionStartTimestamp]; + } + + // Retrieve next session number. + int sessionNumber = 0; + if (success) { + success = [db incrementLastSessionNumber:&sessionNumber]; + } + [self setSessionNumber:sessionNumber]; + + if (success) { + // Prepare session open event. + self.sessionUUID = [self randomUUID]; + + // Store event. + NSMutableString *openEventString = [NSMutableString string]; + [openEventString appendString:@"{"]; + [openEventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"s" first:YES]]; + [openEventString appendString:[self formatAttributeWithName:PARAM_NEW_SESSION_UUID value:self.sessionUUID]]; + [openEventString appendFormat:@",\"%@\":%ld", PARAM_CLIENT_TIME, (long)self.lastSessionStartTimestamp]; + [openEventString appendFormat:@",\"%@\":%d", PARAM_SESSION_NUMBER, sessionNumber]; + + double elapsedTime = 0.0; + if (previousSessionStartTimeInterval > 0) { + elapsedTime = [self lastSessionStartTimestamp] - previousSessionStartTimeInterval; + } + NSString *elapsedTimeString = [NSString stringWithFormat:@"%.0f", elapsedTime]; + [openEventString appendString:[self formatAttributeWithName:PARAM_SESSION_ELAPSE_TIME value:elapsedTimeString]]; + + [openEventString appendString:[self customDimensions]]; + [openEventString appendString:[self locationDimensions]]; + + [openEventString appendString:@"}\n"]; + + [self customDimensions]; + + success = [db addEventWithBlobString:[[openEventString copy] autorelease]]; + } + + if (success) { + [db releaseTransaction:t]; + self.isSessionOpen = YES; + self.sessionHasBeenOpen = YES; + [self logMessage:[@"Succesfully opened session. UUID is: " stringByAppendingString:self.sessionUUID]]; + } else { + [db rollbackTransaction:t]; + self.isSessionOpen = NO; + [self logMessage:@"Failed to open session."]; + } + } + @catch (NSException * e) {} +} + +/*! + @method reopenPreviousSession + @abstract Reopens the previous session, using previous session variables. If there was no previous session, do nothing. +*/ +- (void)reopenPreviousSession { + if(self.sessionHasBeenOpen == NO){ + [self logMessage:@"Unable to reopen previous session, because a previous session was never opened."]; + return; + } + + // Record session resume time. + self.sessionResumeTime = [NSDate date]; + + //Remove close and flow events if they exist. + [[LocalyticsDatabase sharedLocalyticsDatabase] removeLastCloseAndFlowEvents]; + + self.isSessionOpen = YES; +} + +/*! + @method addFlowEventWithName:type: + @abstract Adds a simple key-value pair to the list of events tagged during this session. + @param name The name of the tagged event. + @param eventType A key representing the type of the tagged event. Either "s" for Screen or "e" for Event. + */ +- (void)addFlowEventWithName:(NSString *)name type:(NSString *)eventType { + if (!name || !eventType) + return; + + // Format new event as simple key-value dictionary. + NSString *eventString = [self formatAttributeWithName:eventType value:[self escapeString:name] first:YES]; + + // Flow events are uploaded as a sequence of key-value pairs. Wrap the above in braces and append to the list. + BOOL previousFlowEvents = self.unstagedFlowEvents.length > 0; + if (previousFlowEvents) { + [self.unstagedFlowEvents appendString:@","]; + } + [self.unstagedFlowEvents appendFormat:@"{%@}", eventString]; +} + +/*! + @method addScreenWithName: + @abstract Adds a name to list of screens encountered during this session. + @discussion The complete list of names is sent with the session close event. Screen names are stored in parallel to the + screen flow events list and may be removed in future versions of this library. + @param name The name of the tagged screen. + */ +- (void)addScreenWithName:(NSString *)name { + if (self.screens.length > 0) { + [self.screens appendString:@","]; + } + [self.screens appendFormat:@"\"%@\"", [self escapeString:name]]; +} + +/*! + @method blobHeaderStringWithSequenceNumber: + @abstract Creates the JSON string for the upload blob header, substituting in the given upload sequence number. + @param nextSequenceNumber The sequence number for the current upload attempt. + @return The upload header JSON blob. + */ +- (NSString *)blobHeaderStringWithSequenceNumber:(int)nextSequenceNumber { + + NSMutableString *headerString = [[[NSMutableString alloc] init] autorelease]; + + // Common header information. + UIDevice *thisDevice = [UIDevice currentDevice]; + NSLocale *locale = [NSLocale currentLocale]; + NSLocale *english = [[[NSLocale alloc] initWithLocaleIdentifier: @"en_US"] autorelease]; + NSLocale *device_locale = [[NSLocale preferredLanguages] objectAtIndex:0]; + NSString *device_language = [english displayNameForKey:NSLocaleIdentifier value:device_locale]; + NSString *locale_country = [english displayNameForKey:NSLocaleCountryCode value:[locale objectForKey:NSLocaleCountryCode]]; + NSString *uuid = [self randomUUID]; + NSString *device_uuid = [self uniqueDeviceIdentifier]; + NSString *device_adid = [self advertisingIdentifier]; + + // Open first level - blob information + [headerString appendString:@"{"]; + [headerString appendFormat:@"\"%@\":%d", PARAM_SEQUENCE_NUMBER, nextSequenceNumber]; + [headerString appendFormat:@",\"%@\":%ld", PARAM_PERSISTED_AT, (long)[[LocalyticsDatabase sharedLocalyticsDatabase] createdTimestamp]]; + [headerString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"h" ]]; + [headerString appendString:[self formatAttributeWithName:PARAM_UUID value:uuid ]]; + + // Open second level - blob header attributes + [headerString appendString:[NSString stringWithFormat:@",\"%@\":{", PARAM_ATTRIBUTES]]; + [headerString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"a" first:YES]]; + + // >> Application and session information + [headerString appendString:[self formatAttributeWithName:PARAM_INSTALL_ID value:[self installationId] ]]; + [headerString appendString:[self formatAttributeWithName:PARAM_APP_KEY value:self.applicationKey ]]; + [headerString appendString:[self formatAttributeWithName:PARAM_APP_VERSION value:[self appVersion] ]]; + [headerString appendString:[self formatAttributeWithName:PARAM_LIBRARY_VERSION value:[self libraryVersion] ]]; + + // >> Device Information + if (device_uuid) { + [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_UUID_HASHED value:[self hashString:device_uuid] ]]; + } + if (device_adid) { + [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_ADID value:device_adid]]; + } + [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_PLATFORM value:[thisDevice model] ]]; + [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_OS_VERSION value:[thisDevice systemVersion] ]]; + [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_MODEL value:[self deviceModel] ]]; + +// MAC Address collection. Uncomment the following line to add Mac address to the mix of collected identifiers +// [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_MAC value:[self hashString:[self macAddress]] ]]; + [headerString appendString:[NSString stringWithFormat:@",\"%@\":%ld", PARAM_DEVICE_MEMORY, (long)[self availableMemory] ]]; + [headerString appendString:[self formatAttributeWithName:PARAM_LOCALE_LANGUAGE value:device_language]]; + [headerString appendString:[self formatAttributeWithName:PARAM_LOCALE_COUNTRY value:locale_country]]; + [headerString appendString:[self formatAttributeWithName:PARAM_DEVICE_COUNTRY value:[locale objectForKey:NSLocaleCountryCode]]]; + [headerString appendString:[NSString stringWithFormat:@",\"%@\":%@", PARAM_JAILBROKEN, [self isDeviceJailbroken] ? @"true" : @"false"]]; + + // Close second level - attributes + [headerString appendString:@"}"]; + + // Close first level - blob information + [headerString appendString:@"}\n"]; + + return [[headerString copy] autorelease]; +} + +- (BOOL)ll_isOptedIn { + return [[LocalyticsDatabase sharedLocalyticsDatabase] isOptedOut] == NO; +} + +/*! + @method createOptEvent: + @abstract Generates the JSON for an opt event (user opting in or out) and writes it to the database. + @return YES if the event was written to the database, NO otherwise + */ +- (BOOL)createOptEvent:(BOOL)optState { + NSMutableString *optEventString = [NSMutableString string]; + [optEventString appendString:@"{"]; + [optEventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"o" first:YES]]; + [optEventString appendString:[self formatAttributeWithName:PARAM_UUID value:[self randomUUID] first:NO ]]; + [optEventString appendString:[NSString stringWithFormat:@",\"%@\":%@", PARAM_OPT_VALUE, (optState ? @"false" : @"true") ]]; //this actually transmits the opposite of the opt state. The JSON contains whether the user is opted out, not whether the user is opted in. + [optEventString appendFormat:@",\"%@\":%ld", PARAM_CLIENT_TIME, (long)[self currentTimestamp]]; + [optEventString appendString:@"}\n"]; + + BOOL success = [[LocalyticsDatabase sharedLocalyticsDatabase] addEventWithBlobString:[[optEventString copy] autorelease]]; + return success; +} + +/* + @method saveApplicationFlowAndRemoveOnResume: + @abstract Constructs an application flow blob string and writes it to the database, optionally flagging it for deletion + if the session is resumed. + @param removeOnResume YES if the application flow blob should be deleted if the session is resumed. + @return YES if the application flow event was written to the database successfully. + */ +- (BOOL)saveApplicationFlowAndRemoveOnResume:(BOOL)removeOnResume { + BOOL success = YES; + + // If there are no new events, then there is nothing additional to save. + if (self.unstagedFlowEvents.length) { + // Flows are uploaded as a distinct blob type containing arrays of new and previously-uploaded event and + // screen names. Write a flow event to the database. + NSMutableString *flowEventString = [[[NSMutableString alloc] init] autorelease]; + + // Open first level - flow blob event + [flowEventString appendString:@"{"]; + [flowEventString appendString:[self formatAttributeWithName:PARAM_DATA_TYPE value:@"f" first:YES]]; + [flowEventString appendString:[self formatAttributeWithName:PARAM_UUID value:[self randomUUID] ]]; + [flowEventString appendFormat:@",\"%@\":%ld", PARAM_SESSION_START, (long)self.lastSessionStartTimestamp]; + + // Open second level - new flow events + [flowEventString appendFormat:@",\"%@\":[", PARAM_NEW_FLOW_EVENTS]; + [flowEventString appendString:self.unstagedFlowEvents]; // Flow events are escaped in |-addFlowEventWithName:| + // Close second level - new flow events + [flowEventString appendString:@"]"]; + + // Open second level - old flow events + [flowEventString appendFormat:@",\"%@\":[", PARAM_OLD_FLOW_EVENTS]; + [flowEventString appendString:self.stagedFlowEvents]; + // Close second level - old flow events + [flowEventString appendString:@"]"]; + + // Close first level - flow blob event + [flowEventString appendString:@"}\n"]; + + success = [[LocalyticsDatabase sharedLocalyticsDatabase] addFlowEventWithBlobString:[[flowEventString copy] autorelease]]; + } + return success; +} + +// Convenience method for formatAttributeWithName which sets firstAttribute to NO since +// this is the most common way to call it. +- (NSString *)formatAttributeWithName:(NSString *)paramName value:(NSString *)paramValue { + return [self formatAttributeWithName:paramName value:paramValue first:NO]; +} + +/*! + @method formatAttributeWithName:value:firstAttribute: + @abstract Returns the given string key/value pair as a JSON string. + @param paramName The name of the parameter + @param paramValue The value of the parameter + @param firstAttribute YES if this attribute is first in an attribute list + @return a JSON string which can be dumped to the JSON file + */ +- (NSString *)formatAttributeWithName:(NSString *)paramName value:(NSString *)paramValue first:(BOOL)firstAttribute { + // The expected result is one of: + // "paramname":"paramvalue" + // "paramname":null + NSMutableString *formattedString = [NSMutableString string]; + if (!firstAttribute) { + [formattedString appendString:@","]; + } + + NSString *quotedString = @"\"%@\""; + paramName = [NSString stringWithFormat:quotedString, paramName]; + paramValue = paramValue ? [NSString stringWithFormat:quotedString, paramValue] : @"null"; + [formattedString appendFormat:@"%@:%@", paramName, paramValue]; + return [[formattedString copy] autorelease]; +} + +/*! + @method escapeString + @abstract Formats the input string so it fits nicely in a JSON document. This includes + escaping double quote and slash characters. + @return The escaped version of the input string + */ +- (NSString *)escapeString:(NSString *)input +{ + NSString *output = [input stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]; + output = [output stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]; + output = [output stringByReplacingOccurrencesOfString:@"\'" withString:@"\\\'"]; + output = [output stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; + output = [output stringByReplacingOccurrencesOfString:@"\t" withString:@"\\t"]; + output = [output stringByReplacingOccurrencesOfString:@"\b" withString:@"\\b"]; + output = [output stringByReplacingOccurrencesOfString:@"\r" withString:@"\\r"]; + output = [output stringByReplacingOccurrencesOfString:@"\f" withString:@"\\f"]; + output = [output stringByReplacingOccurrencesOfString:@"\v" withString:@"\\v"]; + return output; +} + +- (void)applicationDidEnterBackground:(NSNotification *)notification +{ + [self logMessage:@"Application entered the background."]; + + // Continue executing until critical blocks finish executing or background time runs out, whichever comes first. + UIApplication *application = (UIApplication *)[notification object]; + __block UIBackgroundTaskIdentifier taskID = [application beginBackgroundTaskWithExpirationHandler:^{ + // Synchronize with the main queue in case the the tasks finish at the same time as the expiration handler. + dispatch_async(dispatch_get_main_queue(), ^{ + if (taskID != UIBackgroundTaskInvalid) { + [self logMessage:@"Failed to finish executing critical tasks. Cleaning up."]; + [application endBackgroundTask:taskID]; + taskID = UIBackgroundTaskInvalid; + } + }); + }]; + + // Critical tasks have finished. Expire the background task. + dispatch_group_notify(_criticalGroup, dispatch_get_main_queue(), ^{ + [self logMessage:@"Finished executing critical tasks."]; + if (taskID != UIBackgroundTaskInvalid) { + [application endBackgroundTask:taskID]; + taskID = UIBackgroundTaskInvalid; + } + }); +} + +/*! + @method logMessage + @abstract Logs a message with (localytics) prepended to it. + @param message The message to log + */ +- (void)logMessage:(NSString *)message +{ + if(DO_LOCALYTICS_LOGGING) { + NSLog(@"(localytics) %s\n", [message UTF8String]); + } +} + +#pragma mark Datapoint Functions +/*! + @method customDimensions + @abstract Returns the json blob containing the custom dimensions. Assumes this will be appended + to an existing blob and as a result prepends the results with a comma. + */ +- (NSString *)customDimensions +{ + NSMutableString *dimensions = [[[NSMutableString alloc] init] autorelease]; + + for(int i=0; i <4; i++) { + NSString *dimension = [[LocalyticsDatabase sharedLocalyticsDatabase] customDimension:i]; + if(dimension) { + [dimensions appendFormat:@",\"c%i\":\"%@\"", i, dimension]; + } + } + + return [[dimensions copy] autorelease]; +} + +/*! + @method locationDimensions + @abstract Returns the json blob containing the current location if available or nil if no location is available. + */ +- (NSString *)locationDimensions +{ + if(lastDeviceLocation.latitude == 0 || lastDeviceLocation.longitude == 0) { + return @""; + } + + return [NSString stringWithFormat:@",\"lat\":%f,\"lng\":%f", + lastDeviceLocation.latitude, + lastDeviceLocation.longitude]; + + + return [NSString stringWithFormat:@"%lf", lastDeviceLocation.latitude]; +} + +/*! + @method macAddress + @abstract Returns the macAddress of this device. + */ +- (NSString *)macAddress +{ + NSMutableString* result = [NSMutableString string]; + + BOOL success; + struct ifaddrs* addrs; + const struct ifaddrs* cursor; + const struct sockaddr_dl* dlAddr; + const uint8_t * base; + int i; + + success = (getifaddrs(&addrs) == 0); + if(success) + { + cursor = addrs; + while(cursor != NULL) + { + if((cursor->ifa_addr->sa_family == AF_LINK) && (((const struct sockaddr_dl *) cursor->ifa_addr)->sdl_type == IFT_ETHER)) + { + dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr; + base = (const uint8_t *) &dlAddr->sdl_data[dlAddr->sdl_nlen]; + + for(i=0; isdl_alen; i++) + { + if(i != 0) { + [result appendString:@":"]; + } + [result appendFormat:@"%02x", base[i]]; + } + break; + } + cursor = cursor->ifa_next; + } + freeifaddrs(addrs); + } + + return result; +} + +/*! + @method hashString + @abstract SHA1 Hashes a string + */ +- (NSString *)hashString:(NSString *)input +{ + NSData *stringBytes = [input dataUsingEncoding: NSUTF8StringEncoding]; + unsigned char digest[CC_SHA1_DIGEST_LENGTH]; + + if (CC_SHA1([stringBytes bytes], [stringBytes length], digest)) { + NSMutableString* hashedUUID = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; + for(int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) { + [hashedUUID appendFormat:@"%02x", digest[i]]; + } + return hashedUUID; + } + + return nil; +} + +/*! + @method randomUUID + @abstract Generates a random UUID + @return NSString containing the new UUID + */ +- (NSString *)randomUUID { + CFUUIDRef theUUID = CFUUIDCreate(NULL); + CFStringRef stringUUID = CFUUIDCreateString(NULL, theUUID); + CFRelease(theUUID); + return [(NSString *)stringUUID autorelease]; +} + +/*! + @method installationId + @abstract Looks in user preferences for an ID unique to this installation. If one is not + found it checks if one happens to be in the database (carroyover from older version of the db) + if not, it generates one. + @return A string uniquely identifying this installation of this app + */ +- (NSString *) installationId { + NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; + NSString *installId = [prefs stringForKey:PREFERENCES_KEY]; + + if(installId == nil) + { + [self logMessage:@"Install ID not found in preferences, checking DB"]; + installId = [[LocalyticsDatabase sharedLocalyticsDatabase] installId]; + } + + // If it hasn't been found yet, generate a new one. + if(installId == nil) + { + [self logMessage:@"Install ID not find one in database, generating a new one."]; + installId = [self randomUUID]; + } + + // Store the newly generated installId + [prefs setObject:installId forKey:PREFERENCES_KEY]; + [[NSUserDefaults standardUserDefaults] synchronize]; + + return installId; +} + + +/*! + @method uniqueDeviceIdentifier + @abstract A unique device identifier is a hash value composed from various hardware identifiers such + as the device’s serial number. It is guaranteed to be unique for every device but cannot + be tied to a user account. [UIDevice Class Reference] + @return An 1-way hashed identifier unique to this device. + */ +- (NSString *)uniqueDeviceIdentifier { + + NSString *systemId = nil; + // We collect it as long as it is available along with a randomly generated ID. + // This way, when this becomes unavailable we can map existing users so the + // new vs returning counts do not break. + //only do this if the OS is less than 6.0 + if (([[[UIDevice currentDevice] systemVersion] floatValue] < 6.0f)) { + SEL udidSelector = NSSelectorFromString(@"uniqueIdentifier"); + if ([[UIDevice currentDevice] respondsToSelector:udidSelector]) { + systemId = [[UIDevice currentDevice] performSelector:udidSelector]; + } + } + return systemId; +} + + +/*! + @method advertisingIdentifier + @abstract An alphanumeric string unique to each device, used for advertising only. + From UIDevice documentation. + + @return An identifier unique to this device. + */ +- (NSString *)advertisingIdentifier { + NSString *adId = nil; + SEL adidSelector = NSSelectorFromString(@"identifierForAdvertising"); + if ([[UIDevice currentDevice] respondsToSelector:adidSelector]) { + adId = [[[UIDevice currentDevice] performSelector:adidSelector] performSelector:NSSelectorFromString(@"UUIDString")]; + } + return adId; +} + + +/*! + @method appVersion + @abstract Gets the pretty string for this application's version. + @return The application's version as a pretty string + */ +- (NSString *)appVersion { + return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; +} + +/*! + @method currentTimestamp + @abstract Gets the current time as seconds since Unix epoch. + @return an NSTimeInterval time. + */ +- (NSTimeInterval)currentTimestamp { + return [[NSDate date] timeIntervalSince1970]; +} + +/*! + @method isDeviceJailbroken + @abstract checks for the existance of apt to determine whether the user is running any + of the jailbroken app sources. + @return whether or not the device is jailbroken. + */ +- (BOOL) isDeviceJailbroken { + NSFileManager *sessionFileManager = [NSFileManager defaultManager]; + return [sessionFileManager fileExistsAtPath:PATH_TO_APT]; +} + +/*! + @method deviceModel + @abstract Gets the device model string. + @return a platform string identifying the device + */ +- (NSString *)deviceModel { + char *buffer[256] = { 0 }; + size_t size = sizeof(buffer); + sysctlbyname("hw.machine", buffer, &size, NULL, 0); + NSString *platform = [NSString stringWithCString:(const char*)buffer + encoding:NSUTF8StringEncoding]; + return platform; +} + +/*! + @method modelSizeString + @abstract Checks how much disk space is reported and uses that to determine the model + @return A string identifying the model, e.g. 8GB, 16GB, etc + */ +- (NSString *) modelSizeString { + +#if TARGET_IPHONE_SIMULATOR + return @"simulator"; +#endif + + // User partition + NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSDictionary *stats = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[path lastObject] error:nil]; + uint64_t user = [[stats objectForKey:NSFileSystemSize] longLongValue]; + + // System partition + path = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSSystemDomainMask, YES); + stats = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[path lastObject] error:nil]; + uint64_t system = [[stats objectForKey:NSFileSystemSize] longLongValue]; + + // Add up and convert to gigabytes + // TODO: seem to be missing a system partiton or two... + NSInteger size = (user + system) >> 30; + + // Find nearest power of 2 (eg, 1,2,4,8,16,32,etc). Over 64 and we return 0 + for (NSInteger gig = 1; gig < 257; gig = gig << 1) { + if (size < gig) + return [NSString stringWithFormat:@"%dGB", gig]; + } + return nil; +} + +/*! + @method availableMemory + @abstract Reports how much memory is available + @return A double containing the available free memory + */ +- (double)availableMemory { + double result = NSNotFound; + vm_statistics_data_t stats; + mach_msg_type_number_t count = HOST_VM_INFO_COUNT; + if (!host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&stats, &count)) + result = vm_page_size * stats.free_count; + + return result; +} + + +#pragma mark System Functions ++ (id)allocWithZone:(NSZone *)zone { + @synchronized(self) { + if (_sharedLocalyticsSession == nil) { + _sharedLocalyticsSession = [super allocWithZone:zone]; + return _sharedLocalyticsSession; + } + } + // returns nil on subsequent allocations + return nil; +} + +- (id)copyWithZone:(NSZone *)zone { + return self; +} + +- (id)retain { + return self; +} + +- (unsigned)retainCount { + // maximum value of an unsigned int - prevents additional retains for the class + return UINT_MAX; +} + +- (oneway void)release { + // ignore release commands +} + +- (id)autorelease { + return self; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil]; + + dispatch_release(_criticalGroup); + dispatch_release(_queue); + [_sessionUUID release]; + [_applicationKey release]; + [_sessionCloseTime release]; + [_unstagedFlowEvents release]; + [_stagedFlowEvents release]; + [_screens release]; + [_sharedLocalyticsSession release]; + + [super dealloc]; +} + +#pragma mark - AMP stub +- (void)ampTrigger:(NSString *)event { + //do nothing +} + + +@end diff --git a/Localytics/LocalyticsUploader.h b/Localytics/LocalyticsUploader.h index 2d6b867e..260241a3 100644 --- a/Localytics/LocalyticsUploader.h +++ b/Localytics/LocalyticsUploader.h @@ -1,5 +1,5 @@ // LocalyticsUploader.h -// Copyright (C) 2009 Char Software Inc., DBA Localytics +// Copyright (C) 2012 Char Software Inc., DBA Localytics // // This code is provided under the Localytics Modified BSD License. // A copy of this license has been distributed in a file called LICENSE @@ -9,6 +9,8 @@ #import +extern NSString * const kLocalyticsKeyResponseBody; + /*! @class LocalyticsUploader @discussion Singleton class to handle data uploads @@ -35,8 +37,28 @@ writing data regardless of whether or not the upload succeeds. Files which have been renamed still count towards the total number of Localytics files which can be stored on the disk. + + This version of the method now just calls the second version of it with a nil target and NULL callback method. @param localyticsApplicationKey the Localytics application ID + @param useHTTPS Flag determining whether HTTP or HTTPS is used for the post URL. + @param installId Install id passed to the server in the x-install-id header field. */ -- (void)uploaderWithApplicationKey:(NSString *)localyticsApplicationKey; +- (void)uploaderWithApplicationKey:(NSString *)localyticsApplicationKey useHTTPS:(BOOL)useHTTPS installId:(NSString *)installId; + +/*! + @method LocalyticsUploader + @abstract Creates a thread which uploads all queued header and event data. + All files starting with sessionFilePrefix are renamed, + uploaded and deleted on upload. This way the sessions can continue + writing data regardless of whether or not the upload succeeds. Files + which have been renamed still count towards the total number of Localytics + files which can be stored on the disk. + @param localyticsApplicationKey the Localytics application ID + @param useHTTPS Flag determining whether HTTP or HTTPS is used for the post URL. + @param installId Install id passed to the server in the x-install-id header field. + @param resultTarget Result target is the target for the callback method that knows how to handle response data + @param callback Callback is the method of the target class that is to be called with the data begin returned by an upload + */ +- (void)uploaderWithApplicationKey:(NSString *)localyticsApplicationKey useHTTPS:(BOOL)useHTTPS installId:(NSString *)installId resultTarget:(id)target callback:(SEL)callbackMethod; @end \ No newline at end of file diff --git a/Localytics/LocalyticsUploader.m b/Localytics/LocalyticsUploader.m index 251c8f97..0b2f6127 100644 --- a/Localytics/LocalyticsUploader.m +++ b/Localytics/LocalyticsUploader.m @@ -1,5 +1,5 @@ // LocalyticsUploader.m -// Copyright (C) 2009 Char Software Inc., DBA Localytics +// Copyright (C) 2012 Char Software Inc., DBA Localytics // // This code is provided under the Localytics Modified BSD License. // A copy of this license has been distributed in a file called LICENSE @@ -10,16 +10,25 @@ #import "LocalyticsUploader.h" #import "LocalyticsSession.h" #import "LocalyticsDatabase.h" +#import "WebserviceConstants.h" #import -#define LOCALYTICS_URL @"http://analytics.localytics.com/api/v2/applications/%@/uploads" +#ifndef LOCALYTICS_URL +#define LOCALYTICS_URL @"http://analytics.localytics.com/api/v2/applications/%@/uploads" +#endif +#ifndef LOCALYTICS_URL_SECURED +#define LOCALYTICS_URL_SECURED @"https://analytics.localytics.com/api/v2/applications/%@/uploads" +#endif static LocalyticsUploader *_sharedUploader = nil; +NSString * const kLocalyticsKeyResponseBody = @"localytics.key.responseBody"; + @interface LocalyticsUploader () - (void)finishUpload; - (NSData *)gzipDeflatedDataWithData:(NSData *)data; - (void)logMessage:(NSString *)message; +- (NSString *)uploadTimeStamp; @property (readwrite) BOOL isUploading; @@ -40,7 +49,13 @@ static LocalyticsUploader *_sharedUploader = nil; #pragma mark - Class Methods -- (void)uploaderWithApplicationKey:(NSString *)localyticsApplicationKey { +- (void)uploaderWithApplicationKey:(NSString *)localyticsApplicationKey useHTTPS:(BOOL)useHTTPS installId:(NSString *)installId +{ + [self uploaderWithApplicationKey:localyticsApplicationKey useHTTPS:useHTTPS installId:installId resultTarget:nil callback:NULL]; +} + +- (void)uploaderWithApplicationKey:(NSString *)localyticsApplicationKey useHTTPS:(BOOL)useHTTPS installId:(NSString *)installId resultTarget:(id)target callback:(SEL)callbackMethod; +{ // Do nothing if already uploading. if (self.isUploading == true) @@ -77,17 +92,26 @@ static LocalyticsUploader *_sharedUploader = nil; NSData *requestData = [blobString dataUsingEncoding:NSUTF8StringEncoding]; NSString *myString = [[[NSString alloc] initWithData:requestData encoding:NSUTF8StringEncoding] autorelease]; [self logMessage:[NSString stringWithFormat:@"Uploading data (length: %u)", [myString length]]]; + [self logMessage:myString]; // Step 2 NSData *deflatedRequestData = [[self gzipDeflatedDataWithData:requestData] retain]; [pool drain]; - NSString *apiUrlString = [NSString stringWithFormat:LOCALYTICS_URL, [localyticsApplicationKey stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; + NSString *urlStringFormat; + if (useHTTPS) { + urlStringFormat = LOCALYTICS_URL_SECURED; + } else { + urlStringFormat = LOCALYTICS_URL; + } + NSString *apiUrlString = [NSString stringWithFormat:urlStringFormat, [localyticsApplicationKey stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; NSMutableURLRequest *submitRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:apiUrlString] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0]; [submitRequest setHTTPMethod:@"POST"]; + [submitRequest setValue:[self uploadTimeStamp] forHTTPHeaderField:HEADER_CLIENT_TIME]; + [submitRequest setValue:installId forHTTPHeaderField:HEADER_INSTALL_ID]; [submitRequest setValue:@"application/x-gzip" forHTTPHeaderField:@"Content-Type"]; [submitRequest setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"]; [submitRequest setValue:[NSString stringWithFormat:@"%d", [deflatedRequestData length]] forHTTPHeaderField:@"Content-Length"]; @@ -100,7 +124,7 @@ static LocalyticsUploader *_sharedUploader = nil; @try { NSURLResponse *response = nil; NSError *responseError = nil; - [NSURLConnection sendSynchronousRequest:submitRequest returningResponse:&response error:&responseError]; + NSData *responseData = [NSURLConnection sendSynchronousRequest:submitRequest returningResponse:&response error:&responseError]; NSInteger responseStatusCode = [(NSHTTPURLResponse *)response statusCode]; if (responseError) { @@ -123,6 +147,18 @@ static LocalyticsUploader *_sharedUploader = nil; [[LocalyticsDatabase sharedLocalyticsDatabase] deleteUploadedData]; } } + + if ([responseData length] > 0) { + if (DO_LOCALYTICS_LOGGING) { + NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; + [self logMessage:[NSString stringWithFormat:@"Response body: %@", responseString]]; + [responseString release]; + } + NSDictionary *userInfo = [NSDictionary dictionaryWithObject:responseData forKey:kLocalyticsKeyResponseBody]; + if (target) { + [target performSelector:callbackMethod withObject:userInfo]; + } + } } @catch (NSException * e) {} @@ -195,6 +231,15 @@ static LocalyticsUploader *_sharedUploader = nil; } } +/*! + @method uploadTimeStamp + @abstract Gets the current time, along with local timezone, formatted as a DateTime for the webservice. + @return a DateTime of the current local time and timezone. + */ +- (NSString *)uploadTimeStamp { + return [ NSString stringWithFormat:@"%ld", (long)[[NSDate date] timeIntervalSince1970] ]; +} + #pragma mark - System Functions + (id)allocWithZone:(NSZone *)zone { @synchronized(self) { diff --git a/Localytics/UploaderThread.h b/Localytics/UploaderThread.h deleted file mode 100644 index 0b59c5a4..00000000 --- a/Localytics/UploaderThread.h +++ /dev/null @@ -1,48 +0,0 @@ -// UploaderThread.h -// Copyright (C) 2009 Char Software Inc., DBA Localytics -// -// This code is provided under the Localytics Modified BSD License. -// A copy of this license has been distributed in a file called LICENSE -// with this source code. -// -// Please visit www.localytics.com for more information. - -#import - -/*! - @class UploaderThread - @discussion Singleton class to handle data uploads - */ - -@interface UploaderThread : NSObject { - NSURLConnection *_uploadConnection; // The connection which uploads the bits - NSInteger _responseStatusCode; // The HTTP response status code for the current connection - - BOOL _isUploading; // A flag to gaurantee only one uploader instance can happen at once -} - -@property (nonatomic, retain) NSURLConnection *uploadConnection; - -@property BOOL isUploading; - -/*! - @method sharedUploaderThread - @abstract Establishes this as a Singleton Class allowing for data persistence. - The class is accessed within the code using the following syntax: - [[UploaderThread sharedUploaderThread] functionHere] - */ -+ (UploaderThread *)sharedUploaderThread; - -/*! - @method UploaderThread - @abstract Creates a thread which uploads all queued header and event data. - All files starting with sessionFilePrefix are renamed, - uploaded and deleted on upload. This way the sessions can continue - writing data regardless of whether or not the upload succeeds. Files - which have been renamed still count towards the total number of Localytics - files which can be stored on the disk. - @param localyticsApplicationKey the Localytics application ID - */ -- (void)uploaderThreadwithApplicationKey:(NSString *)localyticsApplicationKey; - -@end \ No newline at end of file diff --git a/Localytics/UploaderThread.m b/Localytics/UploaderThread.m deleted file mode 100644 index 3c04c127..00000000 --- a/Localytics/UploaderThread.m +++ /dev/null @@ -1,260 +0,0 @@ -// UploaderThread.m -// Copyright (C) 2009 Char Software Inc., DBA Localytics -// -// This code is provided under the Localytics Modified BSD License. -// A copy of this license has been distributed in a file called LICENSE -// with this source code. -// -// Please visit www.localytics.com for more information. - -#import "UploaderThread.h" -#import "LocalyticsSession.h" -#import "LocalyticsDatabase.h" -#import - -#define LOCALYTICS_URL @"http://analytics.localytics.com/api/v2/applications/%@/uploads" // url to send the - -static UploaderThread *_sharedUploaderThread = nil; - -@interface UploaderThread () -- (void)complete; -- (NSData *)gzipDeflatedDataWithData:(NSData *)data; -- (void)logMessage:(NSString *)message; -@end - -@implementation UploaderThread - -@synthesize uploadConnection = _uploadConnection; -@synthesize isUploading = _isUploading; - -#pragma mark Singleton Class -+ (UploaderThread *)sharedUploaderThread { - @synchronized(self) { - if (_sharedUploaderThread == nil) - { - _sharedUploaderThread = [[self alloc] init]; - } - } - return _sharedUploaderThread; -} - -#pragma mark Class Methods -- (void)uploaderThreadwithApplicationKey:(NSString *)localyticsApplicationKey { - - // Do nothing if already uploading. - if (self.uploadConnection != nil || self.isUploading == true) - { - [self logMessage:@"Upload already in progress. Aborting."]; - return; - } - - [self logMessage:@"Beginning upload process"]; - self.isUploading = true; - - // Prepare the data for upload. The upload could take a long time, so some effort has to be made to be sure that events - // which get written while the upload is taking place don't get lost or duplicated. To achieve this, the logic is: - // 1) Append every header row blob string and and those of its associated events to the upload string. - // 2) Deflate and upload the data. - // 3) On success, delete all blob headers and staged events. Events added while an upload is in process are not - // deleted because they are not associated a header (and cannot be until the upload completes). - - // Step 1 - NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; - - LocalyticsDatabase *db = [LocalyticsDatabase sharedLocalyticsDatabase]; - NSString *blobString = [db uploadBlobString]; - - if ([blobString length] == 0) { - // There is nothing outstanding to upload. - [self logMessage:@"Abandoning upload. There are no new events."]; - - [pool drain]; - [self complete]; - return; - } - - NSData *requestData = [blobString dataUsingEncoding:NSUTF8StringEncoding]; - NSString *myString = [[[NSString alloc] initWithData:requestData encoding:NSUTF8StringEncoding] autorelease]; - [self logMessage:@"Upload data:"]; - [self logMessage:myString]; - - // Step 2 - NSData *deflatedRequestData = [[self gzipDeflatedDataWithData:requestData] retain]; - - [pool drain]; - - NSString *apiUrlString = [NSString stringWithFormat:LOCALYTICS_URL, [localyticsApplicationKey stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; - NSMutableURLRequest *submitRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:apiUrlString] - cachePolicy:NSURLRequestReloadIgnoringCacheData - timeoutInterval:60.0]; - [submitRequest setHTTPMethod:@"POST"]; - [submitRequest setValue:@"application/x-gzip" forHTTPHeaderField:@"Content-Type"]; - [submitRequest setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"]; - [submitRequest setValue:[NSString stringWithFormat:@"%d", [deflatedRequestData length]] forHTTPHeaderField:@"Content-Length"]; - [submitRequest setHTTPBody:deflatedRequestData]; - [deflatedRequestData release]; - - // The NSURLConnection Object automatically spawns its own thread as a default behavior. - @try - { - [self logMessage:@"Spawning new thread for upload"]; - self.uploadConnection = [NSURLConnection connectionWithRequest:submitRequest delegate:self]; - - // Step 3 is handled by connectionDidFinishLoading. - } - @catch (NSException * e) - { - [self complete]; - } -} - -#pragma mark **** NSURLConnection FUNCTIONS **** - -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { - // Used to gather response data from server - Not utilized in this version -} - -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { - // Could receive multiple response callbacks, likely due to redirection. - // Record status and act only when connection completes load. - _responseStatusCode = [(NSHTTPURLResponse *)response statusCode]; -} - -- (void)connectionDidFinishLoading:(NSURLConnection *)connection { - // If the connection finished loading, the files should be deleted. While response status codes in the 5xx range - // leave upload rows intact, the default case is to delete. - if (_responseStatusCode >= 500 && _responseStatusCode < 600) - { - [self logMessage:[NSString stringWithFormat:@"Upload failed with response status code %d", _responseStatusCode]]; - } else - { - // The connection finished loading and uploaded data should be deleted. Because only one instance of the - // uploader can be running at a time it should not be possible for new upload rows to appear so there is no - // fear of deleting data which has not yet been uploaded. - [self logMessage:[NSString stringWithFormat:@"Upload completed successfully. Response code %d", _responseStatusCode]]; - [[LocalyticsDatabase sharedLocalyticsDatabase] deleteUploadData]; - } - - // Close upload session - [self complete]; -} - -- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { - // On error, simply print the error and close the uploader. We have to assume the data was not transmited - // so it is not deleted. In the event that we accidently store data which was succesfully uploaded, the - // duplicate data will be ignored by the server when it is next uploaded. - [self logMessage:[NSString stringWithFormat: - @"Error Uploading. Code: %d, Description: %s", - [error code], - [error localizedDescription]]]; - - [self complete]; -} - -/*! - @method complete - @abstract closes the upload connection and reports back to the session that the upload is complete - */ -- (void)complete { - _responseStatusCode = 0; - self.uploadConnection = nil; - self.isUploading = false; -} - -/*! - @method gzipDeflatedDataWithData - @abstract Deflates the provided data using gzip at the default compression level (6). Complete NSData gzip category available on CocoaDev. http://www.cocoadev.com/index.pl?NSDataCategory. - @return the deflated data - */ -- (NSData *)gzipDeflatedDataWithData:(NSData *)data -{ - if ([data length] == 0) return data; - - z_stream strm; - - strm.zalloc = Z_NULL; - strm.zfree = Z_NULL; - strm.opaque = Z_NULL; - strm.total_out = 0; - strm.next_in=(Bytef *)[data bytes]; - strm.avail_in = [data length]; - - // Compresssion Levels: - // Z_NO_COMPRESSION - // Z_BEST_SPEED - // Z_BEST_COMPRESSION - // Z_DEFAULT_COMPRESSION - - if (deflateInit2(&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, (15+16), 8, Z_DEFAULT_STRATEGY) != Z_OK) return nil; - - NSMutableData *compressed = [NSMutableData dataWithLength:16384]; // 16K chunks for expansion - - do { - - if (strm.total_out >= [compressed length]) - [compressed increaseLengthBy: 16384]; - - strm.next_out = [compressed mutableBytes] + strm.total_out; - strm.avail_out = [compressed length] - strm.total_out; - - deflate(&strm, Z_FINISH); - - } while (strm.avail_out == 0); - - deflateEnd(&strm); - - [compressed setLength: strm.total_out]; - return [NSData dataWithData:compressed]; -} - -/*! - @method logMessage - @abstract Logs a message with (localytics uploader) prepended to it - @param message The message to log -*/ -- (void) logMessage:(NSString *)message { - if(DO_LOCALYTICS_LOGGING) { - NSLog(@"(localytics uploader) %s\n", [message UTF8String]); - } -} - -#pragma mark System Functions -+ (id)allocWithZone:(NSZone *)zone { - @synchronized(self) { - if (_sharedUploaderThread == nil) { - _sharedUploaderThread = [super allocWithZone:zone]; - return _sharedUploaderThread; - } - } - // returns nil on subsequent allocations - return nil; -} - -- (id)copyWithZone:(NSZone *)zone { - return self; -} - -- (id)retain { - return self; -} - -- (unsigned)retainCount { - // maximum value of an unsigned int - prevents additional retains for the class - return UINT_MAX; -} - -- (oneway void)release { - // ignore release commands -} - -- (id)autorelease { - return self; -} - -- (void)dealloc { - [_uploadConnection release]; - [_sharedUploaderThread release]; - [super dealloc]; -} - -@end diff --git a/Localytics/WebserviceConstants.h b/Localytics/WebserviceConstants.h index fafdf88f..5f53f9fa 100644 --- a/Localytics/WebserviceConstants.h +++ b/Localytics/WebserviceConstants.h @@ -1,5 +1,5 @@ // WebserviceConstants.h -// Copyright (C) 2009 Char Software Inc., DBA Localytics +// Copyright (C) 2012 Char Software Inc., DBA Localytics // // This code is provided under the Localytics Modified BSD License. // A copy of this license has been distributed in a file called LICENSE @@ -11,6 +11,12 @@ // To save disk space and network bandwidth all the keywords have been // abbreviated and are exploded by the server. +/***************** + * Upload Header * + *****************/ +#define HEADER_CLIENT_TIME @"x-upload-time" +#define HEADER_INSTALL_ID @"x-install-id" + /********************* * Shared Attributes * *********************/ @@ -22,6 +28,7 @@ #define PARAM_SESSION_UUID @"su" // UUID for an existing session #define PARAM_NEW_SESSION_UUID @"u" // UUID for a new session #define PARAM_ATTRIBUTES @"attrs" // Attributes (dictionary) +#define PARAM_SESSION_ELAPSE_TIME @"sl" // Number of seconds since the previous session start /*************** * Blob Header * @@ -42,9 +49,8 @@ // PARAM_DATA_TYPE #define PARAM_APP_KEY @"au" // Localytics Application ID -#define PARAM_DEVICE_UUID @"du" // Device UUID #define PARAM_DEVICE_UUID_HASHED @"udid" // Hashed version of the UUID -#define PARAM_DEVICE_MAC @"wmac" // Hashed version of the device Mac +#define PARAM_DEVICE_ADID @"adid" // Advertising Identifier #define PARAM_INSTALL_ID @"iu" // Install ID #define PARAM_JAILBROKEN @"j" // Jailbroken (boolean) #define PARAM_LIBRARY_VERSION @"lv" // Client Version @@ -52,14 +58,11 @@ #define PARAM_DEVICE_PLATFORM @"dp" // Device Platform #define PARAM_LOCALE_LANGUAGE @"dll" // Locale Language #define PARAM_LOCALE_COUNTRY @"dlc" // Locale Country -#define PARAM_NETWORK_COUNTRY @"nc" // Network Country (iso code) // ???: Never used on iPhone. #define PARAM_DEVICE_COUNTRY @"dc" // Device Country (iso code) -#define PARAM_DEVICE_MANUFACTURER @"dma" // Device Manufacturer // ???: Never used on iPhone. Used to be "Device Make". #define PARAM_DEVICE_MODEL @"dmo" // Device Model #define PARAM_DEVICE_OS_VERSION @"dov" // Device OS Version #define PARAM_NETWORK_CARRIER @"nca" // Network Carrier -#define PARAM_DATA_CONNECTION @"dac" // Data Connection Type // ???: Never used on iPhone. -#define PARAM_OPT_VALUE @"optin" // Opt In (boolean) +#define PARAM_OPT_VALUE @"out" // Opt Out (boolean) #define PARAM_DEVICE_MEMORY @"dmem" // Device Memory /***************** diff --git a/MasterPassword/MPAppDelegate_Store.m b/MasterPassword/MPAppDelegate_Store.m index 060bb31d..abe33de5 100644 --- a/MasterPassword/MPAppDelegate_Store.m +++ b/MasterPassword/MPAppDelegate_Store.m @@ -46,11 +46,7 @@ }]; } - if (![managedObjectContext.persistentStoreCoordinator.persistentStores count]) - [managedObjectContext performBlockAndWait:^{ - managedObjectContext.persistentStoreCoordinator = [self storeManager].persistentStoreCoordinator; - }]; - + [[self storeManager] persistentStoreCoordinator]; if (![self storeManager].isReady) return nil; diff --git a/MasterPassword/iOS/MPAppDelegate.m b/MasterPassword/iOS/MPAppDelegate.m index 0524debb..3cf80efc 100644 --- a/MasterPassword/iOS/MPAppDelegate.m +++ b/MasterPassword/iOS/MPAppDelegate.m @@ -116,6 +116,7 @@ NSString *localyticsKey = [self localyticsKey]; if ([localyticsKey length]) { inf(@"Initializing Localytics"); + [LocalyticsSession sharedLocalyticsSession].enableHTTPS = YES; [[LocalyticsSession sharedLocalyticsSession] startSession:localyticsKey]; [[PearlLogger get] registerListener:^BOOL(PearlLogMessage *message) { if (message.level >= PearlLogLevelWarn) @@ -321,23 +322,11 @@ - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { - wrn(@"Received memory warning."); + inf(@"Received memory warning."); [super applicationDidReceiveMemoryWarning:application]; } -- (void)applicationDidBecomeActive:(UIApplication *)application { - - inf(@"Re-activated"); - [[MPAppDelegate get] checkConfig]; - - if (FBSession.activeSession.state == FBSessionStateCreatedOpening) - // An old Facebook Login session that wasn't finished. Clean it up. - [FBSession.activeSession close]; - - [super applicationDidBecomeActive:application]; -} - - (void)applicationDidEnterBackground:(UIApplication *)application { [[LocalyticsSession sharedLocalyticsSession] close]; @@ -369,10 +358,31 @@ - (void)applicationWillResignActive:(UIApplication *)application { inf(@"Will deactivate"); + [self saveContext]; if (![[MPiOSConfig get].rememberLogin boolValue]) [self signOutAnimated:NO]; + + [[LocalyticsSession sharedLocalyticsSession] close]; + [[LocalyticsSession sharedLocalyticsSession] upload]; + + [super applicationWillResignActive:application]; +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + + inf(@"Re-activated"); + [[MPAppDelegate get] checkConfig]; + + if (FBSession.activeSession.state == FBSessionStateCreatedOpening) + // An old Facebook Login session that wasn't finished. Clean it up. + [FBSession.activeSession close]; + + [[LocalyticsSession sharedLocalyticsSession] resume]; + [[LocalyticsSession sharedLocalyticsSession] upload]; + + [super applicationDidBecomeActive:application]; } #pragma mark - Behavior diff --git a/MasterPassword/iOS/MPAppsViewController.m b/MasterPassword/iOS/MPAppsViewController.m index 5345bc59..28277ea7 100644 --- a/MasterPassword/iOS/MPAppsViewController.m +++ b/MasterPassword/iOS/MPAppsViewController.m @@ -77,6 +77,13 @@ [super viewWillAppear:animated]; } +- (void)viewDidAppear:(BOOL)animated { + + [[LocalyticsSession sharedLocalyticsSession] tagScreen:@"Apps"]; + + [super viewDidAppear:animated]; +} + - (void)viewWillDisappear:(BOOL)animated { [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationSlide]; diff --git a/MasterPassword/iOS/MPGuideViewController.m b/MasterPassword/iOS/MPGuideViewController.m index 6f10409e..5e348b83 100644 --- a/MasterPassword/iOS/MPGuideViewController.m +++ b/MasterPassword/iOS/MPGuideViewController.m @@ -7,6 +7,7 @@ // #import "MPGuideViewController.h" +#import "LocalyticsSession.h" @implementation MPGuideViewController @@ -35,6 +36,8 @@ - (void)viewDidAppear:(BOOL)animated { + [[LocalyticsSession sharedLocalyticsSession] tagScreen:@"Guide"]; + [super viewDidAppear:animated]; } diff --git a/MasterPassword/iOS/MPMainViewController.m b/MasterPassword/iOS/MPMainViewController.m index 2d8138a4..32a7fc04 100644 --- a/MasterPassword/iOS/MPMainViewController.m +++ b/MasterPassword/iOS/MPMainViewController.m @@ -149,7 +149,7 @@ inf(@"Main will appear"); // Sometimes, the search bar gets stuck in some sort of first-responder mode that it can't get out of... - [self.searchDisplayController.searchBar resignFirstResponder]; + [[self.view.window findFirstResponderInHierarchy] resignFirstResponder]; // Needed for when we appear after a modal VC dismisses: // We can't present until the other modal VC has been fully dismissed and presenting in viewDidAppear will fail. @@ -204,6 +204,8 @@ }]; + [[LocalyticsSession sharedLocalyticsSession] tagScreen:@"Main"]; + [super viewDidAppear:animated]; } @@ -676,7 +678,7 @@ - (IBAction)action:(id)sender { - [PearlSheet showSheetWithTitle:nil message:nil viewStyle:UIActionSheetStyleAutomatic + [PearlSheet showSheetWithTitle:nil viewStyle:UIActionSheetStyleAutomatic initSheet:nil tappedButtonBlock:^(UIActionSheet *sheet, NSInteger buttonIndex) { if (buttonIndex == [sheet cancelButtonIndex]) diff --git a/MasterPassword/iOS/MPPreferencesViewController.m b/MasterPassword/iOS/MPPreferencesViewController.m index df30826e..1954728e 100644 --- a/MasterPassword/iOS/MPPreferencesViewController.m +++ b/MasterPassword/iOS/MPPreferencesViewController.m @@ -11,6 +11,7 @@ #import "MPAppDelegate.h" #import "MPAppDelegate_Key.h" #import "MPAppDelegate_Store.h" +#import "LocalyticsSession.h" @interface MPPreferencesViewController () @@ -80,6 +81,13 @@ [super viewWillAppear:animated]; } +- (void)viewDidAppear:(BOOL)animated { + + [[LocalyticsSession sharedLocalyticsSession] tagScreen:@"Preferences"]; + + [super viewDidAppear:animated]; +} + - (void)viewWillDisappear:(BOOL)animated { inf(@"Preferences will disappear"); @@ -152,6 +160,7 @@ vc.showDoneButton = NO; [self.navigationController pushViewController:vc animated:YES]; + [[LocalyticsSession sharedLocalyticsSession] tagScreen:@"Settings"]; } @end diff --git a/MasterPassword/iOS/MPTypeViewController.m b/MasterPassword/iOS/MPTypeViewController.m index 4357d025..6a02a91d 100644 --- a/MasterPassword/iOS/MPTypeViewController.m +++ b/MasterPassword/iOS/MPTypeViewController.m @@ -7,6 +7,7 @@ // #import "MPTypeViewController.h" +#import "LocalyticsSession.h" @interface MPTypeViewController () @@ -44,6 +45,8 @@ } }]; + [[LocalyticsSession sharedLocalyticsSession] tagScreen:@"Type Selection"]; + [super viewDidAppear:animated]; } diff --git a/MasterPassword/iOS/MPUnlockViewController.m b/MasterPassword/iOS/MPUnlockViewController.m index fe9f5d1f..94008290 100644 --- a/MasterPassword/iOS/MPUnlockViewController.m +++ b/MasterPassword/iOS/MPUnlockViewController.m @@ -16,6 +16,7 @@ #import "MPAppDelegate.h" #import "MPAppDelegate_Key.h" #import "MPAppDelegate_Store.h" +#import "LocalyticsSession.h" @interface MPUnlockViewController () @@ -193,6 +194,8 @@ self.uiContainer.alpha = 1; }]; + [[LocalyticsSession sharedLocalyticsSession] tagScreen:@"Unlock"]; + [super viewDidAppear:animated]; } @@ -749,7 +752,7 @@ return; [PearlSheet showSheetWithTitle:targetedUser.name - message:nil viewStyle:UIActionSheetStyleBlackTranslucent + viewStyle:UIActionSheetStyleBlackTranslucent initSheet:nil tappedButtonBlock:^(UIActionSheet *sheet, NSInteger buttonIndex) { if (buttonIndex == [sheet cancelButtonIndex]) return; @@ -823,7 +826,7 @@ - (IBAction)add:(UIButton *)sender { - [PearlSheet showSheetWithTitle:@"Follow Master Password" message:nil viewStyle:UIActionSheetStyleBlackTranslucent + [PearlSheet showSheetWithTitle:@"Follow Master Password" viewStyle:UIActionSheetStyleBlackTranslucent initSheet:nil tappedButtonBlock:^(UIActionSheet *sheet, NSInteger buttonIndex) { if (buttonIndex == [sheet cancelButtonIndex]) return;