1. 인스턴스 생성
AdPopcornSSPNativeAd
를 생성합니다. storyboard에 AdPopcornSSPNativeAd 영역 지정 후 아래 스크린샷과 같이 Outlet 연결합니다.
#import <AdPopcornSSP/AdPopcornSSPNativeAd.h>
@property (strong, nonatomic) IBOutlet AdPopcornSSPNativeAd *adPopcornSSPNativeAd;
class ViewController: UIViewController, APSSPNativeAdDelegate
{
// AdPopcornSSPNativeAd
var apSSPNativeAdRenderer: APSSPNativeAdRenderer!
@IBOutlet var adPopcornSSPNativeAd: AdPopcornSSPNativeAd!
@IBOutlet var apSSPIconImageView: UIImageView!
@IBOutlet var apSSPTitleView: UILabel!
@IBOutlet var apSSPDescView: UILabel!
@IBOutlet var apSSPMainImageView: UIImageView!
@IBOutlet var apSSPNativeAdView: UIView!
}
ViewController.m을 수정하여 생성한 인스턴스에 setPlacementInfoWithAppkey API를 이용하여 아래와 같이 AppKey , PlacementId , ViewController를 설정 합니다.
@implementation AdPopcornSSPNativeViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[_adPopcornSSPNativeAd setPlacementInfoWithAppKey:@“발급받은앱키” placementId:@“발급받은 네이티브 PlacementId” viewController:self];
_adPopcornSSPNativeAd.delegate = self;
}
@end
ViewController.swift을 수정하여 생성한 인스턴스에 setPlacementInfoWithAppkey API를 이용하여 아래와 같이 AppKey , PlacementId , ViewController를 설정 합니다.
class ViewController: UIViewController, APSSPNativeAdDelegate
{
// AdPopcornSSPNativeAd
var apSSPNativeAdRenderer: APSSPNativeAdRenderer!
@IBOutlet var adPopcornSSPNativeAd: AdPopcornSSPNativeAd!
@IBOutlet var apSSPIconImageView: UIImageView!
@IBOutlet var apSSPTitleView: UILabel!
@IBOutlet var apSSPDescView: UILabel!
@IBOutlet var apSSPMainImageView: UIImageView!
@IBOutlet var apSSPNativeAdView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
adPopcornSSPNativeAd.setPlacementInfoWithAppKey("YOUR_APP_KEY",
placementId: "YOUR_PLACEMENT_Id", viewController: self)
adPopcornSSPNativeAd.delegate = self
apSSPNativeAdRenderer = APSSPNativeAdRenderer.init()
apSSPNativeAdRenderer.apSSPNativeAdView = apSSPNativeAdView
apSSPNativeAdRenderer.titleLabel = apSSPTitleView
apSSPNativeAdRenderer.descLabel = apSSPDescView
apSSPNativeAdRenderer.mainImageView = apSSPMainImageView
apSSPNativeAdRenderer.iconImageView = apSSPIconImageView
adPopcornSSPNativeAd.setApSSPRenderer(apSSPNativeAdRenderer, superView: apSSPNativeAdView)
}
}
2. 네이티브 레이아웃 구성
네이티브 레이아웃의 구성은 미디에이션 사용 여부에 따라 달라지게 됩니다.
아래 두 링크를 참고하여서 레이아웃을 구성 부탁 드립니다.
[네이티브 광고 레이아웃 구성 가이드]
[네이티브 광고 미디에이션 레이아웃 구성 가이드]
애드팝콘 SSP v2.3.2 버전부터는 Admob v8.10.0 과 호환성을 유지하기 위해 애드몹 native 레이아웃을 구성하는 내용이 변경되었습니다. 이에 미디에이션 레이아웃 구성 가이드 내 AdMob 부분을 반드시 체크해 주시기 바랍니다.
1) Placement ID 변경
네이티브 인스턴스 생성 시 사용한 placementID를 변경하고자 할 경우, 아래와 같은 방식으로 변경합니다.
_adPopcornSSPNativeAd.placementId = @"변경하고자 할 ID";
adPopcornSSPNativeAd.placementId = "변경하고자 할 ID"
3. 네이티브 광고 요청
네이티브 인스턴스와 asset의 적절한 배치가 완료 된 경우 , 광고 요청 loadRequest
API를 호출 하여 광고를 받아 옵니다.
[_sspNativeAd loadRequest];
adPopcornSSPNativeAd.loadRequest()
loadRequst 호출에 대한 결과로 광고 수신에 실패한 경우에는 loadAd 재호출을 하시면 안됩니다. 과도한 광고 요청 api 호출은 block 사유가 됩니다.
광고 수신이 정상적으로 완료 된 경우 아래 스크린샷과 같이 광고가 노출 됩니다.
4. 네이티브 광고 중단
네이티브 광고 노출을 중단하고자 할 경우, stopAd
API를 호출해 주며, 광고 영역을 hidden 처리해 줍니다.
[_sspNativeAd stopAd];
_sspNativeAd.hidden = YES;
adPopcornSSPNativeAd.stopAd()
5. No Ad 시, 광고 영역 처리
기본적으로 애드팝콘 SDK에서는 네이티브 광고 No Ad 시, view 영역을 hidden 시켜줍니다.
이러한 기능이 필요하지 않을 경우, 아래 API를 통해 hidden 되지 않도록 설정하여 줍니다.
[_adPopcornSSPNativeAd noAdViewHidden:NO];
adPopcornSSPNativeAd.noAdViewHidden(true)
6. 델리게이트 설정
네이티브광고에서 발생하는 이벤트에 대한 델리게이트를 제공합니다.
델리게이트를 사용하기 위해서는 APSSPNativeAdDelegate를 추가하여야 합니다.
_sspNativeAd 인스턴스에 delegate를 설정하고 구현하여야 합니다.
adPopcornSSPNativeAd 인스턴스에 delegate를 설정하고 구현하여야 합니다.
#import <AdPopcornSSP/AdPopcornSSPNativeAd.h>
@interface AdPopcornSSPNativeViewController () <APSSPNativeAdDelegate>
{
}
@property (strong, nonatomic) IBOutlet AdPopcornSSPNativeAd *adPopcornSSPNativeAd;
@end
@implementation AdPopcornSSPNativeViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[_adPopcornSSPNativeAd setPlacementInfoWithAppKey:@"발급받은앱키" placementId:@"발급받은 네이티브 PlacementId" viewController:self];
_adPopcornSSPNativeAd.delegate = self;
}
#pragma AdPopcornSSPNativeAdDelegate
- (void)AdPopcornSSPLoadNativeAdFailedWithError:(AdPopcornSSPError *)error
{
}
- (void)APSSPNativeAdLoadSuccess:(AdPopcornSSPNativeAD *)native Ad
{
}
- (void)APSSPNativeAdLoadFail:(AdPopcornSSPNativeAD *)nativeAd error:(AdPopcornSSPError) error
{
}
- (void)APSSPNativeAdImpression:(AdPopcornSSPNativeAd *)nativeAd
{
}
- (void)APSSPNativeAdClicked:(AdPopcornSSPNativeAd *)nativeAd
{
}
- (void)APSSPNativeAdHidden:(AdPopcornSSPNativeAd *)nativeAd
{
}
@end
class ViewController: UIViewController, APSSPNativeAdDelegate
{
// AdPopcornSSPNativeAd
var apSSPNativeAdRenderer: APSSPNativeAdRenderer!
@IBOutlet var adPopcornSSPNativeAd: AdPopcornSSPNativeAd!
@IBOutlet var apSSPIconImageView: UIImageView!
@IBOutlet var apSSPTitleView: UILabel!
@IBOutlet var apSSPDescView: UILabel!
@IBOutlet var apSSPMainImageView: UIImageView!
@IBOutlet var apSSPNativeAdView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
adPopcornSSPNativeAd.setPlacementInfoWithAppKey("YOUR_APP_KEY",
placementId: "YOUR_PLACEMENT_Id", viewController: self)
adPopcornSSPNativeAd.delegate = self
apSSPNativeAdRenderer = APSSPNativeAdRenderer.init()
apSSPNativeAdRenderer.apSSPNativeAdView = apSSPNativeAdView
apSSPNativeAdRenderer.titleLabel = apSSPTitleView
apSSPNativeAdRenderer.descLabel = apSSPDescView
apSSPNativeAdRenderer.mainImageView = apSSPMainImageView
apSSPNativeAdRenderer.iconImageView = apSSPIconImageView
adPopcornSSPNativeAd.setApSSPRenderer(apSSPNativeAdRenderer, superView: apSSPNativeAdView)
}
// Native Delegate
func apsspNativeAdLoadSuccess(_ nativeAd: AdPopcornSSPNativeAd!) {
}
func apsspNativeAdLoadFail(_ nativeAd: AdPopcornSSPNativeAd!, error: AdPopcornSSPError!) {
}
func apsspNativeAdImpression(_ nativeAd: AdPopcornSSPNativeAd!) {
}
func apsspNativeAdClicked(_ nativeAd: AdPopcornSSPNativeAd!) {
}
func apsspNativeAdHiden(_ nativeAd: AdPopcornSSPNativeAd!) {
}
}