헤더비딩 적용 가이드
헤더비딩
PrebidMobile, Amazon Publisher Services(이하 "APS"라고 칭함)을 통한 HeaderBidding을 지원합니다.
PrebidMobile의 경우 1.5 버전을 기준으로 확인되었습니다. APS의 경우 아마존에서 제공하는 3.4.6 버전을 기준으로, 샘플 개발 및 QA 검증이 완료 되었으므로 참고 부탁드립니다.
source 'https://github.com/CocoaPods/Specs.git'
target 'MyApplication' do
pod 'PrebidMobile', '1.5'
pod 'AmazonPublisherServicesSDK', '3.4.6'
end
PrebidMobile 연동
PrebidMobile을 통한 헤더비딩 연동은 배너 광고에 한해 지원됩니다.
아래 가이드는 NAMSDK 연동과 관련된 내용을 다루고 있습니다. PrebidMobile에 대한 자세한 내용은 공식 가이드를 참고해주시기 바랍니다.
Prebid 설정
- Objective-C
- Swift
Prebid.shared.prebidServerAccountId = @"accountId 입력";
//testAccountId: "bfa84af2-bd16-4d35-96ad-31c6bb888df0"
BannerAdUnit *bannerAdUnit = [[BannerAdUnit alloc] initWithConfigId:@"configId 입력" size:CGSizeMake(300, 250)];
//testConfigId: "6ace8c7d-88c0-4623-8117-75bc3f0a2e45"
Prebid.shared.prebidServerAccountId = @"accountId 입력";
//testAccountId: "bfa84af2-bd16-4d35-96ad-31c6bb888df0"
let bannerAdUnit = BannerAdUnit(configId: "configId 입력", size: CGSize(width: 300, height: 250))
//testConfigId: "6ace8c7d-88c0-4623-8117-75bc3f0a2e45"
Prebid 정보 요청
- NSMutableDictionary를 파라미터로 fetchDemandWithAdObject:completion: 을 호출합니다.
- fetch 성공 시 생성한 Dictionary에 "hb_"의 prefix를 가진 데이터가 추가됩니다.
- Objective-C
- Swift
NSMutableDictionary *requestPrebid = [NSMutableDictionary dictionary];
[bannerAdUnit fetchDemandWithAdObject:requestPrebid completion:^(enum ResultCode result) {
if(result == ResultCodePrebidDemandFetchSuccess) {
//TODO: adParam 설정 후 banner 광고 요청
}
}];
let requestPrebid = NSMutableDictionary.init()
bannerAdUnit.fetchDemand(adObject: requestPrebid) { (resultCode) in
if resultCode == ResultCode.prebidDemandFetchSuccess {
//TODO: adParam 설정 후 banner 광고 요청
}
}
AdParam 설정 & 배너 로드
- 2번의 스텝에서 얻은 Dictionary 데이터를 AdParam의 prebidHBParam에 설정합니다.
- AdParam을 GFPAdLoader 혹은 GFPBannerView에 설정한 후 광고를 요청합니다.
- AdParam에 대한 자세한 내용은 광고 요청 정보 가이드를 참고해주세요.
- Objective-C
- Swift
GFPAdParam *adParam = [[GFPAdParam alloc] init];
adParam.gender = GFPAdParamGenderTypeFemale;
adParam.yearOfBirth = 1995;
adParam.prebidHBParam = requestPrebid;
//TODO: 광고 요청
let adParam = GFPAdParam()
adParam.gender = .female
adParam.yearOfBirth = 1995
if let prebidParam = requestPrebid as? [String : String] {
adParam.prebidHBParam = prebidParam
}
//TODO: 광고 요청
APS 연동
APS을 통한 헤더비딩 연동은 배너 광고에 한해 지원됩니다.
아래 가이드는 NAMSDK 연동과 관련된 내용을 다루고 있습니다. APS에 대한 자세한 내용은 공식 가이드를 참고해주시기 바랍니다.
APS 설정
NAMSDK 에서는 MRAID 1.0, 2.0, 3.0 스펙 을 지원합니다. 아래의 MRAID 설정은 반드시 따라주시기 바랍니다.
- Objective-C
- Swift
[[DTBAds sharedInstance] setAppKey: @"appKey 입력"];
//testAppKey: "c5f20fe6e37146b08749d09bb2b6a4dd"
[[DTBAds sharedInstance] setMraidPolicy:CUSTOM_MRAID];
[[DTBAds sharedInstance] setMraidCustomVersions:@[@"1.0", @"2.0", @"3.0"]];
DTBAds.sharedInstance().setAppKey("appKey 입력")
//testAppKey: "c5f20fe6e37146b08749d09bb2b6a4dd"
DTBAds.sharedInstance().mraidPolicy = CUSTOM_MRAID
DTBAds.sharedInstance().mraidCustomVersions = ["1.0", "2.0", "3.0"]
APS 정보 요청
자세한 내용은 APS 공식 가이드를 참고해주세요.
- Objective-C
- Swift
DTBAdSize *dtbAdSize = [[DTBAdSize alloc] initBannerAdSizeWithWidth:320 height:50 andSlotUUID:@"slotUUID 입력"];
//testSlotUUID: "88e6293b-0bf0-43fc-947b-925babe7bf3f"
DTBAdLoader *adLoader = [DTBAdLoader new];
[adLoader setSizes:dtbAdSize, nil];
[adLoader loadAd:self];
#pragma mark - DTBAdCallback
- (void)onFailure: (DTBAdError)error {
NSLog(@"Failed to load ad :(");
/**Please implement the logic to send ad request without our parameters if you want to
show ads from other ad networks when Amazon ad request fails**/
}
- (void)onSuccess: (DTBAdResponse *)adResponse {
/**Build the ad request to your ad server. This portion will differ depending on your
ad server**/
}
let dtbAdSize = DTBAdSize(bannerAdSizeWithWidth: 320, height: 50, andSlotUUID: "slotUUID 입력")
//testSlotUUID: "88e6293b-0bf0-43fc-947b-925babe7bf3f"
let dtbAdLoader = DTBAdLoader()
dtbAdLoader.setAdSizes([dtbAdSize])
dtbAdLoader.loadAd(self)
func onFailure(_ error: DTBAdError) {
/**Please implement the logic to send ad request without our parameters if you want to
show ads from other ad networks when Amazon ad request fails**/
}
func onSuccess(_ adResponse: DTBAdResponse!) {
/**Build the ad request to your ad server. This portion will differ depending on your
ad server**/
}
AdParam 설정 & 배너 로드
- DTBAdCallback의 onSuccess 수신 시, APS 정보를
GFPAPSAdParam
에 세팅 후,AdParam의 apsParam
에 설정합니다. - AdParam을 GFPBannerView에 설정한 후 광고를 요청합니다.
- (주의) [광고 요청 전, 이전 데이터 초기화 필요] AdParam을 재사용 한다면, onFailure 수신 시 AdParam의 apsParam을 리셋해주어야 합니다.
- Objective-C
- Swift
- (void)onSuccess: (DTBAdResponse *)adResponse {
GFPAdParam *adParam = [[GFPAdParam alloc] init];
adParam.gender = GFPAdParamGenderTypeFemale;
adParam.yearOfBirth = 1995;
GFPAPSAdParam *apsParam = [[GFPAPSAdParam alloc] init];
apsParam.crid = adResponse.crid;
apsParam.size = CGSizeMake(adResponse.adSize.width, adResponse.adSize.height);
apsParam.apsHBParam = adResponse.customTargeting;
apsParam.skAdNetworkParams = adResponse.skAdNetworkParams;
adParam.apsParam = apsParam;
//TODO: banner 광고 요청
}
func onSuccess(_ adResponse: DTBAdResponse!) {
let adParam = GFPAdParam()
adParam.gender = .female
adParam.yearOfBirth = 1995
let apsParam = GFPAPSAdParam()
apsParam.crid = adResponse.crid
apsParam.size = CGSize(width: adResponse.adSize.width, height: adResponse.adSize.height)
if let customTargeting = adResponse.customTargeting().map as? [String : NSObject] {
apsParam.apsHBParam = customTargeting
}
apsParam.skAdNetworkParams = adResponse.skAdNetworkParams;
adParam.apsParam = apsParam;
//TODO: banner 광고 요청
}
MRAID 3.0 Unload
MRAID 3.0의 Unload 호출 시에 발생하는 이벤트를 알리기 위해 다음 메서드가 GFPBannerViewDelegate에 추가되었습니다.
- Objective-C
- Swift
- (void)bannerShouldUnload:(GFPBannerView *)bannerView{
// ...
}
func bannerShouldUnload(_ bannerView: GFPBannerView) {
// ...
}