본문으로 건너뛰기

시작하기

지원 버전

  • iOS 13.0 이상
  • Xcode 12.0 이상
    • DFP 사용 시 14.1 이상
    • Unity, IronSource 사용 시 15 이상
    • FAN 사용 시 15.2 이상
위험

NAMSDK 4.3.0 부터 Xcode 12.0 이상을 사용하셔야 합니다. (iOS 14 대응)

위험

NAMSDK 6.0.0 부터 DFP 사용 시 Xcode 14.1 이상을 사용하셔야 합니다.

NAMSDK 7.0.0 부터 Unity, IronSource 사용 시 Xcode 15 이상을 사용하셔야 합니다.

Cocoapods 의존성 추가

pod init 이후 생성된 Podfile에 NAMSDK를 추가합니다. NAMSDK Pod과 함께 연동하고 싶은 광고 제공자들의 Mediation Pod을 추가로 설정합니다.

target 'MyApplication' do
pod 'NAMSDK' # SDK 본체
pod 'NAMSDK/MediationNDA' # 네이버 배너/네이티브 광고
pod 'NAMSDK/MediationNDAVideo' # 네이버 비디오 광고
pod 'NAMSDK/MediationNDARich' # 네이버 프리미엄 광고 (since 7.2.0)
pod 'NAMSDK/MediationDFP' # 구글 DFP
pod 'NAMSDK/MediationFAN' # 페이스북 FAN
pod 'NAMSDK/MediationInMobi' # 인모비
pod 'NAMSDK/MediationUnity' # 유니티
pod 'NAMSDK/MediationAppLovin' # 앱러빈 (since 5.0.0)
pod 'NAMSDK/MediationVungle' # 벙글 (since 6.0.0)
pod 'NAMSDK/MediationDT' # Digital Turbine (since 6.5.0)
pod 'NAMSDK/MediationIronSource' # Iron Source (since 7.2.0)
pod 'NAMSDK/MediationAPS' # APS (since 7.2.0)
pod 'NAMSDK/MediationLAN' # LAN (since 7.7.0)
end

지원 중인 광고 제공자 목록

광고제공자 이름지원되는 광고타입cocoapods 설정
네이버배너, 네이티브(NS, NN)pod NAMSDK/MediationNDA
네이버동영상pod NAMSDK/MediationNDAVideo
네이버네이티브 리치 보상형pod NAMSDK/MediationNDARich
구글 DFP배너, 네이티브, 전면형, 보상형pod NAMSDK/MediationDFP
페이스북배너, 네이티브, 전면형, 보상형pod NAMSDK/MediationFAN
인모비배너, 네이티브pod NAMSDK/MediationInMobi
유니티배너, 전면형, 보상형pod NAMSDK/MediationUnity
앱러빈배너, 네이티브, 전면형, 보상형pod NAMSDK/MediationAppLovin
벙글전면형, 보상형pod NAMSDK/MediationVungle
DigitalTurbine배너, 전면형, 보상형pod NAMSDK/MediationDT
IronSource전면형, 보상형pod NAMSDK/MediationIronSource
APS보상형pod NAMSDK/MediationAPS
LAN네이티브(NS, NN), 전면형, 보상형pod NAMSDK/MediationLAN

ATS(App Transport Security) 설정

iOS 9부터 도입 된 App Transport Security (ATS)는 앱이 HTTPS를 통해서만 네트워크 요청을 하도록 기본설정 되어있습니다. HTTP를 사용하는 광고파트너들의 광고동작를 허용하기 위해, Info.plist 파일에 아래내용을 추가합니다.

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

Google DFP 연동시 주의사항

구글 DFP를 연동 하시는 경우, 아래 내용을 추가로 Info.plist 파일에 추가해야 합니다. 그렇지 않을 경우, "The Google Mobile Ads SDK was initialized incorrectly."와 같은 메시지와 함께 동작이 중단됩니다.

<key>GADIsAdManagerApp</key>
<true/>

구글 DFP 10 버전 부터 아래와 같이 추가 설정이 필요합니다.

위험

NAMSDK 광고매니저 설정

광고제공자 초기화

광고를 요청하기 전에 SDK초기화(앱 전체 라이프 사이클에서 한번)가 수행되어야 합니다.
cocoapods의 의존성이 추가되어 있으면, 각 광고 제공자별 광고 타입별 광고가 자동으로 초기화 됩니다. 다만, 여기서 초기화되지 않은 광고 제공자로부터의 광고는 이후 서버로부터의 응답결과와 관계없이 처리되지 않습니다.

