iOS에서 배너 광고 구현
중요: app-ads.txt는 광고 생태계의 부정 행위를 근절하고 투명성을 구축하기 위한 IAB 이니셔티브입니다. 설명된 대로 app-ads.txt를 구현해야 합니다. 그렇지 않으면 배너 수요가 크게 줄어듭니다.
배너 광고를 사용하려면 특정 유형의 배너 전용 광고 유닛이 필요합니다.
다른 뷰와 마찬가지로 배너 뷰 오브젝트를 뷰 계층 구조에 배치할 수 있습니다. 그러면 각 배너 인스턴스의 위치를 커스터마이즈하거나 여러 배너를 표시할 수 있습니다.
참고: 배너 콘텐츠는 Apple 가이드라인에 설명된 대로 안전 영역 외부에서 렌더링되지 않습니다.
스크립트 구현
배너 코드를 ViewController
구현부(.m
)에 추가합니다. 다음 스크립트 샘플은 두 가지 배너 광고를 화면에 표시하는 구현 예제입니다. 참조한 클래스에 대한 자세한 내용은 UADSBannerView
API 섹션을 참조하십시오.
MREC 배너 포맷 구현
참고: Unity Ads를 초기화한 후 배너 광고를 표시해야 합니다.
앱에 MREC(중간 직사각형) 크기의 광고 포맷을 표시하려면 300x250, 300x300, 450x450과 같이 적절한 크기를 사용해야 합니다. 특히 300x250 MREC 배너 광고의 경우 다음 예제 코드에서 아래 값을 변경합니다.
CGSizeMake(320, 50)
조정된 크기는 다음과 같습니다.
CGSizeMake(300, 250)
샘플 코드
@interface ViewController () <UADSBannerViewDelegate>
// This is the Ad Unit or Placement that will display banner ads:
@property (strong) NSString* placementId;
// This banner view object will be placed at the top of the screen:
@property (strong, nonatomic) UADSBannerView *topBannerView;
// This banner view object will be placed at the bottom of the screen:
@property (strong, nonatomic) UADSBannerView *bottomBannerView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.placementId = @"banner";
[UnityAds initialize: @"1234567" testMode: YES initializationDelegate: self];
}
// Example method for creating and loading the top banner view object:
- (void)loadTopBanner{
// Instantiate a banner view object with the Ad Unit ID and size:
self.topBannerView = [[UADSBannerView alloc] initWithPlacementId: _placementId size: CGSizeMake(320, 50)];
// Set the banner delegate for event callbacks:
self.topBannerView.delegate = self;
// Add the banner view object to the view hierarchy:
[self addBannerViewToTopView:self.topBannerView];
// Load ad content to the banner view object:
[_topBannerView load];
}
// Example method for creating and loading the bottom banner view object:
- (void)loadBottomBanner{
self.bottomBannerView = [[UADSBannerView alloc] initWithPlacementId: _placementId size: CGSizeMake(320, 50)];
self.bottomBannerView.delegate = self;
[self addBannerViewToBottomView:self.bottomBannerView];
[_bottomBannerView load];
}
// Example method for discarding the top banner view object (for example, if there's no fill):
- (void)unLoadTopBanner{
// Remove the banner view object from the view hierarchy:
[self.topBannerView removeFromSuperview];
// Set it to nil:
_topBannerView = nil;
}
// Example method for discarding the bottom banner view object:
- (void)unLoadBottomBanner{
[self.bottomBannerView removeFromSuperview];
_bottomBannerView = nil;
}
// Example method for placing the top banner view object:
- (void)addBannerViewToTopView:(UIView *)bannerView {
bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:bannerView];
[self.view addConstraints:@[
[NSLayoutConstraint constraintWithItem:bannerView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.topLayoutGuide
attribute:NSLayoutAttributeBottom
multiplier:1
constant:0],
[NSLayoutConstraint constraintWithItem:bannerView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:0]
]];
}
// Example method for placing the bottom banner view object:
- (void)addBannerViewToBottomView: (UIView *)bannerView {
bannerView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:bannerView];
[self.view addConstraints:@[
[NSLayoutConstraint constraintWithItem:bannerView
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:self.bottomLayoutGuide
attribute:NSLayoutAttributeTop
multiplier:1
constant:0],
[NSLayoutConstraint constraintWithItem:bannerView
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:0]
]];
}
// Implement the delegate methods:
#pragma mark : UADSBannerViewDelegate
- (void)bannerViewDidLoad:(UADSBannerView *)bannerView {
// Called when the banner view object finishes loading an ad.
NSLog(@"Banner loaded for Ad Unit or Placement: %@", bannerView.placementId);
}
- (void)bannerViewDidClick:(UADSBannerView *)bannerView {
// Called when the banner is clicked.
NSLog(@"Banner was clicked for Ad Unit or Placement: %@", bannerView.placementId);
}
- (void)bannerViewDidLeaveApplication:(UADSBannerView *)bannerView {
// Called when the banner links out of the application.
}
- (void)bannerViewDidError:(UADSBannerView *)bannerView error:(UADSBannerError *)error{
// Called when an error occurs showing the banner view object.
NSLog(@"Banner encountered an error for Ad Unit or Placement: %@ with error message %@", bannerView.placementId, [error localizedDescription]);
// Note that the UADSBannerError can indicate no fill (refer to the API documentation).
}
@end
다음 단계: 수익화 전략 가이드를 검토하고 구현 내용을 테스트하십시오.