NAM (Naver Ad Manager)
NAM (Naver Ad Manager)
사용방법
2) 초기 셋팅, 3)초기화 진행은 위 업체 링크에 들어가서 직접 설정하시는 것을 권장드립니다.
1) 설치
미디에이션2) 초기 셋팅
ATS(App Transport Security) 설정 -> 링크
iOS 9부터 도입 된 App Transport Security (ATS)는 앱이 HTTPS를 통해서만 네트워크 요청을 하도록 기본설정 되어있습니다. HTTP를 사용하는 광고파트너들의 광고동작를 허용하기 위해, Info.plist 파일에 아래내용을 추가합니다.
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>3) 초기화
GFPAdManagerDelegate 설정 -> 링크
NAM SDK에 ATTFramework를 통해 서비스에서 광고 추적 여부를 구현 후, GFPAdManagerDelegate를 통하여 Status를 SDK에 제공해줘야 합니다. 이에 아래 예시와 같이 초기화 API 및 Status를 제공해 주시기 바랍니다.
@import GFPSDK;
@interface AppDelegate() <APSSPSDKInitializeDelegate, GFPAdManagerDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
GFPAdConfiguration *configuration = [[GFPAdConfiguration alloc] init];
[GFPAdManager setupWithPublisherCd:@"NAM_Publisher_cd" target:self configuration:configuration completionHandler:^(GFPError * _Nullable error) {
NSLog(@"NAM Setup ERROR: %@", error);
}];
}
- (GFPATTAuthorizationStatus)attStatus {
if (@available(iOS 14.5, *)) {
return ATTrackingManager.trackingAuthorizationStatus;
} else {
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
return GFPATTAuthorizationStatusAuthorized;
}
return GFPATTAuthorizationStatusNotDetermined;
}
}NAM SDK에 ATTFramework를 통해 서비스에서 광고 추적 여부를 구현 후, GFPAdManagerDelegate를 통하여 Status를 SDK에 제공해줘야 합니다. 이에 아래 예시와 같이 초기화 API 및 Status를 제공해 주시기 바랍니다.
import GFPSDK
// 1. PublisherCd 이용, GFPAdConfiguration(광고 설정) 없이 초기화 하는 경우.
GFPAdManager.setup(withPublisherCd: "publisherCd" target:self) { (error : GFPError?) in
print("Setup Eror: \(String(describing: error?.description))")
}
// 2. PublisherCd 및 ServiceCd 이용, GFPAdConfiguration(광고 설정) 없이 초기화 하는 경우.
GFPAdManager.setup(withPublisherCd: nil, serviceCd: "serviceCd", target: self) { error in
print("Setup Eror: \(String(describing: error?.description))")
}
func attStatus() -> GFPATTAuthorizationStatus {
if #available(iOS 14.5, *) {
return ATTrackingManager.trackingAuthorizationStatus
} else {
if ASIdentifierManager.shared().isAdvertisingTrackingEnabled {
return .authorized
}
return .notDetermined
}Native Layout 설정
Adapter 내부에 들어있는 Xib 파일을 project에 꼭 넣어주세요.
스토리보드에 UIView 생성 후 Custom Class을 AdPopcornSSPNativeAd 설정
AdPopcornSSPNativeAd 변수 내부에 GfpNativeAdView, GfpNativeSimpleAdView를 포함할 수 있도록 adAMNativeSuperView 라는 UIView 를 생성, 추가해 줍니다. (중요!)

