Preparing your app for iOS 14 - adxcorp/ADXLibrary_Integration GitHub Wiki
- iOS 13 ์ด์ ์๋ '๊ด๊ณ ์ถ์ ์ ํ (Limit Ad Tracking)'์ ํ์ฑํํ๊ธฐ ์ ์๋
IDFA (Identifier for Advertisers)
๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์์ต๋๋ค. - iOS 14 ๋ถํฐ๋ ์ฌ์ฉ์ ๊ถํ ์์ฒญ์ ํตํด ์ฌ์ฉ์ ํ์ฉํ ๊ฒฝ์ฐ์๋ง IDFA ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
- ๊ด๊ณ ์์ต์ด ์ค์ด๋๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด iOS 14์ ๋์ํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค.
- ํ์์ฌํญ : XCode 12.0+
- iOS 14 ์ด์์์ IDFA ์ ๊ฐ์ ์๋ณ์์ ๋ํ ์ก์ธ์ค ๋ฐ ์ฌ์ฉ์ ๋ํ ๊ถํ์ ์์ฒญํ๋ ค๋ฉด
ATT (AppTrackingTransparency)
์๋ฆผ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. - ์์ธํ ๋ด์ฉ์ ์๋์ ๋จ๊ณ์ ๋ฐ๋ผ ์งํํด์ผ ํฉ๋๋ค.
- ์ ๊ท ๋ฐ ์ ๋ฐ์ดํธ ์ฑ์ ๊ฒฝ์ฐ iOS SDK ๋ฒ์ 1.8.5 ์ด์์ ์ค๋นํ์๊ณ , ์ ๋ํฐ์ ๊ฒฝ์ฐ Unity Package 1.9.4 ์ด์์ ์ค๋นํฉ๋๋ค.
source 'https://github.com/adxcorp/AdxLibrary_iOS_Release.git'
source 'https://github.com/CocoaPods/Specs.git'
# ๋ฐฐ๋, ์ ๋ฉด, ๋ค์ดํฐ๋ธ
pod 'ADXLibrary', '1.8.5'
pod 'ADXLibrary-FBAudienceNetwork', '1.8.5'
pod 'ADXLibrary-Pangle', '1.8.5'
pod 'ADXLibrary-Vungle', '1.8.5'
# ๋ฆฌ์๋ ๋น๋์ค ์ฌ์ฉ ์ ์ถ๊ฐ
pod 'ADXLibrary-UnityAds', '1.8.5'
Version : 1.9.4
- ๊ด๊ณ ๋คํธ์ํฌ์ ์ง์๋๋ ๋ชฉ๋ก์ SKAdNetwork ID List ์์ ํ์ธํ์ฌ Info.plist ์ ๋ฃ์ด์ค์ผ ํฉ๋๋ค.
<array>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>example100.skadnetwork</string>
</dict>
<dict>
<key>SKAdNetworkIdentifier</key>
<string>example200.skadnetwork</string>
</dict>
</array>
-
Info.plist
ํ์ผ์NSUserTrackingUsageDescription
ํค์ ๊ถํ ์ฌ์ฉ์ ๋ํ ๋์๋ฅผ ๊ตฌํ๋ ๋ฉ์์ง๋ฅผ ์ถ๊ฐํฉ๋๋ค.