SDK 초기화 호출 시 GFP Admin 에서 발급한 퍼블리셔 코드(publihserCd) 를 넘겨주어야 합니다.

초기화 성공 여부는 isSdkInitialized 값을 통해 알 수 있습니다.
자세한 내용은 GFPAdManager.h 파일의 property를 참고해 주세요.

위험

NAMSDK 4.3.0 버전 이후로는 GFPAdManagerDelegate를 필수적으로 구현해야 합니다. ATTFramework를 통해 서비스에서 광고 추적 여부를 구현 후, GFPAdManagerDelegate를 통하여 Status를 SDK에 제공해줘야 합니다.

초기화 API의 target Parameter에 **id<GFPAdManagerDelegate>**를 구현해서 넣어야합니다.

GFPAdManagerDelegate 설정 및 Example

@protocol GFPAdManagerDelegate <NSObject>

- (GFPATTAuthorizationStatus)attStatus;

@end

typedef NS_ENUM(NSInteger, GFPATTAuthorizationStatus) {
GFPATTAuthorizationStatusNotDetermined = 0, // 사용자의 승인 미요청 상태
GFPATTAuthorizationStatusRestricted = 1, // 사용자의 기기가 제한된 상태.
GFPATTAuthorizationStatusDenied = 2, // 사용자의 IDFA 요청 거절 상태.
GFPATTAuthorizationStatusAuthorized = 3, // 사용자의 IDFA 요청 승인 상태.
};

- (GFPATTAuthorizationStatus)attStatus {
if (@available(iOS 14.5, *)) {
return ATTrackingManager.trackingAuthorizationStatus;
} else {
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
return GFPATTAuthorizationStatusAuthorized;
}

return GFPATTAuthorizationStatusNotDetermined;
}
}

Example

@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);
}];

기본값 설정

GFPAdConfiguration 통해 앱 전역에서 사용할 기본값 등의 설정이 가능합니다.
자세한 내용은 GFPAdConfiguration.h 파일을 참고해 주세요.

GFPAdConfiguration에 설정 가능한 내용들

  • 배너광고 요청 타임아웃 설정 (기본값: 60초)
  • 비디오광고 요청 타임아웃 설정 (기본값: 60초)
  • 네이티브광고 요청 타임아웃 설정 (기본값: 60초)
  • 통합광고 요청 타임아웃 설정 (기본값: 60초)
  • 리워드광고 요청 타임아웃 설정 (기본값: 60초)
  • 전면형광고 요청 타임아웃 설정 (기본값: 60초)
  • DFP 테스트 광고 송출 여부 설정 (기본값: NO)
  • FAN 테스트 광고 송출 여부 설정 (기본값: NO)
  • NAMSDK 로그레벨 설정 (기본값: 출력하지 않음)
  • Default UA 사용 여부 설정 (기본값: NO)
  • 광고 InterfaceStyle 설정 (기본값: Light)
  • 외부 DSP SDK의 crashReport 비활성화 설정 (기본값: NO)
  • 전역 CustomUserParam 설정
  • 광고 muteAudio 설정 (C2S AP 및 S2S 리워드에 적용됨) (기본값: YES)
  • 광고 UI 컴포넌트의 언어 설정 (기본값: none)

광고 언어 설정

광고 UI 컴포넌트의 언어 설정 (기본값: none). 단 s2s로 서빙되는 광고에 한정되어 적용됩니다.

  • 지원 언어: 한국어, 영어, 태국어, 프랑스어, 스페인어, 인도네시아어, 중국어 간체/번체, 일본어, 독일어

none으로 설정 시 디바이스의 언어를 기반으로 렌더링 되며, 지원하지 않는 언어일 경우 영어로 노출됩니다.

정보

광고 로드 전 설정해야하며, 로드 후 변경 시 이미 로드된 광고의 언어는 변경되지 않습니다. 언어 설정 변경 시, 광고 로드를 재수행해야합니다.

[GFPAdManager adConfiguration].preferredLanguage = GFPLanguageType_ko;

스타일 설정

서비스에서 지원하는 UI에 맞춰 Admute 아이콘의 스타일(=system, light, dark)을 지정합니다.

[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
[GFPAdManager adConfiguration].customParam = @{@"key1": @"value1", @"key2": @"value2"}; //custom key:value