From 6f8935231120a3bc7150bb3ff3de62915c8048f9 Mon Sep 17 00:00:00 2001 From: ijunaid Date: Tue, 17 Oct 2023 19:13:20 +0500 Subject: [PATCH 1/3] Appending app version in all api requests -- Removed metrics from RC calls --- CountlyConfig.h | 2 ++ CountlyConnectionManager.m | 3 +++ CountlyFeedbackWidget.m | 6 ++++++ CountlyFeedbacks.m | 9 +++++++++ CountlyPersistency.m | 4 ++++ CountlyRemoteConfigInternal.m | 26 +++++++++----------------- CountlyServerConfig.m | 3 +++ 7 files changed, 36 insertions(+), 17 deletions(-) diff --git a/CountlyConfig.h b/CountlyConfig.h index 2c794193..a3387672 100644 --- a/CountlyConfig.h +++ b/CountlyConfig.h @@ -94,6 +94,8 @@ extern CLYMetricKey const CLYMetricKeyLocale; extern CLYMetricKey const CLYMetricKeyHasWatch; extern CLYMetricKey const CLYMetricKeyInstalledWatchApp; +extern NSString* const kCountlyAppVersionKey; + //NOTE: Attribution keys typedef NSString* CLYAttributionKey NS_EXTENSIBLE_STRING_ENUM; extern CLYAttributionKey const CLYAttributionKeyIDFA; diff --git a/CountlyConnectionManager.m b/CountlyConnectionManager.m index 5d9392ed..359b97da 100644 --- a/CountlyConnectionManager.m +++ b/CountlyConnectionManager.m @@ -458,6 +458,9 @@ - (void)sendCrashReport:(NSString *)report immediately:(BOOL)immediately; [CountlyPersistency.sharedInstance saveToFileSync]; + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; + NSString* serverInputEndpoint = [self.host stringByAppendingString:kCountlyEndpointI]; NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:serverInputEndpoint]]; request.HTTPMethod = @"POST"; diff --git a/CountlyFeedbackWidget.m b/CountlyFeedbackWidget.m index e71e1d35..bb609a22 100644 --- a/CountlyFeedbackWidget.m +++ b/CountlyFeedbackWidget.m @@ -150,6 +150,9 @@ - (NSURLRequest *)dataRequest kCountlyFBKeyPlatform, CountlyDeviceInfo.osName, kCountlyFBKeyShown, @"1", kCountlyFBKeyWidgetID, self.ID]; + + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; @@ -185,6 +188,9 @@ - (NSURLRequest *)displayRequest kCountlyFBKeyAppVersion, CountlyDeviceInfo.appVersion, kCountlyFBKeyPlatform, CountlyDeviceInfo.osName, kCountlyFBKeyWidgetID, self.ID]; + + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; diff --git a/CountlyFeedbacks.m b/CountlyFeedbacks.m index a507a72b..290024b3 100644 --- a/CountlyFeedbacks.m +++ b/CountlyFeedbacks.m @@ -331,6 +331,9 @@ - (NSURLRequest *)widgetCheckURLRequest:(NSString *)widgetID NSString* queryString = [CountlyConnectionManager.sharedInstance queryEssentials]; queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyFBKeyWidgetID, widgetID]; + + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; @@ -361,6 +364,9 @@ - (NSURL *)widgetDisplayURL:(NSString *)widgetID queryString = [queryString stringByAppendingFormat:@"&%@=%@&%@=%@", kCountlyFBKeyWidgetID, widgetID, kCountlyFBKeyAppVersion, CountlyDeviceInfo.appVersion]; + + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; @@ -476,6 +482,9 @@ - (NSURLRequest *)feedbacksRequest kCountlyQSKeyDeviceID, CountlyDeviceInfo.sharedInstance.deviceID.cly_URLEscaped, kCountlyQSKeySDKName, CountlyCommon.sharedInstance.SDKName, kCountlyQSKeySDKVersion, CountlyCommon.sharedInstance.SDKVersion]; + + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; diff --git a/CountlyPersistency.m b/CountlyPersistency.m index 4fe0f7de..ebf89373 100644 --- a/CountlyPersistency.m +++ b/CountlyPersistency.m @@ -24,6 +24,7 @@ @implementation CountlyPersistency NSString* const kCountlyIsCustomDeviceIDKey = @"kCountlyIsCustomDeviceIDKey"; NSString* const kCountlyRemoteConfigKey = @"kCountlyRemoteConfigKey"; NSString* const kCountlyServerConfigPersistencyKey = @"kCountlyServerConfigPersistencyKey"; +NSString* const kCountlyAppVersionKey = @"av"; NSString* const kCountlyCustomCrashLogFileName = @"CountlyCustomCrash.log"; @@ -79,6 +80,9 @@ - (void)addToQueue:(NSString *)queryString if (!queryString.length || [queryString isEqual:NSNull.null]) return; + + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; @synchronized (self) { diff --git a/CountlyRemoteConfigInternal.m b/CountlyRemoteConfigInternal.m index 69c78749..fff76c89 100644 --- a/CountlyRemoteConfigInternal.m +++ b/CountlyRemoteConfigInternal.m @@ -255,15 +255,13 @@ - (NSURLRequest *)remoteConfigRequestForKeys:(NSArray *)keys omitKeys:(NSArray * queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyRCKeyOmitKeys, [omitKeys cly_JSONify]]; } - if (CountlyConsentManager.sharedInstance.consentForSessions) - { - queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyQSKeyMetrics, [CountlyDeviceInfo metrics]]; - } - if (self.enrollABOnRCDownload) { queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyRCKeyAutoOptIn, @"1"]; } + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; + queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; NSString* serverOutputSDKEndpoint = [CountlyConnectionManager.sharedInstance.host stringByAppendingFormat:@"%@%@", @@ -654,10 +652,8 @@ - (NSURLRequest *)downloadVariantsRequest queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyQSKeyMethod, kCountlyRCKeyFetchVariant]; - if (CountlyConsentManager.sharedInstance.consentForSessions) - { - queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyQSKeyMetrics, [CountlyDeviceInfo metrics]]; - } + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; @@ -783,10 +779,8 @@ - (NSURLRequest *)downloadExperimentInfoRequest queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyQSKeyMethod, kCountlyRCKeyFetchExperiments]; - if (CountlyConsentManager.sharedInstance.consentForSessions) - { - queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyQSKeyMetrics, [CountlyDeviceInfo metrics]]; - } + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; @@ -824,10 +818,8 @@ - (NSURLRequest *)enrollInVarianRequestForKey:(NSString *)key variantName:(NSStr queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyRCKeyVariant, variantName.cly_URLEscaped]; } - if (CountlyConsentManager.sharedInstance.consentForSessions) - { - queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyQSKeyMetrics, [CountlyDeviceInfo metrics]]; - } + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; diff --git a/CountlyServerConfig.m b/CountlyServerConfig.m index b5a48de8..300f14e7 100644 --- a/CountlyServerConfig.m +++ b/CountlyServerConfig.m @@ -130,6 +130,9 @@ - (NSURLRequest *)serverConfigRequest kCountlyQSKeySDKName, CountlyCommon.sharedInstance.SDKName, kCountlyQSKeySDKVersion, CountlyCommon.sharedInstance.SDKVersion]; + queryString = [queryString stringByAppendingFormat:@"&%@=%@", + kCountlyAppVersionKey, CountlyDeviceInfo.appVersion]; + queryString = [CountlyConnectionManager.sharedInstance appendChecksum:queryString]; NSMutableString* URL = CountlyConnectionManager.sharedInstance.host.mutableCopy; From 2be04d3665c18507dcf1d19b9ba5a6bb3fc075bf Mon Sep 17 00:00:00 2001 From: ijunaid Date: Wed, 18 Oct 2023 11:11:18 +0500 Subject: [PATCH 2/3] Updated changelog --- CHANGELOG.md | 1 + CountlyDeviceInfo.m | 2 ++ CountlyPersistency.m | 1 - 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8f9a306..5f8b23d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - Added `requestDropAgeHours` initial config property to set a time limit after which the requests would be removed if not sent to the server - Added a call to enroll users to A/B tests when getting a remote config value: 'getValueAndEnroll' - Added a call to enroll users to A/B tests when getting all remote config values: 'getAllValuesAndEnroll' +- Added app version in all API requests. - Fixed sending '--' as carrier name due to platform changes from iOS version 16.4. This version and above will now not send any carrier information due to platform limitations. - Mitigated an issue where users could not enroll to an A/B tests if enrollment request has failed diff --git a/CountlyDeviceInfo.m b/CountlyDeviceInfo.m index de03282f..396ddc76 100644 --- a/CountlyDeviceInfo.m +++ b/CountlyDeviceInfo.m @@ -33,6 +33,8 @@ CLYMetricKey const CLYMetricKeyHasWatch = @"_has_watch"; CLYMetricKey const CLYMetricKeyInstalledWatchApp = @"_installed_watch_app"; +NSString* const kCountlyAppVersionKey = @"av"; + @interface CountlyDeviceInfo () @property (nonatomic) BOOL isInBackground; #if (TARGET_OS_IOS) diff --git a/CountlyPersistency.m b/CountlyPersistency.m index ebf89373..85b6cbb9 100644 --- a/CountlyPersistency.m +++ b/CountlyPersistency.m @@ -24,7 +24,6 @@ @implementation CountlyPersistency NSString* const kCountlyIsCustomDeviceIDKey = @"kCountlyIsCustomDeviceIDKey"; NSString* const kCountlyRemoteConfigKey = @"kCountlyRemoteConfigKey"; NSString* const kCountlyServerConfigPersistencyKey = @"kCountlyServerConfigPersistencyKey"; -NSString* const kCountlyAppVersionKey = @"av"; NSString* const kCountlyCustomCrashLogFileName = @"CountlyCustomCrash.log"; From f721d5ca6ae61fa1b6878342063ef4ff67fad375 Mon Sep 17 00:00:00 2001 From: ijunaid Date: Wed, 18 Oct 2023 16:25:39 +0500 Subject: [PATCH 3/3] Reverted metrics param for 'remoteConfigRequestForKeys' call --- CountlyRemoteConfigInternal.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CountlyRemoteConfigInternal.m b/CountlyRemoteConfigInternal.m index fff76c89..0854e76b 100644 --- a/CountlyRemoteConfigInternal.m +++ b/CountlyRemoteConfigInternal.m @@ -259,6 +259,11 @@ - (NSURLRequest *)remoteConfigRequestForKeys:(NSArray *)keys omitKeys:(NSArray * queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyRCKeyAutoOptIn, @"1"]; } + if (CountlyConsentManager.sharedInstance.consentForSessions) + { + queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyQSKeyMetrics, [CountlyDeviceInfo metrics]]; + } + queryString = [queryString stringByAppendingFormat:@"&%@=%@", kCountlyAppVersionKey, CountlyDeviceInfo.appVersion];