From a2e178e7f2a5f91bd73c43fd6bdd8971b8895b48 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 16:38:55 +0000 Subject: [PATCH 1/6] chore(deps): bump slackapi/slack-github-action from 1.26.0 to 1.27.0 Bumps [slackapi/slack-github-action](https://github.com/slackapi/slack-github-action) from 1.26.0 to 1.27.0. - [Release notes](https://github.com/slackapi/slack-github-action/releases) - [Commits](https://github.com/slackapi/slack-github-action/compare/v1.26.0...v1.27.0) --- updated-dependencies: - dependency-name: slackapi/slack-github-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/slack-notify.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/slack-notify.yml b/.github/workflows/slack-notify.yml index c86e9b81..0b4ae379 100644 --- a/.github/workflows/slack-notify.yml +++ b/.github/workflows/slack-notify.yml @@ -11,7 +11,7 @@ jobs: steps: - name: Send message to Slack channel id: slack - uses: slackapi/slack-github-action@v1.26.0 + uses: slackapi/slack-github-action@v1.27.0 env: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} PROJECT_NAME: 'iOS SDK' From 551a1a2de0a3050d8f7f15a86fe0d706fb0e60ae Mon Sep 17 00:00:00 2001 From: Abhishek Pandey <64667840+1abhishekpandey@users.noreply.github.com> Date: Wed, 16 Oct 2024 23:19:29 +0530 Subject: [PATCH 2/6] ci: update beta github release action script (#546) Co-authored-by: Satheesh Kannan --- .github/workflows/deploy-beta-cocoapods.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/deploy-beta-cocoapods.yml b/.github/workflows/deploy-beta-cocoapods.yml index 2a74d6ff..8770a60a 100644 --- a/.github/workflows/deploy-beta-cocoapods.yml +++ b/.github/workflows/deploy-beta-cocoapods.yml @@ -7,7 +7,6 @@ jobs: deploy-cocoapods-beta: name: Beta deploy to Cocoapods runs-on: macOS-latest - if: startsWith(github.ref, 'refs/heads/beta-release/') steps: - name: Checkout source branch uses: actions/checkout@v4 From b54ed5f89d859ceb2ae8e3996a59e0ddce604d6d Mon Sep 17 00:00:00 2001 From: Abhishek Pandey <64667840+1abhishekpandey@users.noreply.github.com> Date: Wed, 16 Oct 2024 23:33:53 +0530 Subject: [PATCH 3/6] Revert "ci: update beta github release action script (#546)" (#547) This reverts commit 551a1a2de0a3050d8f7f15a86fe0d706fb0e60ae. --- .github/workflows/deploy-beta-cocoapods.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy-beta-cocoapods.yml b/.github/workflows/deploy-beta-cocoapods.yml index 8770a60a..2a74d6ff 100644 --- a/.github/workflows/deploy-beta-cocoapods.yml +++ b/.github/workflows/deploy-beta-cocoapods.yml @@ -7,6 +7,7 @@ jobs: deploy-cocoapods-beta: name: Beta deploy to Cocoapods runs-on: macOS-latest + if: startsWith(github.ref, 'refs/heads/beta-release/') steps: - name: Checkout source branch uses: actions/checkout@v4 From a71ac444393b750a9dcbe5dd094924e72f60799f Mon Sep 17 00:00:00 2001 From: Satheesh Kannan Date: Thu, 7 Nov 2024 19:16:09 +0530 Subject: [PATCH 4/6] fix: memory issue crash happening on CloudModeProcessor (#544) * chore: move the try-catch block to the specific function * chore: update beta version number * chore: update version number for beta release * chore: update version number * chore: update podfile.lock file * feat: upgrade the maximum event size limit * chore: update the version number * chore: update podfile.lock file * chore: reverse the maximum event size limit work * chore: fix the failing test case --- Podfile.lock | 4 +- Sources/Classes/RSCloudModeManager.m | 85 ++++++++++++------------- Sources/Classes/RSDBPersistentManager.m | 80 ++++++++++++----------- Tests/ContextTests.swift | 7 +- 4 files changed, 88 insertions(+), 88 deletions(-) diff --git a/Podfile.lock b/Podfile.lock index 2cf5214f..53c24735 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -3,7 +3,7 @@ PODS: - RSCrashReporter (= 1.0.1) - RudderKit (= 1.4.0) - RSCrashReporter (1.0.1) - - Rudder (1.28.1): + - Rudder (1.29.1): - MetricsReporter (= 2.0.0) - RudderKit (1.4.0) - SQLCipher (4.5.4): @@ -33,7 +33,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: MetricsReporter: 364b98791e868b10e9d512eb50af28d8c11e5cdb RSCrashReporter: 6b8376ac729b0289ebe0908553e5f56d8171f313 - Rudder: 07c2c7f8f02a91a3c8343d7284d3b3b49f8da969 + Rudder: 731095848aee39d27ff5d0e78233aa5ad8febb0b RudderKit: d9d6997696e1642b753d8bdf94e57af643a68f03 SQLCipher: 905b145f65f349f26da9e60a19901ad24adcd381 diff --git a/Sources/Classes/RSCloudModeManager.m b/Sources/Classes/RSCloudModeManager.m index b82675aa..c98125d6 100644 --- a/Sources/Classes/RSCloudModeManager.m +++ b/Sources/Classes/RSCloudModeManager.m @@ -39,55 +39,48 @@ - (void) startCloudModeProcessor { [RSLogger logDebug:@"RSCloudModeManager: CloudModeProcessor: Starting the Cloud Mode Processor"]; int sleepCount = 0; while (YES) { - @try { - [strongSelf->lock lock]; - RSNetworkResponse* response = nil; - [strongSelf->dbPersistentManager clearOldEventsWithThreshold: strongSelf->config.dbCountThreshold]; - [RSLogger logDebug:@"RSCloudModeManager: CloudModeProcessor: Fetching events to flush to server"]; - RSDBMessage* dbMessage = [strongSelf->dbPersistentManager fetchEventsFromDB:(strongSelf->config.flushQueueSize) ForMode:CLOUDMODE]; - if ((dbMessage.messages.count >= strongSelf->config.flushQueueSize) || (dbMessage.messages.count > 0 && (sleepCount >= strongSelf->config.sleepTimeout))) { - NSString* payload = [RSCloudModeManager getPayloadFromMessages:dbMessage]; - [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: Payload: %@", payload]]; - [RSLogger logInfo:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: EventCount: %lu", (unsigned long)dbMessage.messageIds.count]]; - [RSMetricsReporter report:SDKMETRICS_CM_EVENT forMetricType:COUNT withProperties:@{SDKMETRICS_TYPE: SDKMETRICS_MESSAGES} andValue:(float)dbMessage.messages.count]; - if (payload != nil) { - response = [strongSelf->networkManager sendNetworkRequest:payload toEndpoint:BATCH_ENDPOINT withRequestMethod:POST]; - if (response.state == NETWORK_SUCCESS) { - [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: Updating status as CLOUDMODEPROCESSING DONE for events (%@)",[RSUtils getCSVStringFromArray:dbMessage.messageIds]]]; - [RSMetricsReporter report:SDKMETRICS_CM_ATTEMPT_SUCCESS forMetricType:COUNT withProperties:nil andValue:(float)dbMessage.messages.count]; - [strongSelf->dbPersistentManager updateEventsWithIds:dbMessage.messageIds withStatus:CLOUD_MODE_PROCESSING_DONE]; - [strongSelf->dbPersistentManager clearProcessedEventsFromDB]; - sleepCount = 0; - [self->backOff reset]; - } + [strongSelf->lock lock]; + RSNetworkResponse* response = nil; + [strongSelf->dbPersistentManager clearOldEventsWithThreshold: strongSelf->config.dbCountThreshold]; + [RSLogger logDebug:@"RSCloudModeManager: CloudModeProcessor: Fetching events to flush to server"]; + RSDBMessage* dbMessage = [strongSelf->dbPersistentManager fetchEventsFromDB:(strongSelf->config.flushQueueSize) ForMode:CLOUDMODE]; + if ((dbMessage.messages.count >= strongSelf->config.flushQueueSize) || (dbMessage.messages.count > 0 && (sleepCount >= strongSelf->config.sleepTimeout))) { + NSString* payload = [RSCloudModeManager getPayloadFromMessages:dbMessage]; + [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: Payload: %@", payload]]; + [RSLogger logInfo:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: EventCount: %lu", (unsigned long)dbMessage.messageIds.count]]; + [RSMetricsReporter report:SDKMETRICS_CM_EVENT forMetricType:COUNT withProperties:@{SDKMETRICS_TYPE: SDKMETRICS_MESSAGES} andValue:(float)dbMessage.messages.count]; + if (payload != nil) { + response = [strongSelf->networkManager sendNetworkRequest:payload toEndpoint:BATCH_ENDPOINT withRequestMethod:POST]; + if (response.state == NETWORK_SUCCESS) { + [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: Updating status as CLOUDMODEPROCESSING DONE for events (%@)",[RSUtils getCSVStringFromArray:dbMessage.messageIds]]]; + [RSMetricsReporter report:SDKMETRICS_CM_ATTEMPT_SUCCESS forMetricType:COUNT withProperties:nil andValue:(float)dbMessage.messages.count]; + [strongSelf->dbPersistentManager updateEventsWithIds:dbMessage.messageIds withStatus:CLOUD_MODE_PROCESSING_DONE]; + [strongSelf->dbPersistentManager clearProcessedEventsFromDB]; + sleepCount = 0; + [self->backOff reset]; } } - [strongSelf->lock unlock]; - [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: cloudModeSleepCount: %d", sleepCount]]; - sleepCount += 1; - - if(response == nil) { - sleep(1); - } else if (response.state == WRONG_WRITE_KEY) { - [RSLogger logError:@"RSCloudModeManager: CloudModeProcessor: Wrong WriteKey. Aborting the Cloud Mode Processor"]; - break; - } else if (response.state == INVALID_URL) { - [RSLogger logError:@"RSCloudModeManager: CloudModeProcessor: Invalid Data Plane URL. Aborting the Cloud Mode Processor"]; - [RSMetricsReporter report:SDKMETRICS_CM_ATTEMPT_ABORT forMetricType:COUNT withProperties:@{SDKMETRICS_TYPE: SDKMETRICS_DATA_PLANE_URL_INVALID} andValue:1]; - break; - } else if (response.state == NETWORK_ERROR) { - int delay = [self->backOff nextDelay]; - [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: Retrying in: %@", [RSUtils secondsToString:delay]]]; - [RSMetricsReporter report:SDKMETRICS_CM_ATTEMPT_RETRY forMetricType:COUNT withProperties:nil andValue:1]; - sleep(delay); - } else { // To handle the status code RESOURCE_NOT_FOUND(404) & BAD_REQUEST(400) - [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: Retrying in: 1s"]]; - sleep(1); - } } - @catch (NSException *exception) { - [strongSelf->lock unlock]; - [RSLogger logError:[NSString stringWithFormat:@"RSCloudModeManager: CloudModeProcessor: Failed to flush current batch, reason: %@", exception.reason]]; + [strongSelf->lock unlock]; + [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: cloudModeSleepCount: %d", sleepCount]]; + sleepCount += 1; + + if(response == nil) { + sleep(1); + } else if (response.state == WRONG_WRITE_KEY) { + [RSLogger logError:@"RSCloudModeManager: CloudModeProcessor: Wrong WriteKey. Aborting the Cloud Mode Processor"]; + break; + } else if (response.state == INVALID_URL) { + [RSLogger logError:@"RSCloudModeManager: CloudModeProcessor: Invalid Data Plane URL. Aborting the Cloud Mode Processor"]; + [RSMetricsReporter report:SDKMETRICS_CM_ATTEMPT_ABORT forMetricType:COUNT withProperties:@{SDKMETRICS_TYPE: SDKMETRICS_DATA_PLANE_URL_INVALID} andValue:1]; + break; + } else if (response.state == NETWORK_ERROR) { + int delay = [self->backOff nextDelay]; + [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: Retrying in: %@", [RSUtils secondsToString:delay]]]; + [RSMetricsReporter report:SDKMETRICS_CM_ATTEMPT_RETRY forMetricType:COUNT withProperties:nil andValue:1]; + sleep(delay); + } else { // To handle the status code RESOURCE_NOT_FOUND(404) & BAD_REQUEST(400) + [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSCloudModeManager: CloudModeProcessor: Retrying in: 1s"]]; sleep(1); } } diff --git a/Sources/Classes/RSDBPersistentManager.m b/Sources/Classes/RSDBPersistentManager.m index 65c56d36..73811aa6 100644 --- a/Sources/Classes/RSDBPersistentManager.m +++ b/Sources/Classes/RSDBPersistentManager.m @@ -490,48 +490,54 @@ -(RSDBMessage*) fetchAllEventsFromDBForMode:(MODES) mode { } - (RSDBMessage *) getEventsFromDB :(NSString*) querySQLString { - [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSDBPersistentManager: getEventsFromDB: fetchEventSql: %@", querySQLString]]; - - const char* querySQL = [querySQLString UTF8String]; - NSMutableArray *messageIds = [NSMutableArray array]; - NSMutableArray *messages = [NSMutableArray array]; - NSMutableArray *statusList = [NSMutableArray array]; - NSMutableArray *dmProcessedList = [NSMutableArray array]; - - @synchronized (self) { - sqlite3_stmt *queryStmt = nil; - if ([database prepare_v2:querySQL nBytes:-1 ppStmt:&queryStmt pzTail:NULL] == SQLITE_OK) { - [RSLogger logDebug:@"RSDBPersistentManager: getEventsFromDB: Successfully fetched events from DB"]; - while ([database step:queryStmt] == SQLITE_ROW) { - @autoreleasepool { - int messageId = [database column_int:queryStmt i:0]; - const unsigned char* queryResultCol1 = [database column_text:queryStmt i:1]; - NSString *message = [[NSString alloc] initWithUTF8String:(char *)queryResultCol1]; - int status = [database column_int:queryStmt i:3]; - int dmProcessed = [database column_int:queryStmt i:4]; - - [messageIds addObject:[[NSString alloc] initWithFormat:@"%d", messageId]]; - [messages addObject:message]; - [statusList addObject:[NSNumber numberWithInt:status]]; - [dmProcessedList addObject:[NSNumber numberWithInt:dmProcessed]]; + @try { + [RSLogger logDebug:[[NSString alloc] initWithFormat:@"RSDBPersistentManager: getEventsFromDB: fetchEventSql: %@", querySQLString]]; + + const char* querySQL = [querySQLString UTF8String]; + NSMutableArray *messageIds = [NSMutableArray array]; + NSMutableArray *messages = [NSMutableArray array]; + NSMutableArray *statusList = [NSMutableArray array]; + NSMutableArray *dmProcessedList = [NSMutableArray array]; + + @synchronized (self) { + sqlite3_stmt *queryStmt = nil; + if ([database prepare_v2:querySQL nBytes:-1 ppStmt:&queryStmt pzTail:NULL] == SQLITE_OK) { + [RSLogger logDebug:@"RSDBPersistentManager: getEventsFromDB: Successfully fetched events from DB"]; + while ([database step:queryStmt] == SQLITE_ROW) { + @autoreleasepool { + int messageId = [database column_int:queryStmt i:0]; + const unsigned char* queryResultCol1 = [database column_text:queryStmt i:1]; + NSString *message = [[NSString alloc] initWithUTF8String:(char *)queryResultCol1]; + int status = [database column_int:queryStmt i:3]; + int dmProcessed = [database column_int:queryStmt i:4]; + + [messageIds addObject:[[NSString alloc] initWithFormat:@"%d", messageId]]; + [messages addObject:message]; + [statusList addObject:[NSNumber numberWithInt:status]]; + [dmProcessedList addObject:[NSNumber numberWithInt:dmProcessed]]; + } } + } else { + [RSLogger logError:@"RSDBPersistentManager: getEventsFromDB: Failed to fetch events from DB"]; + } + + // Finalize the SQL statement to free resources + if (queryStmt != nil) { + [database finalize:queryStmt]; } - } else { - [RSLogger logError:@"RSDBPersistentManager: getEventsFromDB: Failed to fetch events from DB"]; } - // Finalize the SQL statement to free resources - if (queryStmt != nil) { - [database finalize:queryStmt]; - } + RSDBMessage *dbMessage = [[RSDBMessage alloc] init]; + dbMessage.messageIds = messageIds; + dbMessage.messages = messages; + dbMessage.statusList = statusList; + dbMessage.dmProcessed = dmProcessedList; + return dbMessage; + + } @catch (NSException *exception) { + [RSLogger logError:[NSString stringWithFormat:@"RSDBPersistentManager: getEventsFromDB: Failed to fetch events from DB, reason: %@", exception.reason]]; + return nil; } - - RSDBMessage *dbMessage = [[RSDBMessage alloc] init]; - dbMessage.messageIds = messageIds; - dbMessage.messages = messages; - dbMessage.statusList = statusList; - dbMessage.dmProcessed = dmProcessedList; - return dbMessage; } // If mode is passed as DEVICEMODE, this function would return the total number of events which were waiting for the Device Mode Processing to be done diff --git a/Tests/ContextTests.swift b/Tests/ContextTests.swift index b2c4fbb0..7bb2926e 100644 --- a/Tests/ContextTests.swift +++ b/Tests/ContextTests.swift @@ -154,12 +154,13 @@ class ContextTests: XCTestCase { } func test_putAdvertisementId() { - context.putAdvertisementId("00000000-0000-0000-0000-000000000000") - XCTAssertEqual(context.device.advertisingId, ""); - XCTAssertFalse(context.device.adTrackingEnabled) context.putAdvertisementId("some-random-uuid"); XCTAssertEqual(context.device.advertisingId, "some-random-uuid"); XCTAssertTrue(context.device.adTrackingEnabled) + + context.putAdvertisementId("00000000-0000-0000-0000-000000000000") + XCTAssertEqual(context.device.advertisingId, "some-random-uuid"); + XCTAssertTrue(context.device.adTrackingEnabled) } func test_updateExternalIds() { From 892892ddf234b7d76abc4fa9ad2f629bb08517f7 Mon Sep 17 00:00:00 2001 From: Satheesh Kannan Date: Mon, 11 Nov 2024 12:47:18 +0530 Subject: [PATCH 5/6] feat: upgrade the maximum event size limit (#548) --- Sources/Classes/RSUtils.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/Classes/RSUtils.m b/Sources/Classes/RSUtils.m index 9b847abb..0a93a204 100644 --- a/Sources/Classes/RSUtils.m +++ b/Sources/Classes/RSUtils.m @@ -287,7 +287,7 @@ +(NSArray*) extractParamFromURL: (NSURL*) deepLinkURL{ } return queryItems != nil ? queryItems : [NSArray array]; } -unsigned int MAX_EVENT_SIZE = 32 * 1024; // 32 KB +unsigned int MAX_EVENT_SIZE = 64 * 1024; // 64 KB unsigned int MAX_BATCH_SIZE = 500 * 1024; // 500 KB + (NSString *)secondsToString:(int) delay { From 8e3c7251ffd954e97da1e60dfe01d721d48e47e6 Mon Sep 17 00:00:00 2001 From: GitHub actions Date: Mon, 11 Nov 2024 07:28:51 +0000 Subject: [PATCH 6/6] chore(release): 1.30.0 --- CHANGELOG.md | 12 ++++++++++++ README.md | 10 +++++----- Sources/Classes/Headers/RSVersion.h | 2 +- package.json | 2 +- sonar-project.properties | 2 +- 5 files changed, 20 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2aaf966f..705db858 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. +## [1.30.0](https://github.com/rudderlabs/rudder-sdk-ios/compare/v1.29.1...v1.30.0) (2024-11-11) + + +### Features + +* upgrade the maximum event size limit ([#548](https://github.com/rudderlabs/rudder-sdk-ios/issues/548)) ([892892d](https://github.com/rudderlabs/rudder-sdk-ios/commit/892892ddf234b7d76abc4fa9ad2f629bb08517f7)) + + +### Bug Fixes + +* memory issue crash happening on CloudModeProcessor ([#544](https://github.com/rudderlabs/rudder-sdk-ios/issues/544)) ([a71ac44](https://github.com/rudderlabs/rudder-sdk-ios/commit/a71ac444393b750a9dcbe5dd094924e72f60799f)) + ### [1.29.1](https://github.com/rudderlabs/rudder-sdk-ios/compare/v1.29.0...v1.29.1) (2024-10-07) diff --git a/README.md b/README.md index 9eb942c5..17a74229 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@

- +

@@ -39,7 +39,7 @@ The iOS SDK is available through [**CocoaPods**](https://cocoapods.org), [**Cart To install the SDK, simply add the following line to your Podfile: ```xcode -pod 'Rudder', '1.29.1' +pod 'Rudder', '1.30.0' ``` ### Carthage @@ -47,7 +47,7 @@ pod 'Rudder', '1.29.1' For Carthage support, add the following line to your `Cartfile`: ```xcode -github "rudderlabs/rudder-sdk-ios" "v1.29.1" +github "rudderlabs/rudder-sdk-ios" "v1.30.0" ``` > Remember to include the following code in all `.m` and `.h` files where you want to refer to or use the RudderStack SDK classes, as shown: @@ -71,7 +71,7 @@ You can also add the RudderStack iOS SDK via Swift Package Mangaer, via one of t * Enter the package repository (`git@github.com:rudderlabs/rudder-sdk-ios.git`) in the search bar. -* In **Dependency Rule**, select **Up to Next Major Version** and enter `1.29.1` as the value, as shown: +* In **Dependency Rule**, select **Up to Next Major Version** and enter `1.30.0` as the value, as shown: ![Setting dependency](https://user-images.githubusercontent.com/59817155/145574696-8c849749-13e0-40d5-aacb-3fccb5c8e67d.png) @@ -99,7 +99,7 @@ let package = Package( ], dependencies: [ // Dependencies declare other packages that this package depends on. - .package(url: "git@github.com:rudderlabs/rudder-sdk-ios.git", from: "1.29.1") + .package(url: "git@github.com:rudderlabs/rudder-sdk-ios.git", from: "1.30.0") ], targets: [ // Targets are the basic building blocks of a package. A target can define a module or a test suite. diff --git a/Sources/Classes/Headers/RSVersion.h b/Sources/Classes/Headers/RSVersion.h index cf5b4eab..51a1fbcf 100644 --- a/Sources/Classes/Headers/RSVersion.h +++ b/Sources/Classes/Headers/RSVersion.h @@ -8,6 +8,6 @@ #ifndef RSVersion_h #define RSVersion_h -NSString *const SDK_VERSION = @"1.29.1"; +NSString *const SDK_VERSION = @"1.30.0"; #endif /* RSVersion_h */ diff --git a/package.json b/package.json index fc9b2347..97c64965 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,4 @@ { - "version": "1.29.1", + "version": "1.30.0", "description": "Rudder is a platform for collecting, storing and routing customer event data to dozens of tools" } diff --git a/sonar-project.properties b/sonar-project.properties index addfe06b..579bf1b1 100644 --- a/sonar-project.properties +++ b/sonar-project.properties @@ -6,7 +6,7 @@ sonar.qualitygate.wait=false sonar.projectKey=rudderlabs_rudder-sdk-ios sonar.organization=rudderlabs sonar.projectName=RudderStack iOS SDK -sonar.projectVersion=1.29.1 +sonar.projectVersion=1.30.0 # C/C++/Objective-C related details # sonar.cfamily.compile-commands=compile_commands.json