(Example - English)
<key>NSUserTrackingUsageDescription</key>
<string>This identifier will be used to deliver personalized ads to you.</string>
(Example - ํ๊ธ)
<key>NSUserTrackingUsageDescription</key>
<string>๊ฐ์ธ ๋ง์ถค ๊ด๊ณ ๋ฅผ ๊ฒ์ฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.</string>
- ๊ด๊ณ SDK ์ด๊ธฐํ๋ฅผ ํ๊ธฐ ์ ์ ATT ์๋ฆผ์ ํตํ ๊ถํ์ ์์ฒญํฉ๋๋ค.
- ๊ถํ ์์ฒญ ๊ด๋ จ ๋ฉ์๋๋ก requestTrackingAuthorizationWithCompletionHandler: ํธ์ถ์ ์ฌ์ฉํฉ๋๋ค.
- ์์ ์ค๋ช ํ Info.plist ํ์ผ์ ์ค๋ช ๋ฌธ๊ตฌ๋ฅผ ์ถ๊ฐํ์ง ์์ผ๋ฉด Crash๊ฐ ๋ฐ์ํ๋ ์ ์ํด์ผ ํฉ๋๋ค.
#import "AppDelegate.h"
#import <ADXLibrary/ADXLibrary.h>
#import <MoPub.h>
#import <FBAudienceNetwork/FBAudienceNetwork.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:
(NSDictionary *)launchOptions {
if (@available(iOS 14, *)) {
// ATT ์๋ฆผ์ ํตํ ๊ถํ ์์ฒญ
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// ๊ด๊ณ ์ถ์ ์ ํ ์ค์ (ํ์ด์ค๋ถ ๊ด๊ณ )
if (ATTrackingManager.trackingAuthorizationStatus == ATTrackingManagerAuthorizationStatusAuthorized) {
[FBAdSettings setAdvertiserTrackingEnabled:YES];
} else {
[FBAdSettings setAdvertiserTrackingEnabled:NO];
}
// ๊ด๊ณ SDK ์ด๊ธฐํ
[self initializeAdSdk];
}];
} else {
// ๊ด๊ณ SDK ์ด๊ธฐํ
[self initializeAdSdk];
}
return YES;
}
- (void) initializeAdSdk {
MPMoPubConfiguration *sdkConfig = [[MPMoPubConfiguration alloc] initWithAdUnitIdForAppInitialization:<YOUR AD UNIT ID>];
[[MoPub sharedInstance] initializeSdkWithConfiguration:sdkConfig
completion:^{
[ADXGDPR.sharedInstance showADXConsent:^(ADXConsentState consentState, BOOL success) {
//*** success๊ฐ ํธ์ถ ๋ ํ ๊ด๊ณ ๊ด๋ จ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
}];
}];
[[GADMobileAds sharedInstance] startWithCompletionHandler:nil];
}
...
@end
import UIKit
import GoogleMobileAds
import MoPub
import ADXLibrary
import AppTrackingTransparency
import FBAudienceNetwork
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions
launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if #available(iOS 14, *) {
// ATT ์๋ฆผ์ ํตํ ๊ถํ ์์ฒญ
ATTrackingManager.requestTrackingAuthorization(completionHandler: { status in
// ๊ด๊ณ ์ถ์ ์ ํ ์ค์ (ํ์ด์ค๋ถ ๊ด๊ณ )
if (ATTrackingManager.trackingAuthorizationStatus == ATTrackingManager.AuthorizationStatus.authorized) {
FBAdSettings.setAdvertiserTrackingEnabled(true)
} else {
FBAdSettings.setAdvertiserTrackingEnabled(false)
}
// ๊ด๊ณ SDK ์ด๊ธฐํ
self.initializeAdSdk()
})
} else {
// ๊ด๊ณ SDK ์ด๊ธฐํ
initializeAdSdk()
}
return true
}
func initializeAdSdk() {
MoPub.sharedInstance().initializeSdk(with: MPMoPubConfiguration(adUnitIdForAppInitialization: BANNER_AD_UNIT_ID), completion:{
ADXGDPR.sharedInstance()?.showADXConsent({ (ADXConsentState, Bool) in
//*** success๊ฐ ํธ์ถ ๋ ํ ๊ด๊ณ ๊ด๋ จ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
})
})
GADMobileAds.sharedInstance().start(completionHandler:nil)
}
}
#import "UnityAppController.h"
#import <FBAudienceNetwork/FBAudienceNetwork.h>
#import <AppTrackingTransparency/AppTrackingTransparency.h>
@implementation UnityAppController
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:
(NSDictionary*)launchOptions {
...
if (@available(iOS 14, *)) {
// ATT ์๋ฆผ์ ํตํ ๊ถํ ์์ฒญ
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
// ๊ด๊ณ ์ถ์ ์ ํ ์ค์ (ํ์ด์ค๋ถ ๊ด๊ณ )
if (ATTrackingManager.trackingAuthorizationStatus == ATTrackingManagerAuthorizationStatusAuthorized) {
[FBAdSettings setAdvertiserTrackingEnabled:YES];
} else {
[FBAdSettings setAdvertiserTrackingEnabled:NO];
}
}];
}
return YES;
}
...
@end
![]() |
![]() |