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 all 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
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,28 @@
# Change Log
All notable changes to this project will be documented in this file.

### [Version 7.1.0](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.1.0) (January 21, 2024)

#### Added
- Adds support for triggering InApps based on first-time event filtering in multiple triggers. Now you can create campaign triggers that combine recurring and first-time events. For example: Trigger a campaign when "Charged" occurs (every time) OR "App Launched" occurs (first time only).
- Adds new user-level event log tracking system to store and manage user event history. New APIs include:
- `getUserEventLog(:)`: Get details about a specific event
- `getUserEventLogCount(:)`: Get count of times an event occurred
- `getUserLastVisitTs()`: Get timestamp of user's last app visit
- `getUserAppLaunchCount()`: Get total number of times user has launched the app
- `getUserEventLogHistory()`: Get full event history for current user

#### API Changes

- **Deprecated:** The old event tracking APIs tracked events at the device level rather than the user level, making it difficult to maintain accurate user-specific event histories, especially in multi-user scenarios. The following methods have been deprecated in favor of new user-specific event tracking APIs that provide more accurate, user-level analytics. These deprecated methods will be removed in future versions with prior notice:
- `eventGetDetail(:)`: Use `getUserEventLog()` instead for user-specific event details
- `eventGetOccurrences(:)`: Use `getUserEventLogCount()` instead for user-specific event counts
- `eventGetFirstTime(:)`: Use `getUserEventLog()` instead for user-specific first occurrence timestamp
- `eventGetLastTime(:)`: Use `getUserEventLog()` instead for user-specific last occurrence timestamp
- `userGetPreviousVisitTime()`: Use `getUserLastVisitTs()` instead for user-specific last visit timestamp
- `userGetTotalVisits()`: Use `getUserAppLaunchCount()` instead for user-specific app launch count
- `userGetEventHistory()`: Use `getUserEventLogHistory()` instead for user-specific event history

### [Version 7.0.3](https://github.com/CleverTap/clevertap-ios-sdk/releases/tag/7.0.3) (November 29, 2024)

#### Added
Expand Down
2 changes: 1 addition & 1 deletion CleverTap-iOS-SDK.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ s.ios.source_files = 'CleverTapSDK/**/*.{h,m}'
s.ios.exclude_files = 'CleverTapSDK/include/**/*.h'
s.ios.public_header_files = 'CleverTapSDK/CleverTap.h', 'CleverTapSDK/CleverTap+SSLPinning.h','CleverTapSDK/CleverTap+Inbox.h', 'CleverTapSDK/CleverTapInstanceConfig.h', 'CleverTapSDK/CleverTapBuildInfo.h', 'CleverTapSDK/CleverTapEventDetail.h', 'CleverTapSDK/CleverTapInAppNotificationDelegate.h', 'CleverTapSDK/CleverTapSyncDelegate.h', 'CleverTapSDK/CleverTapTrackedViewController.h', 'CleverTapSDK/CleverTapUTMDetail.h', 'CleverTapSDK/CleverTapJSInterface.h', 'CleverTapSDK/CleverTap+DisplayUnit.h', 'CleverTapSDK/CleverTap+FeatureFlags.h', 'CleverTapSDK/CleverTap+ProductConfig.h', 'CleverTapSDK/CleverTapPushNotificationDelegate.h', 'CleverTapSDK/CleverTapURLDelegate.h', 'CleverTapSDK/CleverTap+InAppNotifications.h', 'CleverTapSDK/CleverTap+SCDomain.h', 'CleverTapSDK/CleverTap+PushPermission.h', 'CleverTapSDK/InApps/CTLocalInApp.h', 'CleverTapSDK/CleverTap+CTVar.h', 'CleverTapSDK/ProductExperiences/CTVar.h', 'CleverTapSDK/LeanplumCT.h', 'CleverTapSDK/InApps/CustomTemplates/CTInAppTemplateBuilder.h', 'CleverTapSDK/InApps/CustomTemplates/CTAppFunctionBuilder.h', 'CleverTapSDK/InApps/CustomTemplates/CTTemplatePresenter.h', 'CleverTapSDK/InApps/CustomTemplates/CTTemplateProducer.h', 'CleverTapSDK/InApps/CustomTemplates/CTCustomTemplateBuilder.h', 'CleverTapSDK/InApps/CustomTemplates/CTCustomTemplate.h', 'CleverTapSDK/InApps/CustomTemplates/CTTemplateContext.h', 'CleverTapSDK/InApps/CustomTemplates/CTCustomTemplatesManager.h', 'CleverTapSDK/InApps/CustomTemplates/CTJsonTemplateProducer.h'
s.tvos.deployment_target = '9.0'
s.tvos.source_files = 'CleverTapSDK/*.{h,m}', 'CleverTapSDK/FileDownload/*.{h,m}', 'CleverTapSDK/ProductConfig/**/*.{h,m}', 'CleverTapSDK/FeatureFlags/**/*.{h,m}', 'CleverTapSDK/ProductExperiences/*.{h,m}', 'CleverTapSDK/Swizzling/*.{h,m}', 'CleverTapSDK/Session/*.{h,m}'
s.tvos.source_files = 'CleverTapSDK/*.{h,m}', 'CleverTapSDK/FileDownload/*.{h,m}', 'CleverTapSDK/ProductConfig/**/*.{h,m}', 'CleverTapSDK/FeatureFlags/**/*.{h,m}', 'CleverTapSDK/ProductExperiences/*.{h,m}', 'CleverTapSDK/Swizzling/*.{h,m}', 'CleverTapSDK/Session/*.{h,m}', 'CleverTapSDK/EventDatabase/*.{h,m}'
s.tvos.exclude_files = 'CleverTapSDK/include/**/*.h', 'CleverTapSDK/CleverTapJSInterface.{h,m}', 'CleverTapSDK/CTInAppNotification.{h,m}', 'CleverTapSDK/CTNotificationButton.{h,m}', 'CleverTapSDK/CTNotificationAction.{h,m}', 'CleverTapSDK/CTPushPrimerManager.{h,m}', 'CleverTapSDK/InApps/*.{h,m}', 'CleverTapSDK/InApps/**/*.{h,m}', 'CleverTapSDK/CTInAppFCManager.{h,m}', 'CleverTapSDK/CTInAppDisplayViewController.{h,m}'
s.tvos.public_header_files = 'CleverTapSDK/CleverTap.h', 'CleverTapSDK/CleverTap+SSLPinning.h', 'CleverTapSDK/CleverTapInstanceConfig.h', 'CleverTapSDK/CleverTapBuildInfo.h', 'CleverTapSDK/CleverTapEventDetail.h', 'CleverTapSDK/CleverTapSyncDelegate.h', 'CleverTapSDK/CleverTapTrackedViewController.h', 'CleverTapSDK/CleverTapUTMDetail.h', 'CleverTapSDK/CleverTap+FeatureFlags.h', 'CleverTapSDK/CleverTap+ProductConfig.h', 'CleverTapSDK/CleverTap+CTVar.h', 'CleverTapSDK/ProductExperiences/CTVar.h'
end
Loading
Loading