NAM 은 ViewController에 ui component 영역을 바로 생성하지 않고 xib 파일을 사용하여 view를 add합니다.
GfpNativeSimpleAdView -> 따로 커스텀 하실 필요 없습니다. GfpNativeAdView -> 해당 xib 를 커스텀 하여 사용하시면 됩니다 (mediaView, BodyLabel 필수!) NAM 참조 링크
1) GFPNativeAdView
namNativeView를 AdPopcornNativeAd add해 주고 layout을 잡아 주어야 광고가 보입니다.
#import <AdPopcornSSP/AdPopcornSSPNativeAd.h>
#import "NAMAdapter.h"
- (void)viewDidLoad {
[super viewDidLoad];
// Size
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat xibHeight = (width * 185) / 360;
NSLog(@"width : %f, xibHeight : %f",width, xibHeight);
CGFloat roundXibHeight = round(xibHeight * 10 )/ 10;
NSLog(@"width : %f, height : %f",width, roundXibHeight);
// 일반형
GFPNativeAdView *namNativeAdView =
[[NSBundle mainBundle] loadNibNamed:@"GFPNativeAdView" owner:nil options:nil].firstObject;
namNativeAdView.frame = CGRectMake(0, 0, width, roundXibHeight);
apNAMNativeAdRenderer.namNativeAdView = namNativeAdView;
// 일반형을 담을 SuperView
apNAMNativeAdRenderer.namNativeSuperView = adNAMNativeSuperView;
[_adPopcornSSPNativeAd setNAMRenderer:apNAMNativeAdRenderer superView:_adNAMNativeSuperView]; // SuperView
} private var namNativeView: GFPNativeAdView = GFPNativeAdView()
private var adNAMNativeSuperView: UIView = UIView()
override func viewDidLoad()
{
super.viewDidLoad()
// 일반형
namNativeAdView = Bundle.main.loadNibNamed("GFPNativeAdView",
owner: nil,
options: nil)?.first as? GFPNativeAdView
apNAMNativeAdRenderer.namNativeAdView = namNativeAdView
apNAMNativeAdRenderer.namNativeSuperView = adNAMNativeSuperView
adPopcornSSPNativeAd.setNAMRenderer(apNAMNativeAdRenderer, superView:adNAMNativeSuperView) // SuperView
}
NAM의 경우 AdPopcornSSP, FAN, FAN Native Banner와 다르게 xib파일을 이용하여 직접 View를 생성한 뒤, 해당 xib 파일을 읽어와 renderer에 전달해 주어야 합니다.
APNAMNativeAdRenderer에 GFPNativeAdView와 superView를 세팅 후, setNAMRenderer:superView:API를 통해 render와 adNAMNativeSuperView 를 sdk에 최종적으로 전달합니다.
(adNAMNativeSuperView 를 render 설정시 넘겨 주면 SDK내부 코드에서 광고에 맞게 nativeAd, NativeSimpIeAd 를 추가하여 제공해줍니다.)
2) GFPNativeSimpleAdView
#import <AdPopcornSSP/AdPopcornSSPNativeAd.h>
#import "NAMAdapter.h"
- (void)viewDidLoad {
[super viewDidLoad];
// Size
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat xibHeight = (width * 185) / 360;
NSLog(@"width : %f, xibHeight : %f",width, xibHeight);
CGFloat roundXibHeight = round(xibHeight * 10 )/ 10;
NSLog(@"width : %f, height : %f",width, roundXibHeight);
// 일반형
GFPNativeSimpleAdView *namNativeSimpleAdView =
[[NSBundle mainBundle] loadNibNamed:@"GFPNativeSimpleAdView" owner:nil options:nil].firstObject;
namNativeSimpleAdView.frame = CGRectMake(0, 0, width, roundXibHeight);
apNAMNativeAdRenderer.namNativeSimpleAdView = namNativeSimpleAdView;
// 일반형을 담을 SuperView
apNAMNativeAdRenderer.namNativeSuperView = adNAMNativeSuperView;
[_adPopcornSSPNativeAd setNAMRenderer:apNAMNativeAdRenderer superView:_adNAMNativeSuperView]; // SuperView
} private var namNativeSimpleAdView: GFPNativeSimpleAdView = GFPNativeSimpleAdView()
private var adNAMNativeSuperView: UIView = UIView()
override func viewDidLoad()
{
super.viewDidLoad()
namNativeSimpleAdView = Bundle.main.loadNibNamed("GFPNativeSimpleAdView",
owner: nil,
options: nil)?.first as? GFPNativeSimpleAdView
apNAMNativeAdRenderer = APNAMNativeAdRenderer.init()
apNAMNativeAdRenderer.namNativeSimpleAdView = namNativeSimpleAdView
apNAMNativeAdRenderer.namNativeSuperView = adNAMNativeSuperView
adPopcornSSPNativeAd.setNAMRenderer(apNAMNativeAdRenderer, superView:adNAMNativeSuperView)
}NAM의 경우 AdPopcornSSP, FAN, FAN Native Banner와 다르게 xib파일을 이용하여 직접 View를 생성한 뒤, 해당 xib 파일을 읽어와 renderer에 전달해 주어야 합니다.
APNAMNativeAdRenderer에 GFPNativeAdView와 superView를 세팅 후, setNAMRenderer:superView:API를 통해 render와 adNAMNativeSuperView 를 sdk에 최종적으로 전달합니다.
(adNAMNativeSuperView 를 render 설정시 넘겨 주면 SDK내부 코드에서 광고에 맞게 nativeAd, NativeSimpIeAd 를 추가하여 제공해줍니다.)
3) GFPNativeAdView + GFPNativeSimpleAdView
#import <AdPopcornSSP/AdPopcornSSPNativeAd.h>
#import "NAMAdapter.h"
- (void)viewDidLoad {
[super viewDidLoad];
// Size
CGFloat width = [UIScreen mainScreen].bounds.size.width;
CGFloat xibHeight = (width * 185) / 360;
NSLog(@"width : %f, xibHeight : %f",width, xibHeight);
CGFloat roundXibHeight = round(xibHeight * 10 )/ 10;
NSLog(@"width : %f, height : %f",width, roundXibHeight);
// 심플형
GFPNativeSimpleAdView *namNativeSimpleAdView =
[[NSBundle mainBundle] loadNibNamed:@"GFPNativeSimpleAdView" owner:nil options:nil].firstObject;
namNativeSimpleAdView.frame = CGRectMake(0, 0, width, roundXibHeight);
APNAMNativeAdRenderer *apNAMNativeAdRenderer = [[APNAMNativeAdRenderer alloc] init];
apNAMNativeAdRenderer.namNativeSimpleAdView = namNativeSimpleAdView;
// 일반형
GFPNativeAdView *namNativeAdView =
[[NSBundle mainBundle] loadNibNamed:@"GFPNativeAdView" owner:nil options:nil].firstObject;
namNativeAdView.frame = CGRectMake(0, 0, width, roundXibHeight);
apNAMNativeAdRenderer.namNativeAdView = namNativeAdView;
// 심플형 + 일반형을 담을 SuperView
apNAMNativeAdRenderer.namNativeSuperView = adNAMNativeSuperView;
[_adPopcornSSPNativeAd setNAMRenderer:apNAMNativeAdRenderer superView:_adNAMNativeSuperView]; // SuperView
} private var namSimpleNativeView: GFPNativeSimpleAdView = GFPNativeSimpleAdView()
private var namNativeView: GFPNativeAdView = GFPNativeAdView()
private var adNAMNativeSuperView: UIView = UIView()
override func viewDidLoad()
{
super.viewDidLoad()
// 심플형
namNativeSimpleAdView = Bundle.main.loadNibNamed("GFPNativeSimpleAdView",
owner: nil,
options: nil)?.first as? GFPNativeSimpleAdView
apNAMNativeAdRenderer = APNAMNativeAdRenderer.init()
apNAMNativeAdRenderer.namNativeSimpleAdView = namNativeSimpleAdView
// 일반형
namNativeAdView = Bundle.main.loadNibNamed("GFPNativeAdView",
owner: nil,
options: nil)?.first as? GFPNativeAdView
apNAMNativeAdRenderer.namNativeAdView = namNativeAdView
apNAMNativeAdRenderer.namNativeSuperView = adNAMNativeSuperView
adPopcornSSPNativeAd.setNAMRenderer(apNAMNativeAdRenderer, superView:adNAMNativeSuperView) // SuperView
}NAM의 경우 AdPopcornSSP, FAN, FAN Native Banner와 다르게 xib파일을 이용하여 직접 View를 생성한 뒤, 해당 xib 파일을 읽어와 renderer에 전달해 주어야 합니다.
APNAMNativeAdRenderer에 GFPNativeAdView와 superView를 세팅 후, setNAMRenderer:superView:API를 통해 render와 adNAMNativeSuperView 를 sdk에 최종적으로 전달합니다.
(adNAMNativeSuperView 를 render 설정시 넘겨 주면 SDK내부 코드에서 광고에 맞게 nativeAd, NativeSimpIeAd 를 추가하여 제공해줍니다.)
GFPNativeAdView
component 별로 사용되어야 하는 타입은 아래와 같습니다.
필수
advertiserLabel : UILabel
bodyLabel : UILabel
mediaView : GFPMediaView
adChoicesView : UIView
옵션
iconView : UIImageView
titleLabel : UILabel
callToActionLabel : UILabel
socialContextLabel : UILabel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+) 추가 기능
- 광고 중복 처리
중복 제어를 관리 할 GFPAdDedupeManager 프로퍼티 선언 후 객체를 생성합니다. numAdsDedupe는 중복 제어 수를 의미하며, 연속된 n개의 광고에 대해 중복이 없는 광고 노출을 보장합니다. 해당 파라미터는 2 이상 5 이하로 설정하기를 권장합니다.(참고 : NAM 광고 중복 처리 가이드)
// 중복 처리를 위한 GFPAdDedupeManager 생성
GFPAdDedupeManager *dedupeManager = [[GFPAdDedupeManager alloc] initWithNumAdsDeduped:3];
apNAMNativeAdRenderer.namDedupeManager = dedupeManager;복 처리를 위한 GFPAdDedupeManager 생성
var dedupeManager: GFPAdDedupeManager = GFPAdDedupeManager(numAdsDeduped: 3)
apNAMNativeAdRenderer.namDedupeManager = dedupeManager- 네이티브 광고 Background Blur 처리
네이티브 광고 미디어뷰 여백의 블러처리 여부를 설정합니다. (기본값: NO) 해당 블러처리는 섬네일 이미지가 존재할 때 적용되며, 섬네일 이미지가 존재하지 않을 경우 검은색 배경으로 노출됩니다. (참고 : NAM Background Blur 적용 가이드)
apNAMNativeAdRenderer.backgroundBlur = YES; // (Defult NO)apNAMNativeAdRenderer.backgroundBlur = true // (Defult false)Last updated
Was this helpful?