iOS에서의 배너 광고 연동
모바일 배너 광고는 일반적으로 화면 상단이나 하단에 표시되는 광고이며, 사용자 세션 이 지속되는 동안 화면에 고정 표시됩니다. 배너 광고는 구현하기 쉽고 광고주 인지도를 끌어올리는데에 훌륭한 도구이기 때문에 모바일 앱에서 매우 인기있는 광고 유닛입니다.
아이언소스는 시스템에서 자동으로 시작되는 4가지 타입의 정적 또는 동적 배너를 지원합니다.
배너 광고 객체 생성 및 사이즈 설정
배너 광고 객체 생성은 OnInitSuccess 콜백 메시지 수신후에 수행해야 합니다.
// Create the banner view and set the ad unit id
self.bannerAdView = [[LPMBannerAdView alloc] initWithAdUnitId:@"adUnitId"];
배너 사이즈
LPMAdSize | 설명 | DP 기준 크기 (폭 X 높이) |
bannerSize | 표준 배너 | 320 x 50 |
largeSize | 대형 배너 | 320 x 90 |
mediumRectangleSize | 중간 사각형 배너 (MREC) | 300 x 250 |
적응형 | 휴대폰 및 태블릿 기기의 사이즈 및 방향에 따라 광고 크기를 조정 |
기기 폭 X에 대해 최적화된 높이로 설정 |
배너 사이즈 설정을 위해서는 아래 중 한 가지 방법으로 설정합니다:
화면 폭에 따라 크기가 조정되는 적응형 배너 광고 사이즈 (권장):
이 옵션은 기기의 타입에 따라 BANNER 또는 LEADERBOARD 사이즈를 반환합니다.
그 외에 적응형 배너 사이즈를 지원하는 광고 네트워크들 (Google, Yandex)의 경우에는 네트워크의 사이즈 최적화 로직에 따라 높이가 결정되어 반환됩니다.
LPMAdSize *bannerSize = [LPMAdSize createAdaptiveAdSize];
[self.bannerAdView setAdSize: bannerSize];
특정 배너 사이즈 지정:
이 옵션을 사용하면 다음 중 하나의 특정 배너 사이즈로 광고 크기를 지정할 수 있습니다: bannerSize, largeSize, mediumRectangleSize.
LPMAdSize *bannerSize = [LPMAdSize largeSize];
[self.bannerAdView setAdSize: bannerSize];
플레이스먼트
배너 광고에서 플레이스먼트는 리포팅 용도에 한해 지원됩니다. 코드 상에서 플레이스먼트를 loadAd 호출 전에 설정되어야 최초 로딩되는 광고 및 갱신되는 광고에 대해 모두 적용할 수 있습니다.
// Set the placement name
[self.bannerAdView setPlacementName:@"PlacementName"];
배너 대리자(delegate) 설정
코드 상에 LPMBannerAdViewDelegate를 구현해 광고 로드 및 송출 관련 정보를 수신할 수 있도록 합니다.
- 배너 광고 로드 전에 대리자를 설정하는 것이 좋습니다.
- 각 bannerAdView 객체 별로 대리자가 구현 및 할당되어야 합니다.
- 콜백 함수는 메인 스레드에서 실행됩니다.
- 콜백 함수가 모든 네트워크에서 지원되는 사항이 아닐 경우, 해당 콜백 함수 구현은 선택 사항입니다.
// Set delegate implementation
[self.bannerAdView setDelegate:self]
#pragma mark - LPMBannerAdViewDelegate
- (void)didLoadAdWithAdInfo:(nonnull LPMAdInfo *)adInfo {
//Ad was loaded successfully
}
- (void)didFailToLoadAdWithAdUnitId:(nonnull NSString *)adUnitId error:(nonnull NSError *)error {
// Ad load failed
}
- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {
// Ad was clicked
}
- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {
// Ad was displayed and visible on screen
}
- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {
// Optional. Ad was failed to be displayed on screen
}
- (void)didLeaveAppWithAdInfo:(LPMAdInfo *)adInfo {
// Optional. User pressed on the ad and was navigated out of the app
}
- (void)didExpandAdWithAdInfo:(LPMAdInfo *)adInfo {
// Optional. Ad is opened on full screen
}
- (void)didCollapseAdWithAdInfo:(LPMAdInfo *)adInfo {
// Optional. Ad is restored to its original size
}
레벨플레이 Ad Info
The LevelPlayAdInfo 파라미터에는 로드된 광고에 관한 정보가 포함되어 있습니다.
클래스의 구현과 클래스 내 사용 가능한 필드에 대한 자세한 설명은 여기를 참고하세요.
배너 광고 로드
loadAd API를 사용하여 배너 광고를 로드합니다.
// Load the banner ad
[self.bannerAdView loadAdWithViewController:self]
배너 갱신 일시 정지 및 재개
플랫폼 상에서 배너 갱신 주기 값이 정의되어 있는 경우, 코드상에서 배너 갱신을 일시 정지시킬 수 있습니다. 하기의 메서드들을 사용해 배너 광고 자동 갱신을 일시 정지시키거나, 일시정지된 배너의 자동 갱신을 재개합니다.
일시 정지되었던 배너 광고가 다시 표시되면, 배너가 일시정지될 때 시간부터 리프레시 주기까지 남았던 시간이 지난 후 배너가 갱신됩니다.
- pauseAutoRefresh – 배너 광고의 자동 갱신을 일시 정지합니다.
- resumeAutoRefresh – 일시정지된 배너 광고의 자동 갱신을 재개합니다.
// Pause refresh
[self.bannerAdView pauseAutoRefresh];
// Resume refresh
[self.bannerAdView resumeAutoRefresh];
배너 광고 삭제
배너 광고를 삭제하려면, destroy 메서드를 호출하려 배너 객체를 삭제합니다.
삭제된 배너 광고는 더 이상 표시가 불가능합니다. 배너 광고를 더 표시하려면, LPMBannerAdView 객체를 새로 생성합니다.
[self.bannerAdView destroy];
배너 광고 연동 구현 전체 예제
적응형 배너 사이즈로 배너 광고 객체를 생성하고 로드하는 예제입니다.
NS_ASSUME_NONNULL_BEGIN
@interface BannerAdViewController () <LPMBannerAdViewDelegate>
@property(nonatomic, strong) LPMBannerAdView *bannerAd;
@end
@implementation BannerAdViewController
- (void)dealloc {
[self.bannerAd destroy];
}
- (void)createBannerAd {
// Create the banner view and set the ad unit id
self.bannerAd = [[LPMBannerAdView alloc] initWithAdUnitId:@"adUnitId"];
// Set the placement name (optional)
[self.bannerAd setPlacementName:@"PlacementName"];
// Set the ad size
LPMAdSize *bannerSize = [self getBannerSize];
// Required when using adaptive ad size
if (bannerSize == nil) {
return;
}
[self.bannerAd setAdSize:bannerSize];
// Set the delegate implementation
[self.bannerAd setDelegate:self];
// Add the banner view to the view hierarchy with the proper constraints
[self addBannerViewWithSize:bannerSize];
}
- (LPMAdSize *)getBannerSize {
// 1. Recommended - Adaptive ad size that adjusts to the screen width
LPMAdSize *bannerSize = [LPMAdSize createAdaptiveAdSize];
// 2. Adaptive ad size using fixed width ad size
// self.bannerSize = [LPMAdSize createAdaptiveAdSizeWithWidth:400];
// 3. Specific banner size - BANNER, LARGE, MEDIUM_RECTANGLE
// self.bannerSize = [LPMAdSize mediumRectangleSize];
return bannerSize;
}
- (void)loadBannerAd {
[self.bannerAd loadAdWithViewController:self];
}
- (void)addBannerViewWithSize:(LPMAdSize *)bannerSize {
self.bannerAd.translatesAutoresizingMaskIntoConstraints = NO;
// Add the banner view to the view hierarchy
[self.view addSubview:self.bannerAd];
[NSLayoutConstraint activateConstraints:@[
[self.bannerAd.bottomAnchor constraintEqualToAnchor:self.view.safeAreaLayoutGuide.bottomAnchor],
[self.bannerAd.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor],
[self.bannerAd.widthAnchor constraintEqualToConstant:bannerSize.width],
[self.bannerAd.heightAnchor constraintEqualToConstant:bannerSize.height]
]];
}
#pragma mark - LPMBannerAdViewDelegate
- (void)didLoadAdWithAdInfo:(nonnull LPMAdInfo *)adInfo {}
- (void)didFailToLoadAdWithAdUnitId:(nonnull NSString *)adUnitId error:(nonnull NSError *)error {}
- (void)didClickAdWithAdInfo:(LPMAdInfo *)adInfo {}
- (void)didDisplayAdWithAdInfo:(LPMAdInfo *)adInfo {}
- (void)didFailToDisplayAdWithAdInfo:(LPMAdInfo *)adInfo error:(NSError *)error {}
- (void)didLeaveAppWithAdInfo:(LPMAdInfo *)adInfo {}
- (void)didExpandAdWithAdInfo:(LPMAdInfo *)adInfo {}
- (void)didCollapseAdWithAdInfo:(LPMAdInfo *)adInfo {}
@end
NS_ASSUME_NONNULL_END
레벨플레이 미디에이션 데모 앱
연동 데모 앱에서 배너 Ad Unit API를 사용하여 배너를 앱에 연동하는 방법 예제를 확인할 수 있습니다.
완료했습니다!
이제 앱에서 배너를 송출할 준비가 끝났습니다. 연동이 잘 되었는지를 저희가 제공하는 연동 Test Suite를 사용해 확인하세요..
아래의 연동 가이드를 따라서 배너 광고 네트워크를 추가하거나, 다른 광고 포맷을 설정 및 연동해 보세요: