광고매니저 설정
선행 챕터
GFPAdManager
GFPAdManager는 NAMSDK의 중심 진입점(entry point) 클래스입니다.
인스턴스를 직접 생성할 수 없으며, 모든 기능은 클래스 메서드로 제공됩니다.
| 메서드 / 프로퍼티 | 설명 |
|---|---|
setup(withPublisherCd:target:completionHandler:) | SDK 초기화 (앱 실행 시 한 번) |
isSdkInitialized() | 초기화 완료 여부 확인 |
adConfiguration() | 전역 광고 설정(GFPAdConfiguration) 접근 |
registerWebView(_:) | WKWebView 등록 |
sdkVersion() | 현재 SDK 버전 문자열 |
광고제공자 초기화
광고를 요청하기 전에 SDK 초기화(앱 전체 라이프 사이클에서 한 번)가 수행되어야 합니다.
CocoaPods 의존성이 추가되어 있으면 각 광고 제공자별·광고 타입별 광고가 자동으로 초기화됩니다.
다만, 여기서 초기화되지 않은 광고 제공자로부터의 광고는 이후 서버로부터의 응답 결과와 관계없이 처리되지 않습니다.
SDK 초기화 호출 시 Naver Ad Manager 플랫폼 혹은 담당자를 통해 발급 받은 Publisher Code 를 setup() 호출 시 넘겨주어야 합니다.
Publisher Code 값은 필수 항목이며, 누락 시 초기화 오류가 발생합니다. 따라서 이 값을 반드시 포함해야 합니다.
초기화 성공 여부는 isSdkInitialized 값을 통해 알 수 있습니다.
setup() 호출 시 GFPAdConfiguration 을 함께 전달하면 SDK 전역 옵션을 한 번에 지정할 수 있습니다.
설정 가능한 주요 항목:
- 광고 타입별 요청 타임아웃
- SDK 로그 레벨
- 광고 UI 언어 및 다크/라이트 스타일
- IDFA · 위치 정보 수집 제어
- 광고 제공자별 테스트 모드
→ 전체 옵션은 GFPAdConfiguration 설정 을 참고해 주세요.
초기화 API의 target 파라미터에 GFPAdManagerDelegate를 구현한 객체를 전달합니다.
SDK 초기화 예제
- Swift
- Objective-C
import GFPSDK
// PublisherCd 이용, GFPAdConfiguration(광고 설정) 없이 초기화 하는 경우.
GFPAdManager.setup(withPublisherCd: "publisherCd", target:self) { (error : GFPError?) in
print("Setup Error: \(String(describing: error?.description))")
}
// 광고 초기화 성공 여부
GFPAdManager.isSdkInitialized()
// GFPAdConfiguration 설정 포함 초기화 하는 경우.
let configuration = GFPAdConfiguration()
GFPAdManager.setup(withPublisherCd: "publisherCd", target:self, configuration: configuration) { (error : GFPError?) in
print("Setup Error: \(String(describing: error?.description))")
}
@import GFPSDK;
// PublisherCd 이용, GFPAdConfiguration(광고 설정) 없이 초기화 하는 경우.
[GFPAdManager setupWithPublisherCd:@"publisherCd" target:self completionHandler:^(GFPError * _Nullable error) {
NSLog(@"Setup ERROR: %@", error);
}];
// 광고 초기화 성공 여부
[GFPAdManager isSdkInitialized];
// GFPAdConfiguration 설정 포함 초기화 하는 경우.
GFPAdConfiguration *configuration = [[GFPAdConfiguration alloc] init];
[GFPAdManager setupWithPublisherCd:@"publisherCd" target:self configuration:configuration completionHandler:^(GFPError * _Nullable error) {
NSLog(@"Setup ERROR: %@", error);
}];
GFPAdManagerDelegate 설정
GFPAdManagerDelegate는 광고 추적 권한(ATT) 상태를 SDK에 전달하기 위한 필수 델리게이트입니다.
iOS 14부터 도입된 ATT(App Tracking Transparency) 프레임워크에 따라, 앱은 IDFA(광고 식별자)에 접근하기 전에 사용자에게 추적 허용 여부를 묻고 그 결과를 SDK에 알려줘야 합니다. SDK는 이 상태를 바탕으로 광고 타게팅 여부를 결정합니다.
NAMSDK 4.3.0 버전 이후 GFPAdManagerDelegate 구현은 필수입니다.
attStatus()를 구현하지 않으면 초기화가 정상적으로 동작하지 않습니다.
@protocol GFPAdManagerDelegate <NSObject>
- (GFPATTAuthorizationStatus)attStatus;
@end
typedef NS_ENUM(NSInteger, GFPATTAuthorizationStatus) {
GFPATTAuthorizationStatusNotDetermined = 0, // 사용자의 승인 미요청 상태
GFPATTAuthorizationStatusRestricted = 1, // 사용자의 기기가 제한된 상태.
GFPATTAuthorizationStatusDenied = 2, // 사용자의 IDFA 요청 거절 상태.
GFPATTAuthorizationStatusAuthorized = 3, // 사용자의 IDFA 요청 승인 상태.
};
- Swift
- Objective-C
func attStatus() -> GFPATTAuthorizationStatus {
if #available(iOS 14.5, *) {
return ATTrackingManager.trackingAuthorizationStatus
} else {
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
return .authorized
}
return .notDetermined
}
- (GFPATTAuthorizationStatus)attStatus {
if (@available(iOS 14.5, *)) {
return ATTrackingManager.trackingAuthorizationStatus;
} else {
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
return GFPATTAuthorizationStatusAuthorized;
}
return GFPATTAuthorizationStatusNotDetermined;
}
}
WebView 등록
SDK 8.2.0 부터 앱에서 사용하는 WKWebView를 GFPAdManager에 필수로 등록해야 합니다.
등록하지 않으면 광고가 정상적으로 동작하지 않을 수 있습니다.
다음의 웹뷰 등록 가이드를 통해 웹뷰를 등록합니다.
기본값 설정
GFPAdConfiguration을 통해 앱 전역에서 사용할 기본값 등의 설정이 가능합니다.
설정 가능한 모든 옵션은 GFPAdConfiguration 설정 페이지를 참고해 주세요.
광고 언어 설정
광고 UI 컴포넌트의 언어 설정 (기본값: none). 단 s2s로 서빙되는 광고에 한정되어 적용됩니다.
none으로 설정 시 디바이스의 언어를 기반으로 렌더링 되며, 지원하지 않는 언어일 경우 영어로 노출됩니다.
광고 로드 전 설정해야하며, 로드 후 변경 시 이미 로드된 광고의 언어는 변경되지 않습니다. 언어 설정 변경 시, 광고 로드를 재수행해야합니다.
- Swift
- Objective-C
GFPAdManager.adConfiguration().preferredLanguage = .ko
[GFPAdManager adConfiguration].preferredLanguage = GFPLanguageType_ko;
스타일 설정
서비스에서 지원하는 UI에 맞춰 Admute 아이콘의 스타일(=system, light, dark)을 지정합니다.
- Swift
- Objective-C
GFPAdManager.adConfiguration().adInterfaceStyle = .light
GFPAdManager.adConfiguration().adInterfaceStyle = .dark
GFPAdManager.adConfiguration().adInterfaceStyle = .system // 아이폰 설정의 style을 따라갑니다.
[GFPAdManager adConfiguration].adInterfaceStyle = GFPAdInterfaceStyleLight;
[GFPAdManager adConfiguration].adInterfaceStyle = GFPAdInterfaceStyleDark;
[GFPAdManager adConfiguration].adInterfaceStyle = GFPAdInterfaceStyleSystem; // 아이폰 설정의 style을 따라갑니다.
전역 CustomParam 설정
모든 광고 지면에 customParam 설정이 가능하며, 파라미터 dict의 키/값은 모두 문자열 타입이어야 합니다. (since 6.0.0)
adParam의 customUserParam와 키가 중복될 경우, 우선 순위는 아래와 같습니다.
- GFPAdParam.customUserParam > GFPAdConfiguration.customParam
- Swift
- Objective-C
GFPAdManager.adConfiguration().customParam = ["key1": "value1", "key2": "value2"] //custom key:value
[GFPAdManager adConfiguration].customParam = @{@"key1": @"value1", @"key2": @"value2"}; //custom key:value