Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi Triggers -> Develop #395

Merged
merged 52 commits into from
Jan 22, 2025
Merged
Show file tree
Hide file tree
Changes from 43 commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
d33ebd2
- Added trigger matching for "firstTimeOnly" property.
akashvercetti Oct 30, 2024
5f0aabd
- Storing profile key as events
akashvercetti Oct 30, 2024
ecc39c6
unit tests for data store
akashvercetti Nov 5, 2024
8a42161
feat(MC-2082) - Adds new event storage
nishant-clevertap Nov 5, 2024
16604fc
Added getter methods and added unit tests for each method.
nishant-clevertap Nov 6, 2024
f37f04b
added in-memory storage for first time events
akashvercetti Nov 11, 2024
97995aa
Merge pull request #382 from CleverTap/MC-2088-evaluate-first-time-pr…
akashvercetti Nov 19, 2024
29956b7
Merge pull request #381 from CleverTap/MC-2086-evaluate-first-time-ev…
akashvercetti Nov 19, 2024
0994524
Added get event details method
nishant-clevertap Dec 2, 2024
bd61452
feat(MC-2106): Add event storage limits
nishant-clevertap Dec 2, 2024
ea62587
Added createTable at start in initWithConfig
nishant-clevertap Dec 3, 2024
e2bda03
- optimised dbHelper creation
akashvercetti Dec 3, 2024
5438d1e
updated matchOnly logic to check for profile attribute name or event …
akashvercetti Dec 3, 2024
7a886f0
Added support for database schema version
nishant-clevertap Dec 3, 2024
0598ae1
Updated query to use sqlite3 bind methods instead of NSString.
nishant-clevertap Dec 3, 2024
5f42753
Added safety null check for database is open or not before every sql …
nishant-clevertap Dec 4, 2024
560afa7
added todo to CTLocalDataStore.m to add normalisation
akashvercetti Dec 4, 2024
652b79b
Merge pull request #384 from CleverTap/MC-2090-inmemory-storage-events
akashvercetti Dec 4, 2024
7b9c9d3
Added constants to CTConstants file
nishant-clevertap Dec 4, 2024
621cc6b
Updated delete sql to use sqlite3 bind method
nishant-clevertap Dec 4, 2024
7375e2f
Merge branch 'implement_new_event_storage' into event_storage_limits
nishant-clevertap Dec 4, 2024
0520cf3
Merge pull request #391 from CleverTap/event_storage_limits
nishant-clevertap Dec 4, 2024
21b615d
Merge pull request #380 from CleverTap/implement_new_event_storage
nishant-clevertap Dec 4, 2024
98c9fe9
Merge branch 'develop' of https://github.com/CleverTap/clevertap-ios-…
nishant-clevertap Dec 5, 2024
1865952
feat(MC-2430): Normalize event names and query based on normalized ev…
nishant-clevertap Dec 6, 2024
d715758
Fixes create table is not called on fresh install
nishant-clevertap Dec 6, 2024
807149a
Added upsert method to insert event if event not exists and update wh…
nishant-clevertap Dec 6, 2024
0668652
Merge pull request #392 from CleverTap/event_database_normalization
nishant-clevertap Dec 6, 2024
2ff114b
completed todos regarding connecting the first-time only matching cod…
akashvercetti Dec 6, 2024
74c4653
addressed review comments
akashvercetti Dec 8, 2024
ac5b66c
feat(MC-2429): Add new public apis to access database methods
nishant-clevertap Dec 9, 2024
f5729bb
added mutex lock flags to the open database command to make it atomic
akashvercetti Dec 9, 2024
8f6d3fb
Merge pull request #394 from CleverTap/add_new_public_apis
nishant-clevertap Dec 9, 2024
2f139d5
Merge branch 'feature_multi_triggers' of https://github.com/CleverTap…
nishant-clevertap Dec 9, 2024
95bba9a
Updated unit test to call new api.
nishant-clevertap Dec 9, 2024
ea243f0
Merge pull request #393 from CleverTap/complete-todos
akashvercetti Dec 9, 2024
8dccc29
Removed Todos.
akashvercetti Dec 11, 2024
d9c4f30
used normalised names for the in-memory set
akashvercetti Dec 11, 2024
844c8ed
removed todo comments
akashvercetti Dec 11, 2024
66c95b0
renamed getDatabaseVersion to databaseVersion
akashvercetti Dec 11, 2024
844c08b
nil checks when fetching eventName
akashvercetti Dec 11, 2024
cf27cce
Addressed review comments.
nishant-clevertap Dec 12, 2024
2384163
- Updated database query to use same Dispatch manager serial queue to…
nishant-clevertap Dec 17, 2024
27df035
- Addressed review comments.
nishant-clevertap Jan 9, 2025
06fbb18
Made init method private and used in tests.
nishant-clevertap Jan 9, 2025
26b6d4f
- Addressed lint and formatting review comments.
nishant-clevertap Jan 21, 2025
abc4731
- Fixes potential deadlock scenario by adding semaphore only when not…
nishant-clevertap Jan 21, 2025
bd55b09
Updated version to 7.1.0
nishant-clevertap Jan 21, 2025
4f2696a
Updated version in txt file
nishant-clevertap Jan 21, 2025
a9a74f4
Added changelog
nishant-clevertap Jan 21, 2025
f7f710c
Added CTEventDatabase into tvos source file and fixed tvos build issue.
nishant-clevertap Jan 21, 2025
46d72f3
Added EventDatabase files to support SPM
nishant-clevertap Jan 21, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 36 additions & 2 deletions CleverTapSDK.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,9 @@
4808030E292EB4FB00C06E2F /* CleverTap+PushPermission.h in Headers */ = {isa = PBXBuildFile; fileRef = 4808030D292EB4FB00C06E2F /* CleverTap+PushPermission.h */; };
48080311292EB50D00C06E2F /* CTLocalInApp.h in Headers */ = {isa = PBXBuildFile; fileRef = 4808030F292EB50D00C06E2F /* CTLocalInApp.h */; settings = {ATTRIBUTES = (Public, ); }; };
48080312292EB50D00C06E2F /* CTLocalInApp.m in Sources */ = {isa = PBXBuildFile; fileRef = 48080310292EB50D00C06E2F /* CTLocalInApp.m */; };
4847D16D2CCB90E0008DC327 /* CTEventDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = 4847D16C2CCB90E0008DC327 /* CTEventDatabase.h */; };
4847D16F2CCB90F5008DC327 /* CTEventDatabase.m in Sources */ = {isa = PBXBuildFile; fileRef = 4847D16E2CCB90F5008DC327 /* CTEventDatabase.m */; };
4847D1722CDA17C2008DC327 /* CTEventDatabaseTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4847D1712CDA17C2008DC327 /* CTEventDatabaseTests.m */; };
487854072BF4BC4E00565685 /* CTFileDownloaderTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 487854062BF4BC4E00565685 /* CTFileDownloaderTests.m */; };
48A2C4B92BD67DDC006C61BC /* sampleTXTStub.txt in Resources */ = {isa = PBXBuildFile; fileRef = 48A2C4B72BD67DDB006C61BC /* sampleTXTStub.txt */; };
48A2C4BA2BD67DDC006C61BC /* samplePDFStub.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 48A2C4B82BD67DDB006C61BC /* samplePDFStub.pdf */; };
Expand All @@ -183,6 +186,7 @@
49C189A6243B13110003E4D4 /* CleverTapFeatureFlags.m in Sources */ = {isa = PBXBuildFile; fileRef = D0D4C9F22414EE6C0029477E /* CleverTapFeatureFlags.m */; };
49E2B18324178E7400AD704B /* CleverTapConfigValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 49E2B18124178E7400AD704B /* CleverTapConfigValue.m */; };
49E2B18824237DCB00AD704B /* CleverTapFeatureFlagsPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = D0D4C9F42414EE770029477E /* CleverTapFeatureFlagsPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
4E0721512D0974B6000DE9C6 /* CTLocalDataStore+Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E0721502D0974B6000DE9C6 /* CTLocalDataStore+Tests.m */; };
4E1F155227692A11009387AE /* CleverTap+Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = D02AC2E8276402CF0031C1BE /* CleverTap+Tests.m */; };
4E1F155B276B662C009387AE /* EventDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E1F155A276B662C009387AE /* EventDetail.m */; };
4E1F1562277090D6009387AE /* inapp_alert.json in Resources */ = {isa = PBXBuildFile; fileRef = 4E1F1561277090D6009387AE /* inapp_alert.json */; };
Expand Down Expand Up @@ -350,8 +354,8 @@
6B32A0AD2B9DBE31009ADC57 /* CTTemplatePresenterMock.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B32A0AC2B9DBE31009ADC57 /* CTTemplatePresenterMock.m */; };
6B32A0B02B9DC374009ADC57 /* CTTemplateArgumentTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B32A0AF2B9DC374009ADC57 /* CTTemplateArgumentTest.m */; };
6B32A0B42B9F2E8F009ADC57 /* CTTestTemplateProducer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B32A0B32B9F2E8F009ADC57 /* CTTestTemplateProducer.m */; };
6B453EFE2CF74BE2003C7A89 /* CTEventAdapterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B453EFD2CF74BE2003C7A89 /* CTEventAdapterTest.m */; };
6B453EF92CF621E3003C7A89 /* CTInAppDisplayViewControllerMock.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B453EF82CF621E3003C7A89 /* CTInAppDisplayViewControllerMock.m */; };
6B453EFE2CF74BE2003C7A89 /* CTEventAdapterTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B453EFD2CF74BE2003C7A89 /* CTEventAdapterTest.m */; };
6B4A0F912B45EF6D00A42C6D /* CTInAppTriggerManagerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B4A0F902B45EF6D00A42C6D /* CTInAppTriggerManagerTest.m */; };
6B535FB62AD56C60002A2663 /* CTMultiDelegateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B535FB42AD56C60002A2663 /* CTMultiDelegateManager.h */; };
6B535FB72AD56C60002A2663 /* CTMultiDelegateManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B535FB42AD56C60002A2663 /* CTMultiDelegateManager.h */; };
Expand Down Expand Up @@ -776,6 +780,9 @@
4808030D292EB4FB00C06E2F /* CleverTap+PushPermission.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CleverTap+PushPermission.h"; sourceTree = "<group>"; };
4808030F292EB50D00C06E2F /* CTLocalInApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CTLocalInApp.h; sourceTree = "<group>"; };
48080310292EB50D00C06E2F /* CTLocalInApp.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CTLocalInApp.m; sourceTree = "<group>"; };
4847D16C2CCB90E0008DC327 /* CTEventDatabase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CTEventDatabase.h; sourceTree = "<group>"; };
4847D16E2CCB90F5008DC327 /* CTEventDatabase.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTEventDatabase.m; sourceTree = "<group>"; };
4847D1712CDA17C2008DC327 /* CTEventDatabaseTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTEventDatabaseTests.m; sourceTree = "<group>"; };
487854062BF4BC4E00565685 /* CTFileDownloaderTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTFileDownloaderTests.m; sourceTree = "<group>"; };
48A2C4B72BD67DDB006C61BC /* sampleTXTStub.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sampleTXTStub.txt; sourceTree = "<group>"; };
48A2C4B82BD67DDB006C61BC /* samplePDFStub.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = samplePDFStub.pdf; sourceTree = "<group>"; };
Expand All @@ -788,6 +795,8 @@
4987C664251B5E79003E6BE8 /* CTImageInAppViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTImageInAppViewController.m; sourceTree = "<group>"; };
4987C667251B5F9E003E6BE8 /* CTImageInAppViewControllerPrivate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CTImageInAppViewControllerPrivate.h; sourceTree = "<group>"; };
49E2B18124178E7400AD704B /* CleverTapConfigValue.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CleverTapConfigValue.m; sourceTree = "<group>"; };
4E07214D2D09738F000DE9C6 /* CTLocalDataStore+Tests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CTLocalDataStore+Tests.h"; sourceTree = "<group>"; };
4E0721502D0974B6000DE9C6 /* CTLocalDataStore+Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "CTLocalDataStore+Tests.m"; sourceTree = "<group>"; };
4E1F154E27691CA0009387AE /* CleverTapInstanceTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CleverTapInstanceTests.m; sourceTree = "<group>"; };
4E1F155027692042009387AE /* EventTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = EventTests.m; sourceTree = "<group>"; };
4E1F1559276B662B009387AE /* EventDetail.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EventDetail.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -915,9 +924,9 @@
6B32A0B12B9F2A75009ADC57 /* CTCustomTemplatesManager+Tests.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CTCustomTemplatesManager+Tests.h"; sourceTree = "<group>"; };
6B32A0B22B9F2E8F009ADC57 /* CTTestTemplateProducer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CTTestTemplateProducer.h; sourceTree = "<group>"; };
6B32A0B32B9F2E8F009ADC57 /* CTTestTemplateProducer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTTestTemplateProducer.m; sourceTree = "<group>"; };
6B453EFD2CF74BE2003C7A89 /* CTEventAdapterTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTEventAdapterTest.m; sourceTree = "<group>"; };
6B453EF72CF621E3003C7A89 /* CTInAppDisplayViewControllerMock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CTInAppDisplayViewControllerMock.h; sourceTree = "<group>"; };
6B453EF82CF621E3003C7A89 /* CTInAppDisplayViewControllerMock.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTInAppDisplayViewControllerMock.m; sourceTree = "<group>"; };
6B453EFD2CF74BE2003C7A89 /* CTEventAdapterTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTEventAdapterTest.m; sourceTree = "<group>"; };
6B4A0F902B45EF6D00A42C6D /* CTInAppTriggerManagerTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTInAppTriggerManagerTest.m; sourceTree = "<group>"; };
6B535FB42AD56C60002A2663 /* CTMultiDelegateManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CTMultiDelegateManager.h; sourceTree = "<group>"; };
6B535FB52AD56C60002A2663 /* CTMultiDelegateManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CTMultiDelegateManager.m; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1314,6 +1323,23 @@
name = Frameworks;
sourceTree = "<group>";
};
4847D16B2CCB9018008DC327 /* EventDatabase */ = {
isa = PBXGroup;
children = (
4847D16C2CCB90E0008DC327 /* CTEventDatabase.h */,
4847D16E2CCB90F5008DC327 /* CTEventDatabase.m */,
);
path = EventDatabase;
sourceTree = "<group>";
};
4847D1702CDA1788008DC327 /* EventDatabase */ = {
isa = PBXGroup;
children = (
4847D1712CDA17C2008DC327 /* CTEventDatabaseTests.m */,
);
path = EventDatabase;
sourceTree = "<group>";
};
495EA4BE25554718006CADFF /* resources */ = {
isa = PBXGroup;
children = (
Expand Down Expand Up @@ -1590,6 +1616,7 @@
D02AC2D9276044F70031C1BE /* CleverTapSDKTests */ = {
isa = PBXGroup;
children = (
4847D1702CDA1788008DC327 /* EventDatabase */,
6B9E95AD2C285F2F0002D557 /* FileDownload */,
4E2CF1432AC56D8F00441E8B /* CTEncryptionTests.m */,
6A4427C32AA6513C0098866F /* InApps */,
Expand Down Expand Up @@ -1623,6 +1650,8 @@
6BD851C82B45CD1800FA5298 /* CTMultiDelegateManager+Tests.h */,
0B5564552C25946C00B87284 /* CTUserInfoMigratorTest.m */,
0B995A492C36AEDC00AF6006 /* CTLocalDataStoreTests.m */,
4E07214D2D09738F000DE9C6 /* CTLocalDataStore+Tests.h */,
4E0721502D0974B6000DE9C6 /* CTLocalDataStore+Tests.m */,
4E8739772C921D9000FDFDFD /* CTDomainFactoryTests.m */,
4E87397C2C9223B300FDFDFD /* CTDomainFactory+Tests.h */,
);
Expand Down Expand Up @@ -1717,6 +1746,7 @@
D0C7BBBF207D82C0001345EF /* CleverTapSDK */ = {
isa = PBXGroup;
children = (
4847D16B2CCB9018008DC327 /* EventDatabase */,
6B9E95B62C2AE6740002D557 /* FileDownload */,
3242D7DA2B1DDA2E00A5E37A /* PrivacyInfo.xcprivacy */,
4803951A2A7ABAD200C4D254 /* CTAES.h */,
Expand Down Expand Up @@ -1983,6 +2013,7 @@
4E25E3C1278887A70008C888 /* CTIdentityRepo.h in Headers */,
071EB4F3217F6427008F0FAB /* CTInAppNotification.h in Headers */,
F9356ED42487FE4600B4F507 /* CleverTapPushNotificationDelegate.h in Headers */,
4847D16D2CCB90E0008DC327 /* CTEventDatabase.h in Headers */,
07B9453B219EA34300D4C542 /* CTInboxSimpleMessageCell.h in Headers */,
6BF5A5982ACEE22100CDED20 /* CleverTapJSInterfacePrivate.h in Headers */,
07053B7221E653E70085B44A /* UIView+CTToast.h in Headers */,
Expand Down Expand Up @@ -2524,6 +2555,7 @@
files = (
6BA3B2E12B05411C004E834B /* InAppHelper.m in Sources */,
32394C2529FA272600956058 /* CTValidatorTest.m in Sources */,
4847D1722CDA17C2008DC327 /* CTEventDatabaseTests.m in Sources */,
6BB778CE2BEE48C300A41628 /* CTCustomTemplateInAppDataTest.m in Sources */,
6BA3B2E82B07E207004E834B /* CTTriggersMatcher+Tests.m in Sources */,
6BBF05CE2C58E3FB0047E3D9 /* NSURLSessionMock.m in Sources */,
Expand Down Expand Up @@ -2579,6 +2611,7 @@
4E1F155227692A11009387AE /* CleverTap+Tests.m in Sources */,
6B9E95AC2C27164B0002D557 /* CTFileDownloadTestHelper.m in Sources */,
6A4427CD2AB8C3B10098866F /* CTInAppEvaluationManagerTest.m in Sources */,
4E0721512D0974B6000DE9C6 /* CTLocalDataStore+Tests.m in Sources */,
6B9E95B12C2864EC0002D557 /* CTFileDownloaderMock.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -2718,6 +2751,7 @@
07B94540219EA34300D4C542 /* CTInboxController.m in Sources */,
4E25E3C4278887A70008C888 /* CTLegacyIdentityRepo.m in Sources */,
078C63AA22420321001FDDB8 /* CleverTapJSInterface.m in Sources */,
4847D16F2CCB90F5008DC327 /* CTEventDatabase.m in Sources */,
4E49AE55275D24570074A774 /* CTValidationResultStack.m in Sources */,
D01A0895207EC2D400423D6F /* CleverTapInstanceConfig.m in Sources */,
071EB4C8217F6427008F0FAB /* CTDismissButton.m in Sources */,
Expand Down
5 changes: 5 additions & 0 deletions CleverTapSDK/CTConstants.h
Original file line number Diff line number Diff line change
Expand Up @@ -277,3 +277,8 @@ extern NSString *CLTAP_PROFILE_IDENTITY_KEY;
#define CLTAP_ENCRYPTION_LEVEL @"CleverTapEncryptionLevel"
#define CLTAP_ENCRYPTION_IV @"__CL3>3Rt#P__1V_"
#define CLTAP_ENCRYPTION_PII_DATA (@[@"Identity", @"Email", @"Phone", @"Name"]);

#pragma mark Constants for Event Database
#define CLTAP_DATABASE_VERSION 1
#define CLTAP_EVENT_DB_MAX_ROW_LIMIT (2048 + 256) * 5;
#define CLTAP_EVENT_DB_ROWS_TO_CLEANUP 2048 + 256;
12 changes: 12 additions & 0 deletions CleverTapSDK/CTLocalDataStore.h
nishant-clevertap marked this conversation as resolved.
Show resolved Hide resolved
nishant-clevertap marked this conversation as resolved.
Show resolved Hide resolved
nishant-clevertap marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -44,4 +44,16 @@

- (void)changeUser;

- (BOOL)isEventLoggedFirstTime:(NSString*)eventName;

- (int)readUserEventLogCount:(NSString *)eventName;

- (CleverTapEventDetail *)readUserEventLog:(NSString *)eventName;

- (NSTimeInterval)readUserEventLogFirstTs:(NSString *)eventName;

- (NSTimeInterval)readUserEventLogLastTs:(NSString *)eventName;

- (NSDictionary *)readUserEventLogs;

@end
Loading
Loading