diff --git a/Adjust.podspec b/Adjust.podspec index fc7a0578e..a8a3f2364 100644 --- a/Adjust.podspec +++ b/Adjust.podspec @@ -1,11 +1,11 @@ Pod::Spec.new do |s| s.name = "Adjust" - s.version = "4.25.1" + s.version = "4.25.2" s.summary = "This is the iOS SDK of adjust. You can read more about it at http://adjust.com." s.homepage = "https://github.com/adjust/ios_sdk" s.license = { :type => 'MIT', :file => 'MIT-LICENSE' } s.author = { "Christian Wellenbrock" => "welle@adjust.com" } - s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.25.1" } + s.source = { :git => "https://github.com/adjust/ios_sdk.git", :tag => "v4.25.2" } s.ios.deployment_target = '6.0' s.tvos.deployment_target = '9.0' s.framework = 'SystemConfiguration' diff --git a/Adjust/ADJActivityHandler.h b/Adjust/ADJActivityHandler.h index 3670ccfe3..4ff3cdd9a 100644 --- a/Adjust/ADJActivityHandler.h +++ b/Adjust/ADJActivityHandler.h @@ -155,3 +155,4 @@ @end extern NSString * const ADJiAdPackageKey; +extern NSString * const ADJAdServicesPackageKey; diff --git a/Adjust/ADJActivityHandler.m b/Adjust/ADJActivityHandler.m index 5a9d77b44..922e8e6ce 100644 --- a/Adjust/ADJActivityHandler.m +++ b/Adjust/ADJActivityHandler.m @@ -423,12 +423,12 @@ - (void)setAdServicesAttributionToken:(NSString *)token [self checkForAdServicesAttributionI:self]; }); } else { - [self sendAdServicesInfoPackage:self + [self sendAdServicesClickPackage:self token:nil errorCodeNumber:[NSNumber numberWithInteger:error.code]]; } } else { - [self sendAdServicesInfoPackage:self + [self sendAdServicesClickPackage:self token:token errorCodeNumber:nil]; } @@ -582,9 +582,9 @@ - (void)sendIad3ClickPackage:(ADJActivityHandler *)selfI [selfI.sdkClickHandler sendSdkClick:clickPackage]; } -- (void)sendAdServicesInfoPackage:(ADJActivityHandler *)selfI - token:(NSString *)token - errorCodeNumber:(NSNumber *)errorCodeNumber +- (void)sendAdServicesClickPackage:(ADJActivityHandler *)selfI + token:(NSString *)token + errorCodeNumber:(NSNumber *)errorCodeNumber { if (![selfI isEnabledI:selfI]) { return; @@ -603,7 +603,7 @@ - (void)sendAdServicesInfoPackage:(ADJActivityHandler *)selfI selfI.activityState.lastInterval = lastInterval; }]; } - ADJPackageBuilder *infoBuilder = [[ADJPackageBuilder alloc] + ADJPackageBuilder *clickBuilder = [[ADJPackageBuilder alloc] initWithDeviceInfo:selfI.deviceInfo activityState:selfI.activityState config:selfI.adjustConfig @@ -611,11 +611,11 @@ - (void)sendAdServicesInfoPackage:(ADJActivityHandler *)selfI trackingStatusManager:self.trackingStatusManager createdAt:now]; - ADJActivityPackage *infoPackage = - [infoBuilder buildInfoPackage:ADJAdServicesPackageKey - token:token - errorCodeNumber:errorCodeNumber]; - [selfI.packageHandler addPackage:infoPackage]; + ADJActivityPackage *clickPackage = + [clickBuilder buildClickPackage:ADJAdServicesPackageKey + token:token + errorCodeNumber:errorCodeNumber]; + [selfI.sdkClickHandler sendSdkClick:clickPackage]; } - (void)saveAttributionDetailsI:(ADJActivityHandler *)selfI @@ -793,8 +793,7 @@ - (void)trackAttStatusUpdateI:(ADJActivityHandler *)selfI { trackingStatusManager:self.trackingStatusManager createdAt:now]; - ADJActivityPackage *infoPackage = [infoBuilder buildInfoPackage:@"att" - token:nil errorCodeNumber:nil]; + ADJActivityPackage *infoPackage = [infoBuilder buildInfoPackage:@"att"]; [selfI.packageHandler addPackage:infoPackage]; if (selfI.adjustConfig.eventBufferingEnabled) { @@ -1721,10 +1720,21 @@ - (void)checkForiAdI:(ADJActivityHandler *)selfI { [[UIDevice currentDevice] adjCheckForiAd:selfI queue:selfI.internalQueue]; } +- (BOOL)shouldFetchAdServicesI:(ADJActivityHandler *)selfI { + if (selfI.adjustConfig.allowAdServicesInfoReading == NO) { + return NO; + } + + // Fetch if no attribution OR not sent to backend yet + return (selfI.attribution == nil || ![ADJUserDefaults getAdServicesTracked]); +} + - (void)checkForAdServicesAttributionI:(ADJActivityHandler *)selfI { if (@available(iOS 14.3, tvOS 14.3, *)) { - if (selfI.adjustConfig.allowAdServicesInfoReading == YES && selfI.attribution == nil) { - [[UIDevice currentDevice] adjCheckForAdServicesAttribution:selfI]; + if ([selfI shouldFetchAdServicesI:selfI]) { + NSError *error = nil; + NSString *token = [[UIDevice currentDevice] adjFetchAdServicesAttribution:&error]; + [selfI setAdServicesAttributionToken:token error:error]; } } } @@ -1948,8 +1958,7 @@ - (void)setDeviceTokenI:(ADJActivityHandler *)selfI trackingStatusManager:self.trackingStatusManager createdAt:now]; - ADJActivityPackage *infoPackage = [infoBuilder buildInfoPackage:@"push" - token:nil errorCodeNumber:nil]; + ADJActivityPackage *infoPackage = [infoBuilder buildInfoPackage:@"push"]; [selfI.packageHandler addPackage:infoPackage]; @@ -1998,8 +2007,7 @@ - (void)setPushTokenI:(ADJActivityHandler *)selfI trackingStatusManager:self.trackingStatusManager createdAt:now]; - ADJActivityPackage *infoPackage = [infoBuilder buildInfoPackage:@"push" - token:nil errorCodeNumber:nil]; + ADJActivityPackage *infoPackage = [infoBuilder buildInfoPackage:@"push"]; [selfI.packageHandler addPackage:infoPackage]; // if push token was cached, remove it diff --git a/Adjust/ADJAdditions/UIDevice+ADJAdditions.h b/Adjust/ADJAdditions/UIDevice+ADJAdditions.h index 2b3c6f70f..8e340f6b0 100644 --- a/Adjust/ADJAdditions/UIDevice+ADJAdditions.h +++ b/Adjust/ADJAdditions/UIDevice+ADJAdditions.h @@ -23,7 +23,7 @@ - (NSString *)adjVendorId; - (NSString *)adjDeviceId:(ADJDeviceInfo *)deviceInfo; - (void)adjCheckForiAd:(ADJActivityHandler *)activityHandler queue:(dispatch_queue_t)queue; -- (void)adjCheckForAdServicesAttribution:(ADJActivityHandler *)activityHandler; +- (NSString *)adjFetchAdServicesAttribution:(NSError **)errorPtr; - (void)requestTrackingAuthorizationWithCompletionHandler:(void (^)(NSUInteger status))completion; diff --git a/Adjust/ADJAdditions/UIDevice+ADJAdditions.m b/Adjust/ADJAdditions/UIDevice+ADJAdditions.m index e7bf3a103..6fba150cf 100644 --- a/Adjust/ADJAdditions/UIDevice+ADJAdditions.m +++ b/Adjust/ADJAdditions/UIDevice+ADJAdditions.m @@ -362,27 +362,30 @@ - (void)adjCheckForiAd:(ADJActivityHandler *)activityHandler queue:(dispatch_que #endif } -- (void)adjCheckForAdServicesAttribution:(ADJActivityHandler *)activityHandler { +- (NSString *)adjFetchAdServicesAttribution:(NSError **)errorPtr { id logger = [ADJAdjustFactory logger]; // [AAAttribution attributionTokenWithError:...] Class attributionClass = NSClassFromString(@"AAAttribution"); if (attributionClass == nil) { [logger warn:@"AdServices framework not found in user's app (AAAttribution not found)"]; - [activityHandler setAdServicesAttributionToken:nil - error:[NSError errorWithDomain:@"com.adjust.sdk.adServices" - code:100 - userInfo:@{@"Error reason": @"AdServices framework not found"}]]; - return; + + if (errorPtr) { + *errorPtr = [NSError errorWithDomain:@"com.adjust.sdk.adServices" + code:100 + userInfo:@{@"Error reason": @"AdServices framework not found"}]; + } + return nil; } SEL attributionTokenSelector = NSSelectorFromString(@"attributionTokenWithError:"); if (![attributionClass respondsToSelector:attributionTokenSelector]) { - [activityHandler setAdServicesAttributionToken:nil - error:[NSError errorWithDomain:@"com.adjust.sdk.adServices" - code:100 - userInfo:@{@"Error reason": @"AdServices framework not found"}]]; - return; + if (errorPtr) { + *errorPtr = [NSError errorWithDomain:@"com.adjust.sdk.adServices" + code:100 + userInfo:@{@"Error reason": @"AdServices framework not found"}]; + } + return nil; } NSMethodSignature *attributionTokenMethodSignature = [attributionClass methodSignatureForSelector:attributionTokenSelector]; @@ -397,15 +400,17 @@ - (void)adjCheckForAdServicesAttribution:(ADJActivityHandler *)activityHandler { if (error) { [logger error:@"Error while retrieving AdServices attribution token: %@", error]; - [activityHandler setAdServicesAttributionToken:nil error:error]; - return; + if (errorPtr) { + *errorPtr = error; + } + return nil; } NSString * __unsafe_unretained tmpToken = nil; [tokenInvocation getReturnValue:&tmpToken]; NSString *token = tmpToken; - [activityHandler setAdServicesAttributionToken:token error:nil]; + return token; } - (BOOL)setiAdWithDetails:(ADJActivityHandler *)activityHandler diff --git a/Adjust/ADJPackageBuilder.h b/Adjust/ADJPackageBuilder.h index 18bf44555..d64772fd1 100644 --- a/Adjust/ADJPackageBuilder.h +++ b/Adjust/ADJPackageBuilder.h @@ -42,14 +42,16 @@ - (ADJActivityPackage *)buildEventPackage:(ADJEvent *)event isInDelay:(BOOL)isInDelay; -- (ADJActivityPackage *)buildInfoPackage:(NSString *)infoSource - token:(NSString *)token - errorCodeNumber:(NSNumber *)errorCodeNumber; +- (ADJActivityPackage *)buildInfoPackage:(NSString *)infoSource; - (ADJActivityPackage *)buildAdRevenuePackage:(NSString *)source payload:(NSData *)payload; - (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource; +- (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource + token:(NSString *)token + errorCodeNumber:(NSNumber *)errorCodeNumber; + - (ADJActivityPackage *)buildAttributionPackage:(NSString *)initiatedBy; - (ADJActivityPackage *)buildGdprPackage; @@ -75,4 +77,12 @@ setInt:(int)value forKey:(NSString *)key; ++ (void)parameters:(NSMutableDictionary *)parameters + setDate1970:(double)value + forKey:(NSString *)key; + ++ (BOOL)isAdServicesPackage:(ADJActivityPackage *)activityPackage; + @end +// TODO change to ADJ... +extern NSString * const ADJAttributionTokenParameter; diff --git a/Adjust/ADJPackageBuilder.m b/Adjust/ADJPackageBuilder.m index 6feaa3cfd..5a71e98e5 100644 --- a/Adjust/ADJPackageBuilder.m +++ b/Adjust/ADJPackageBuilder.m @@ -15,6 +15,8 @@ #import "UIDevice+ADJAdditions.h" #import "ADJUserDefaults.h" +NSString * const ADJAttributionTokenParameter = @"attribution_token"; + @interface ADJPackageBuilder() @property (nonatomic, assign) double createdAt; @@ -92,22 +94,9 @@ - (ADJActivityPackage *)buildEventPackage:(ADJEvent *)event } - (ADJActivityPackage *)buildInfoPackage:(NSString *)infoSource - token:(NSString *)token - errorCodeNumber:(NSNumber *)errorCodeNumber { NSMutableDictionary *parameters = [self getInfoParameters:infoSource]; - if (token != nil) { - [ADJPackageBuilder parameters:parameters - setString:token - forKey:@"attribution_token"]; - } - if (errorCodeNumber != nil) { - [ADJPackageBuilder parameters:parameters - setInt:errorCodeNumber.intValue - forKey:@"error_code"]; - } - ADJActivityPackage *infoPackage = [self defaultActivityPackage]; infoPackage.path = @"/sdk_info"; infoPackage.activityKind = ADJActivityKindInfo; @@ -133,7 +122,34 @@ - (ADJActivityPackage *)buildAdRevenuePackage:(NSString *)source payload:(NSData } - (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource { + return [self buildClickPackage:clickSource extraParameters:nil]; +} + +- (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource + token:(NSString *)token + errorCodeNumber:(NSNumber *)errorCodeNumber { + + NSMutableDictionary *parameters = [NSMutableDictionary dictionary]; + + if (token != nil) { + [ADJPackageBuilder parameters:parameters + setString:token + forKey:ADJAttributionTokenParameter]; + } + if (errorCodeNumber != nil) { + [ADJPackageBuilder parameters:parameters + setInt:errorCodeNumber.intValue + forKey:@"error_code"]; + } + + return [self buildClickPackage:clickSource extraParameters:parameters]; +} + +- (ADJActivityPackage *)buildClickPackage:(NSString *)clickSource extraParameters:(NSDictionary *)extraParameters { NSMutableDictionary *parameters = [self getClickParameters:clickSource]; + if (extraParameters != nil) { + [parameters addEntriesFromDictionary:extraParameters]; + } if ([clickSource isEqualToString:ADJiAdPackageKey]) { // send iAd errors in the parameters @@ -1292,4 +1308,9 @@ + (void)parameters:(NSMutableDictionary *)parameters setData:(NSData *)value for forKey:key]; } ++ (BOOL)isAdServicesPackage:(ADJActivityPackage *)activityPackage { + NSString *source = activityPackage.parameters[@"source"]; + return ([ADJUtil isNotNull:source] && [source isEqualToString:ADJAdServicesPackageKey]); +} + @end diff --git a/Adjust/ADJSdkClickHandler.m b/Adjust/ADJSdkClickHandler.m index 309250297..a19f0886e 100644 --- a/Adjust/ADJSdkClickHandler.m +++ b/Adjust/ADJSdkClickHandler.m @@ -12,6 +12,8 @@ #import "ADJSdkClickHandler.h" #import "ADJBackoffStrategy.h" #import "ADJUserDefaults.h" +#import "ADJPackageBuilder.h" +#import "UIDevice+ADJAdditions.h" static const char * const kInternalQueueName = "com.adjust.SdkClickQueue"; @@ -144,6 +146,23 @@ - (void)sendNextSdkClickI:(ADJSdkClickHandler *)selfI { [selfI sendNextSdkClick]; return; } + + if ([ADJPackageBuilder isAdServicesPackage:sdkClickPackage]) { + // refresh token + NSString *token = [[UIDevice currentDevice] adjFetchAdServicesAttribution:nil]; + + if (token != nil && ![sdkClickPackage.parameters[ADJAttributionTokenParameter] isEqualToString:token]) { + // update token + [ADJPackageBuilder parameters:sdkClickPackage.parameters + setString:token + forKey:ADJAttributionTokenParameter]; + + // update created_at + [ADJPackageBuilder parameters:sdkClickPackage.parameters + setDate1970:[NSDate.date timeIntervalSince1970] + forKey:@"created_at"]; + } + } dispatch_block_t work = ^{ NSDictionary *sendingParameters = @{ @@ -194,6 +213,13 @@ - (void)responseCallback:(ADJResponseData *)responseData { if ([responseData.sdkClickPackage.parameters.allValues containsObject:ADJiAdPackageKey]) { // received iAd click package response, clear the errors from UserDefaults [ADJUserDefaults cleariAdErrors]; + [self.logger info:@"Received iAd click response"]; + } + + if ([ADJPackageBuilder isAdServicesPackage:responseData.sdkClickPackage]) { + // set as tracked + [ADJUserDefaults setAdServicesTracked]; + [self.logger info:@"Received Apple Ads click response"]; } [self.activityHandler finishedTracking:responseData]; diff --git a/Adjust/ADJUserDefaults.h b/Adjust/ADJUserDefaults.h index 8849702f0..e9c76acf5 100644 --- a/Adjust/ADJUserDefaults.h +++ b/Adjust/ADJUserDefaults.h @@ -51,4 +51,7 @@ + (NSDictionary *)getiAdErrors; + (void)cleariAdErrors; ++ (void)setAdServicesTracked; ++ (BOOL)getAdServicesTracked; + @end diff --git a/Adjust/ADJUserDefaults.m b/Adjust/ADJUserDefaults.m index c28db5045..ce6f4214f 100644 --- a/Adjust/ADJUserDefaults.m +++ b/Adjust/ADJUserDefaults.m @@ -16,6 +16,7 @@ static NSString * const PREFS_KEY_DEEPLINK_CLICK_TIME = @"adj_deeplink_click_time"; static NSString * const PREFS_KEY_DISABLE_THIRD_PARTY_SHARING = @"adj_disable_third_party_sharing"; static NSString * const PREFS_KEY_IAD_ERRORS = @"adj_iad_errors"; +static NSString * const PREFS_KEY_ADSERVICES_TRACKED = @"adj_adservices_tracked"; @implementation ADJUserDefaults @@ -120,6 +121,14 @@ + (void)cleariAdErrors { [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_IAD_ERRORS]; } ++ (void)setAdServicesTracked { + [[NSUserDefaults standardUserDefaults] setBool:YES forKey:PREFS_KEY_ADSERVICES_TRACKED]; +} + ++ (BOOL)getAdServicesTracked { + return [[NSUserDefaults standardUserDefaults] boolForKey:PREFS_KEY_ADSERVICES_TRACKED]; +} + + (void)clearAdjustStuff { [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_PUSH_TOKEN_DATA]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_PUSH_TOKEN_STRING]; @@ -128,6 +137,8 @@ + (void)clearAdjustStuff { [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DEEPLINK_URL]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DEEPLINK_CLICK_TIME]; [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_DISABLE_THIRD_PARTY_SHARING]; + [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_IAD_ERRORS]; + [[NSUserDefaults standardUserDefaults] removeObjectForKey:PREFS_KEY_ADSERVICES_TRACKED]; } @end diff --git a/Adjust/ADJUtil.m b/Adjust/ADJUtil.m index e538da63b..86a7ef3e7 100644 --- a/Adjust/ADJUtil.m +++ b/Adjust/ADJUtil.m @@ -37,7 +37,7 @@ static CTTelephonyNetworkInfo *networkInfo = nil; #endif -static NSString * const kClientSdk = @"ios4.25.1"; +static NSString * const kClientSdk = @"ios4.25.2"; static NSString * const kDeeplinkParam = @"deep_link="; static NSString * const kSchemeDelimiter = @"://"; static NSString * const kDefaultScheme = @"AdjustUniversalScheme"; diff --git a/Adjust/Adjust.h b/Adjust/Adjust.h index a61dad0c8..794af6b56 100644 --- a/Adjust/Adjust.h +++ b/Adjust/Adjust.h @@ -2,7 +2,7 @@ // Adjust.h // Adjust // -// V4.25.1 +// V4.25.2 // Created by Christian Wellenbrock (wellle) on 23rd July 2013. // Copyright © 2012-2017 Adjust GmbH. All rights reserved. // @@ -45,6 +45,7 @@ extern NSString * __nonnull const ADJEnvironmentProduction; extern NSString * __nonnull const ADJAdRevenueSourceMopub; extern NSString * __nonnull const ADJAdRevenueSourceAdmob; extern NSString * __nonnull const ADJAdRevenueSourceFbNativeAd; +extern NSString * __nonnull const ADJAdRevenueSourceFbAudienceNetwork; extern NSString * __nonnull const ADJAdRevenueSourceIronsource; extern NSString * __nonnull const ADJAdRevenueSourceFyber; extern NSString * __nonnull const ADJAdRevenueSourceAerserv; diff --git a/Adjust/Adjust.m b/Adjust/Adjust.m index faca96eef..6181294f9 100644 --- a/Adjust/Adjust.m +++ b/Adjust/Adjust.m @@ -25,6 +25,7 @@ NSString * const ADJAdRevenueSourceMopub = @"mopub"; NSString * const ADJAdRevenueSourceAdmob = @"admob"; NSString * const ADJAdRevenueSourceFbNativeAd = @"facebook_native_ad"; +NSString * const ADJAdRevenueSourceFbAudienceNetwork = @"facebook_audience_network"; NSString * const ADJAdRevenueSourceIronsource = @"ironsource"; NSString * const ADJAdRevenueSourceFyber = @"fyber"; NSString * const ADJAdRevenueSourceAerserv = @"aerserv"; diff --git a/AdjustBridge/AdjustBridgeRegister.m b/AdjustBridge/AdjustBridgeRegister.m index d37210af5..533422f42 100644 --- a/AdjustBridge/AdjustBridgeRegister.m +++ b/AdjustBridge/AdjustBridgeRegister.m @@ -241,7 +241,7 @@ + (NSString *)adjust_js { if (this.sdkPrefix) { return this.sdkPrefix; } else { - return 'web-bridge4.25.1'; + return 'web-bridge4.25.2'; } }, setTestOptions: function(testOptions) { diff --git a/AdjustTests/AdjustUnitTests/ADJPackageFields.m b/AdjustTests/AdjustUnitTests/ADJPackageFields.m index f6e2ffbe6..1e9f2382f 100644 --- a/AdjustTests/AdjustUnitTests/ADJPackageFields.m +++ b/AdjustTests/AdjustUnitTests/ADJPackageFields.m @@ -16,7 +16,7 @@ - (id) init { // default values self.appToken = @"qwerty123456"; - self.clientSdk = @"ios4.25.1"; + self.clientSdk = @"ios4.25.2"; self.suffix = @""; self.environment = @"sandbox"; diff --git a/CHANGELOG.md b/CHANGELOG.md index 8936cb15c..6084edbe2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +### Version 4.25.2 (1st February 2021) +#### Added +- Added Facebook audience network ad revenue source string. + +--- + ### Version 4.25.1 (18th January 2021) #### Fixed - Fixed missing header error for SPM users from v4.25.0. diff --git a/README.md b/README.md index 0bf0d3e38..2da879065 100644 --- a/README.md +++ b/README.md @@ -79,13 +79,13 @@ We will describe the steps to integrate the Adjust SDK into your iOS project. We If you're using [CocoaPods][cocoapods], you can add the following line to your `Podfile` and continue from [this step](#sdk-integrate): ```ruby -pod 'Adjust', '~> 4.25.1' +pod 'Adjust', '~> 4.25.2' ``` or: ```ruby -pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.25.1' +pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.25.2' ``` --- diff --git a/VERSION b/VERSION index 72e19f2fd..526650444 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -4.25.1 +4.25.2 diff --git a/doc/chinese/README.md b/doc/chinese/README.md index 69c59268c..7decf6952 100644 --- a/doc/chinese/README.md +++ b/doc/chinese/README.md @@ -76,13 +76,13 @@ Read this in other languages: [English][en-readme], [中文][zh-readme], [日本 如果您正在使用[CocoaPods][cocoapods],您可以将以下代码行添加至 `Podfile`,然后继续进行[此步骤](#sdk-integrate): ```ruby -pod 'Adjust', '~> 4.25.1' +pod 'Adjust', '~> 4.25.2' ``` 或: ```ruby -pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.25.1' +pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.25.2' ``` --- diff --git a/doc/english/migrate.md b/doc/english/migrate.md index 2f19a2724..72228fbcf 100644 --- a/doc/english/migrate.md +++ b/doc/english/migrate.md @@ -1,4 +1,4 @@ -## Migrate your Adjust SDK for iOS to v4.25.1 from v3.4.0 +## Migrate your Adjust SDK for iOS to v4.25.2 from v3.4.0 ### Initial setup diff --git a/doc/english/web_views.md b/doc/english/web_views.md index add40a29b..09ff5c071 100644 --- a/doc/english/web_views.md +++ b/doc/english/web_views.md @@ -64,7 +64,7 @@ We will describe the steps to integrate the Adjust SDK into your iOS project. We If you're using [CocoaPods][cocoapods], you can add the following line to your `Podfile` and continue from [this step](#sdk-integrate): ```ruby -pod 'Adjust/WebBridge', '~> 4.25.1' +pod 'Adjust/WebBridge', '~> 4.25.2' ``` --- diff --git a/doc/japanese/README.md b/doc/japanese/README.md index bbb1a1849..f3e551619 100644 --- a/doc/japanese/README.md +++ b/doc/japanese/README.md @@ -25,13 +25,13 @@ adjust SDKをiOSプロジェクトに連携する手順を説明します。 [こちらの手順](#sdk-integrate)に進んでください。 ```ruby -pod 'Adjust', '~> 4.25.1' +pod 'Adjust', '~> 4.25.2' ``` または ```ruby -pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.25.1' +pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.25.2' ``` --- diff --git a/doc/korean/README.md b/doc/korean/README.md index 9f7fef7fa..5a84bf1de 100644 --- a/doc/korean/README.md +++ b/doc/korean/README.md @@ -76,13 +76,13 @@ iOS 개발용 Xcode를 사용한다는 가정하에 iOS 프로젝트에 Adjust S [CocoaPods][cocoapods]를 사용하는 경우, 다음 내용을 `Podfile`에 추가한 후 [해당 단계](#sdk-integrate)를 완료하세요. ```ruby -pod 'Adjust', '~> 4.25.1' +pod 'Adjust', '~> 4.25.2' ``` 또는: ```ruby -pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.25.1' +pod 'Adjust', :git => 'https://github.com/adjust/ios_sdk.git', :tag => 'v4.25.2' ``` --- diff --git a/doc/korean/web_views.md b/doc/korean/web_views.md index b108eac24..4d82a47f9 100644 --- a/doc/korean/web_views.md +++ b/doc/korean/web_views.md @@ -64,7 +64,7 @@ iOS 개발용 Xcode를 사용한다는 가정하에 iOS 프로젝트에 Adjust S [CocoaPods][cocoapods]를 사용하는 경우, 다음 내용을 'Podfile'에 추가한 후 [해당 단계](#sdk-integrate)를 완료하세요. ```ruby -pod 'Adjust/WebBridge', '~> 4.25.1' +pod 'Adjust/WebBridge', '~> 4.25.2' ``` --- diff --git a/doc/migrate.md b/doc/migrate.md index 2f19a2724..72228fbcf 100644 --- a/doc/migrate.md +++ b/doc/migrate.md @@ -1,4 +1,4 @@ -## Migrate your Adjust SDK for iOS to v4.25.1 from v3.4.0 +## Migrate your Adjust SDK for iOS to v4.25.2 from v3.4.0 ### Initial setup