Skip to content

Commit

Permalink
feat: AMP-66570 added IdentifyInterceptor (#423)
Browse files Browse the repository at this point in the history
* AMP-66570 added IdentifyInterceptor

* AMP-66570 fix db helper upgrade tests for v3->3 and v3->4

* AMP-66570 include intercepted identify's in uploadEvents()

* AMP-66570 code fixes, and added tests for IdenitfyInceptor. Still need to update AmplitudeTests.m

* AMP-66570 fixed intercepted property merge to standard event

* AMP-66570 added more tests

* AMP-66570 enabled identifyinterceptor by default, fixed tests, special cased group events

* AMP-66570 fix pr feedback

* AMP-66570 fixed bug with group property check, fixed tests

* AMP-66570 add test for calling setIdentifyUploadPeriodSeconds without client.initialize()

* AMP-66570 fix tvOS and macOs tests

* AMP-66570 add test for merging intercepted props with setGroup

* AMP-66570 try increasing upload treshold to fix test on tvOs
  • Loading branch information
justin-fiedler authored Feb 15, 2023
1 parent aead6e7 commit 0c7f0d4
Show file tree
Hide file tree
Showing 18 changed files with 1,188 additions and 79 deletions.
48 changes: 48 additions & 0 deletions Amplitude.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,25 @@
759E942125FBFE9200BF7C3D /* AMPBackgroundNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 759E93DA25FBF6F700BF7C3D /* AMPBackgroundNotifier.h */; settings = {ATTRIBUTES = (Public, ); }; };
759E942925FBFE9600BF7C3D /* AMPBackgroundNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 759E93DA25FBF6F700BF7C3D /* AMPBackgroundNotifier.h */; settings = {ATTRIBUTES = (Public, ); }; };
759E943125FBFEA200BF7C3D /* AMPBackgroundNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 759E93DA25FBF6F700BF7C3D /* AMPBackgroundNotifier.h */; settings = {ATTRIBUTES = (Public, ); }; };
D00A34DB298DA0EC00BA484F /* AMPIdentifyInterceptor.h in Headers */ = {isa = PBXBuildFile; fileRef = D00A34D7298DA0EB00BA484F /* AMPIdentifyInterceptor.h */; };
D00A34DC298DA0EC00BA484F /* AMPIdentifyInterceptor.h in Headers */ = {isa = PBXBuildFile; fileRef = D00A34D7298DA0EB00BA484F /* AMPIdentifyInterceptor.h */; };
D00A34DD298DA0EC00BA484F /* AMPIdentifyInterceptor.h in Headers */ = {isa = PBXBuildFile; fileRef = D00A34D7298DA0EB00BA484F /* AMPIdentifyInterceptor.h */; };
D00A34DE298DA0EC00BA484F /* AMPIdentifyInterceptor.h in Headers */ = {isa = PBXBuildFile; fileRef = D00A34D7298DA0EB00BA484F /* AMPIdentifyInterceptor.h */; };
D00A34DF298DA0EC00BA484F /* AMPEventUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D00A34D8298DA0EB00BA484F /* AMPEventUtils.h */; };
D00A34E0298DA0EC00BA484F /* AMPEventUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D00A34D8298DA0EB00BA484F /* AMPEventUtils.h */; };
D00A34E1298DA0EC00BA484F /* AMPEventUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D00A34D8298DA0EB00BA484F /* AMPEventUtils.h */; };
D00A34E2298DA0EC00BA484F /* AMPEventUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = D00A34D8298DA0EB00BA484F /* AMPEventUtils.h */; };
D00A34E3298DA0EC00BA484F /* AMPIdentifyInterceptor.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34D9298DA0EB00BA484F /* AMPIdentifyInterceptor.m */; };
D00A34E4298DA0EC00BA484F /* AMPIdentifyInterceptor.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34D9298DA0EB00BA484F /* AMPIdentifyInterceptor.m */; };
D00A34E5298DA0EC00BA484F /* AMPIdentifyInterceptor.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34D9298DA0EB00BA484F /* AMPIdentifyInterceptor.m */; };
D00A34E6298DA0EC00BA484F /* AMPIdentifyInterceptor.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34D9298DA0EB00BA484F /* AMPIdentifyInterceptor.m */; };
D00A34E7298DA0EC00BA484F /* AMPEventUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34DA298DA0EB00BA484F /* AMPEventUtils.m */; };
D00A34E8298DA0EC00BA484F /* AMPEventUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34DA298DA0EB00BA484F /* AMPEventUtils.m */; };
D00A34E9298DA0EC00BA484F /* AMPEventUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34DA298DA0EB00BA484F /* AMPEventUtils.m */; };
D00A34EA298DA0EC00BA484F /* AMPEventUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34DA298DA0EB00BA484F /* AMPEventUtils.m */; };
D00A34F02991F02400BA484F /* IdentifyInterceptorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34EB2991EBE300BA484F /* IdentifyInterceptorTests.m */; };
D00A34F12991F02700BA484F /* IdentifyInterceptorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34EB2991EBE300BA484F /* IdentifyInterceptorTests.m */; };
D00A34F22991F02800BA484F /* IdentifyInterceptorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = D00A34EB2991EBE300BA484F /* IdentifyInterceptorTests.m */; };
DC927E962616400800A708B0 /* ComodoRsaDomainValidationCA.der in Resources */ = {isa = PBXBuildFile; fileRef = DC927E952616400800A708B0 /* ComodoRsaDomainValidationCA.der */; };
DC927E972616400800A708B0 /* ComodoRsaDomainValidationCA.der in Resources */ = {isa = PBXBuildFile; fileRef = DC927E952616400800A708B0 /* ComodoRsaDomainValidationCA.der */; };
DC927E982616400800A708B0 /* ComodoRsaDomainValidationCA.der in Resources */ = {isa = PBXBuildFile; fileRef = DC927E952616400800A708B0 /* ComodoRsaDomainValidationCA.der */; };
Expand Down Expand Up @@ -353,6 +372,11 @@
759E93DA25FBF6F700BF7C3D /* AMPBackgroundNotifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AMPBackgroundNotifier.h; sourceTree = "<group>"; };
759E93DB25FBF6F700BF7C3D /* AMPBackgroundNotifier.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AMPBackgroundNotifier.m; sourceTree = "<group>"; };
91DADF8ED86FAA2D6B9D2E6B /* libPods-shared-Amplitude_tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-shared-Amplitude_tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
D00A34D7298DA0EB00BA484F /* AMPIdentifyInterceptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AMPIdentifyInterceptor.h; sourceTree = "<group>"; };
D00A34D8298DA0EB00BA484F /* AMPEventUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AMPEventUtils.h; sourceTree = "<group>"; };
D00A34D9298DA0EB00BA484F /* AMPIdentifyInterceptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AMPIdentifyInterceptor.m; sourceTree = "<group>"; };
D00A34DA298DA0EB00BA484F /* AMPEventUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AMPEventUtils.m; sourceTree = "<group>"; };
D00A34EB2991EBE300BA484F /* IdentifyInterceptorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IdentifyInterceptorTests.m; sourceTree = "<group>"; };
DC927E952616400800A708B0 /* ComodoRsaDomainValidationCA.der */ = {isa = PBXFileReference; lastKnownFileType = file; path = ComodoRsaDomainValidationCA.der; sourceTree = "<group>"; };
E2467100EE86AF0108A37E87 /* libPods-shared-Amplitude_iOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-shared-Amplitude_iOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
Expand Down Expand Up @@ -470,6 +494,10 @@
1279F8BF25244D78003DCE07 /* Amplitude */ = {
isa = PBXGroup;
children = (
D00A34D8298DA0EB00BA484F /* AMPEventUtils.h */,
D00A34DA298DA0EB00BA484F /* AMPEventUtils.m */,
D00A34D7298DA0EB00BA484F /* AMPIdentifyInterceptor.h */,
D00A34D9298DA0EB00BA484F /* AMPIdentifyInterceptor.m */,
3E2411EB26F9A46500793829 /* AMPPlan.m */,
19DD8B8C263B4B9B00CC7188 /* Public */,
759E93DA25FBF6F700BF7C3D /* AMPBackgroundNotifier.h */,
Expand Down Expand Up @@ -521,6 +549,7 @@
12C9730F24108DFF00E9CDDB /* Tests */ = {
isa = PBXGroup;
children = (
D00A34EB2991EBE300BA484F /* IdentifyInterceptorTests.m */,
3E2411F026F9A4C600793829 /* PlanTests.m */,
12C9731824108DFF00E9CDDB /* BaseTestCase.h */,
12C9731E24108DFF00E9CDDB /* BaseTestCase.m */,
Expand Down Expand Up @@ -628,6 +657,7 @@
1279FA7E2525949D003DCE07 /* ISPCertificatePinning.h in Headers */,
1213D89C24176E4700300E98 /* AmplitudeFramework.h in Headers */,
1279F91225244E8E003DCE07 /* Amplitude+SSLPinning.h in Headers */,
D00A34E0298DA0EC00BA484F /* AMPEventUtils.h in Headers */,
1279FA7B2525949D003DCE07 /* ISPPinnedNSURLSessionDelegate.h in Headers */,
3EF608CA2720E74D00133703 /* AMPServerZone.h in Headers */,
1279F91825244E8E003DCE07 /* Amplitude.h in Headers */,
Expand All @@ -638,6 +668,7 @@
3EF608D42720F52400133703 /* AMPServerZoneUtil.h in Headers */,
1279F92325244E8E003DCE07 /* AMPRevenue.h in Headers */,
1279F91325244E8E003DCE07 /* AMPURLSession.h in Headers */,
D00A34DC298DA0EC00BA484F /* AMPIdentifyInterceptor.h in Headers */,
1279F91025244E8E003DCE07 /* AMPDeviceInfo.h in Headers */,
1279F91125244E8E003DCE07 /* AMPIdentify.h in Headers */,
1279F92025244E8E003DCE07 /* AMPDatabaseHelper.h in Headers */,
Expand All @@ -657,6 +688,7 @@
1279FA7D2525949D003DCE07 /* ISPCertificatePinning.h in Headers */,
1213D89B24176E4700300E98 /* AmplitudeFramework.h in Headers */,
1279F8F425244E8D003DCE07 /* Amplitude+SSLPinning.h in Headers */,
D00A34DF298DA0EC00BA484F /* AMPEventUtils.h in Headers */,
1279FA7A2525949D003DCE07 /* ISPPinnedNSURLSessionDelegate.h in Headers */,
3EF608C92720E74D00133703 /* AMPServerZone.h in Headers */,
1279F8FA25244E8D003DCE07 /* Amplitude.h in Headers */,
Expand All @@ -667,6 +699,7 @@
3EF608D32720F52400133703 /* AMPServerZoneUtil.h in Headers */,
1279F90525244E8D003DCE07 /* AMPRevenue.h in Headers */,
1279F8F525244E8D003DCE07 /* AMPURLSession.h in Headers */,
D00A34DB298DA0EC00BA484F /* AMPIdentifyInterceptor.h in Headers */,
1279F8F225244E8D003DCE07 /* AMPDeviceInfo.h in Headers */,
1279F8F325244E8D003DCE07 /* AMPIdentify.h in Headers */,
1279F90225244E8D003DCE07 /* AMPDatabaseHelper.h in Headers */,
Expand All @@ -686,6 +719,7 @@
1213D89D24176E4700300E98 /* AmplitudeFramework.h in Headers */,
1279F93025244E8F003DCE07 /* Amplitude+SSLPinning.h in Headers */,
1279FA7C2525949D003DCE07 /* ISPPinnedNSURLSessionDelegate.h in Headers */,
D00A34E1298DA0EC00BA484F /* AMPEventUtils.h in Headers */,
1279F93625244E8F003DCE07 /* Amplitude.h in Headers */,
3EF608CB2720E74D00133703 /* AMPServerZone.h in Headers */,
1279F93325244E8F003DCE07 /* AMPConstants.h in Headers */,
Expand All @@ -696,6 +730,7 @@
3EF608D52720F52400133703 /* AMPServerZoneUtil.h in Headers */,
1279F94125244E8F003DCE07 /* AMPRevenue.h in Headers */,
1279F93125244E8F003DCE07 /* AMPURLSession.h in Headers */,
D00A34DD298DA0EC00BA484F /* AMPIdentifyInterceptor.h in Headers */,
1279F92E25244E8F003DCE07 /* AMPDeviceInfo.h in Headers */,
1279F92F25244E8F003DCE07 /* AMPIdentify.h in Headers */,
1279F93E25244E8F003DCE07 /* AMPDatabaseHelper.h in Headers */,
Expand All @@ -715,6 +750,7 @@
759E93AB25FBF44500BF7C3D /* Amplitude+SSLPinning.h in Headers */,
759E93AA25FBF44500BF7C3D /* Amplitude.h in Headers */,
759E93AE25FBF44500BF7C3D /* AMPTrackingOptions.h in Headers */,
D00A34E2298DA0EC00BA484F /* AMPEventUtils.h in Headers */,
759E93AD25FBF44500BF7C3D /* AMPRevenue.h in Headers */,
3EF608CC2720E74D00133703 /* AMPServerZone.h in Headers */,
759E93A925FBF44500BF7C3D /* AMPIdentify.h in Headers */,
Expand All @@ -725,6 +761,7 @@
759E93DC25FBF6F700BF7C3D /* AMPBackgroundNotifier.h in Headers */,
3EF608D62720F52400133703 /* AMPServerZoneUtil.h in Headers */,
759E93AC25FBF44500BF7C3D /* AmplitudePrivate.h in Headers */,
D00A34DE298DA0EC00BA484F /* AMPIdentifyInterceptor.h in Headers */,
759E93B025FBF44500BF7C3D /* AMPURLSession.h in Headers */,
759E93A825FBF44500BF7C3D /* AMPDeviceInfo.h in Headers */,
759E93A725FBF44500BF7C3D /* AMPDatabaseHelper.h in Headers */,
Expand Down Expand Up @@ -1080,7 +1117,9 @@
1279F91A25244E8E003DCE07 /* AMPUtils.m in Sources */,
3EF6090327267C9800133703 /* AMPMiddleware.m in Sources */,
1279F92625244E8E003DCE07 /* AMPDatabaseHelper.m in Sources */,
D00A34E8298DA0EC00BA484F /* AMPEventUtils.m in Sources */,
1279F92425244E8E003DCE07 /* AMPConstants.m in Sources */,
D00A34E4298DA0EC00BA484F /* AMPIdentifyInterceptor.m in Sources */,
1279F90F25244E8E003DCE07 /* AMPConfigManager.m in Sources */,
1279F92225244E8E003DCE07 /* Amplitude.m in Sources */,
1279F91B25244E8E003DCE07 /* AMPIdentify.m in Sources */,
Expand Down Expand Up @@ -1109,6 +1148,7 @@
12C973C4241244F000E9CDDB /* BaseTestCase.m in Sources */,
3E2411F626F9A4E200793829 /* PlanTests.m in Sources */,
12C973BD241244E400E9CDDB /* SessionTests.m in Sources */,
D00A34F12991F02700BA484F /* IdentifyInterceptorTests.m in Sources */,
3EF608FF272666E400133703 /* MiddlewareRunnerTests.m in Sources */,
12C973AD241244B700E9CDDB /* AmplitudeTests.m in Sources */,
3EF608E227211F8A00133703 /* ConfigManagerTests.m in Sources */,
Expand All @@ -1129,7 +1169,9 @@
3EF608D82720F64500133703 /* AMPServerZoneUtil.m in Sources */,
3E2411EC26F9A46500793829 /* AMPPlan.m in Sources */,
1279F8FC25244E8D003DCE07 /* AMPUtils.m in Sources */,
D00A34E7298DA0EC00BA484F /* AMPEventUtils.m in Sources */,
1279F8F125244E8D003DCE07 /* AMPConfigManager.m in Sources */,
D00A34E3298DA0EC00BA484F /* AMPIdentifyInterceptor.m in Sources */,
1279F8FD25244E8D003DCE07 /* AMPIdentify.m in Sources */,
1279F90125244E8D003DCE07 /* AMPURLSession.m in Sources */,
1279F8FF25244E8D003DCE07 /* AMPTrackingOptions.m in Sources */,
Expand Down Expand Up @@ -1158,6 +1200,7 @@
12C973B0241244BE00E9CDDB /* RevenueTests.m in Sources */,
12C973C1241244EF00E9CDDB /* BaseTestCase.m in Sources */,
3E2411F526F9A4E100793829 /* PlanTests.m in Sources */,
D00A34F02991F02400BA484F /* IdentifyInterceptorTests.m in Sources */,
12C973BC241244E300E9CDDB /* SessionTests.m in Sources */,
3EF608FE272666E400133703 /* MiddlewareRunnerTests.m in Sources */,
3EF608E127211F8A00133703 /* ConfigManagerTests.m in Sources */,
Expand All @@ -1178,7 +1221,9 @@
1279F93825244E8F003DCE07 /* AMPUtils.m in Sources */,
3EF6090427267C9800133703 /* AMPMiddleware.m in Sources */,
1279F94425244E8F003DCE07 /* AMPDatabaseHelper.m in Sources */,
D00A34E9298DA0EC00BA484F /* AMPEventUtils.m in Sources */,
1279F94225244E8F003DCE07 /* AMPConstants.m in Sources */,
D00A34E5298DA0EC00BA484F /* AMPIdentifyInterceptor.m in Sources */,
1279F92D25244E8F003DCE07 /* AMPConfigManager.m in Sources */,
1279F94025244E8F003DCE07 /* Amplitude.m in Sources */,
1279F93925244E8F003DCE07 /* AMPIdentify.m in Sources */,
Expand All @@ -1205,6 +1250,7 @@
12C973AB241244AF00E9CDDB /* Amplitude+Test.m in Sources */,
582516F228C075D300ECAD0D /* IngestionMetadataTests.m in Sources */,
12C973B4241244BF00E9CDDB /* RevenueTests.m in Sources */,
D00A34F22991F02800BA484F /* IdentifyInterceptorTests.m in Sources */,
3EF608E327211F8A00133703 /* ConfigManagerTests.m in Sources */,
12C973C7241244F100E9CDDB /* BaseTestCase.m in Sources */,
12C973BE241244E500E9CDDB /* SessionTests.m in Sources */,
Expand All @@ -1226,7 +1272,9 @@
759E939125FBF3DC00BF7C3D /* AMPConstants.m in Sources */,
759E939225FBF3DC00BF7C3D /* AMPDatabaseHelper.m in Sources */,
759E939325FBF3DC00BF7C3D /* AMPDeviceInfo.m in Sources */,
D00A34EA298DA0EC00BA484F /* AMPEventUtils.m in Sources */,
3EF6090527267C9800133703 /* AMPMiddleware.m in Sources */,
D00A34E6298DA0EC00BA484F /* AMPIdentifyInterceptor.m in Sources */,
759E939425FBF3DC00BF7C3D /* AMPIdentify.m in Sources */,
759E939525FBF3DC00BF7C3D /* Amplitude.m in Sources */,
759E939625FBF3DC00BF7C3D /* AMPRevenue.m in Sources */,
Expand Down
2 changes: 1 addition & 1 deletion Cartfile.resolved
Original file line number Diff line number Diff line change
@@ -1 +1 @@
github "amplitude/analytics-connector-ios" "v1.0.0"
github "amplitude/analytics-connector-ios" "v1.0.1"
2 changes: 2 additions & 0 deletions Sources/Amplitude/AMPConstants.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ extern const int kAMPEventUploadMaxBatchSize;
extern const int kAMPEventMaxCount;
extern const int kAMPEventRemoveBatchSize;
extern const int kAMPEventUploadPeriodSeconds;
extern const int kAMPIdentifyUploadPeriodSeconds;
extern const int kAMPMinIdentifyUploadPeriodSeconds;
extern const long kAMPMinTimeBetweenSessionsMillis;
extern const int kAMPMaxStringLength;
extern const int kAMPMaxPropertyKeys;
Expand Down
4 changes: 3 additions & 1 deletion Sources/Amplitude/AMPConstants.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
NSString *const kAMPDyanmicConfigEuUrl = @"https://regionconfig.eu.amplitude.com/";
NSString *const kAMPDefaultInstance = @"$default_instance";
const int kAMPApiVersion = 3;
const int kAMPDBVersion = 3;
const int kAMPDBVersion = 4;
const int kAMPDBFirstVersion = 2; // to detect if DB exists yet

#if TARGET_OS_OSX
Expand Down Expand Up @@ -69,6 +69,8 @@
const int kAMPEventUploadMaxBatchSize = 100;
const int kAMPEventRemoveBatchSize = 20;
const int kAMPEventUploadPeriodSeconds = 30; // 30 seconds
const int kAMPIdentifyUploadPeriodSeconds = 30; // 30 seconds
const int kAMPMinIdentifyUploadPeriodSeconds = 30; // 30 seconds
const long kAMPMinTimeBetweenSessionsMillis = 5 * 60 * 1000; // 5 minutes
const int kAMPMaxStringLength = 1024;
const int kAMPMaxPropertyKeys = 1000;
Expand Down
9 changes: 9 additions & 0 deletions Sources/Amplitude/AMPDatabaseHelper.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,21 +37,30 @@

- (BOOL)addEvent:(NSString *)event;
- (BOOL)addIdentify:(NSString *)identify;
- (BOOL)addInterceptedIdentify:(NSString *)identify;
- (NSMutableArray *)getEvents:(long long)upToId limit:(long long)limit;
- (NSMutableArray *)getIdentifys:(long long)upToId limit:(long long)limit;
- (NSMutableArray *)getInterceptedIdentifys:(long long)upToId limit:(long long)limit;
- (int)getEventCount;
- (int)getIdentifyCount;
- (int)getInterceptedIdentifyCount;
- (int)getTotalEventCount;
- (BOOL)removeEvents:(long long)maxId;
- (BOOL)removeIdentifys:(long long)maxIdentifyId;
- (BOOL)removeInterceptedIdentifys:(long long)maxIdentifyId;
- (BOOL)removeEvent:(long long)eventId;
- (BOOL)removeIdentify:(long long)identifyId;
- (BOOL)removeInterceptedIdentify:(long long)identifyId;
- (long long)getNthEventId:(long long)n;
- (long long)getNthIdentifyId:(long long)n;
- (long long)getNthInterceptedIdentifyId:(long long)n;

- (BOOL)insertOrReplaceKeyValue:(NSString *)key value:(NSString *)value;
- (BOOL)insertOrReplaceKeyLongValue:(NSString *)key value:(NSNumber *)value;
- (NSString *)getValue:(NSString *)key;
- (NSNumber *)getLongValue:(NSString *)key;

- (long long)getLastSequenceNumber;
- (long long)getNextSequenceNumber;

@end
Loading

0 comments on commit 0c7f0d4

Please sign in to comment.