광고 표시

애플리케이션에서 광고를 표시하는 경우, 전체 광고 관리를 Finteza로 이전 시킬 수 있습니다. iOS 기기의 광고 캠페인은 정시에 모든 사용자에게 한번에 개시됩니다. 애플리케이션 수정이 필요 없고, App Store에서 새로운 버전이 출시될 때까지 기다리거나 모든 기기가 업데이트 될 때까지 기다릴 필요가 없습니다.

실질적으로 Finteza에서 전체 콘텐츠 관리와, 세부적인 통계 및 전환이 이뤄지기 때문에 귀하는 애플리케이션의 광고 영역을 정의하기만 하면 됩니다.

Finteza에서는 광고를 배너라고 칭하긴 하지만, 이는 고정된 이미지나 GIF 애니메이션에 국한되지 아닙니다. 배너는 방문 페이지, 캐러셀, 팝업 등의 HTML5를 포함한 다양한 콘텐츠 유형을 넣을 수 있는 컨테이너입니다.

해당 FintezaBannerView 클래스는 SDK에서의 배너 다운로드 및 표시를 책임집니다.  이는 UIView 에서 파생된 것으로, 표준 방식으로 iOS 애플리케이션 유형의 계층 구조에 추가 할 수 있습니다.

Finteza에서 광고 영역 만들기 #

애플리케이션에서 배너를 만들기 전에, Finteza에서 광고 영역을 구성하세요. 그럼 광고 차단 콘텐츠를 관리할 수 있습니다.

다음 Finteza 패널의 웹사이트 섹션으로 이동 후, 애플리케이션을 찾아 "new zone"을 클릭하세요:

  • 이름과 허용되는 콘텐츠 형식을 설정하세요. 현재 JPG, PNG, GIF, HTML 형식이 지원됩니다.
  • 알 수 있는 경우 미리 영역 크기를 설정하거나 자동 영역 비율을 선택하세요.
  • 변경 사항을 저장하고 영역 ID를 복사하세요. 반드시 애플리케이션에서 지정되어야 합니다.
웹사이트/애플리케이션에 광고 영역 만들기

애플리케이션에서 배너 만들기 #

Interface Builder 또는 프로그램 방식에 따라 배너를 만들 수 있습니다.

Interface Builder

다음 UIView 유형의 새로운 인터페이스 요소를 만드세요. "Identity inspector" 탭 필드의 Custom Class에서 FintezaBannerView를 설정하세요. 배너 배치에 필요한 제한 사항을 설정하세요.

Interface Builder를 통한 배너 생성

프로그램 방식

특정 크기의 배너를 만들려면 다음 코드를 사용하세요:

Objective-C:

FintezaBannerView *banner = [[FintezaBannerView alloc] initWithFrame:bannerFrame];

Swift:

var banner = FintezaBannerView(frame: bannerFrame)

다음 코드를 사용하여 전체 뷰를 차지하는 배너를 생성하세요 (Auto Layout 사용):

Objective-C:

FintezaBannerView *banner = [[FintezaBannerView alloc] initWithFrame:CGRectZero];
[self.view addSubview:banner];
 
banner.translatesAutoresizingMaskIntoConstraints=NO;
[NSLayoutConstraint activateConstraints:@[
   [banner.topAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.topAnchor],
   [banner.bottomAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.bottomAnchor],
   [banner.leadingAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.leadingAnchor],
   [banner.trailingAnchor constraintEqualToAnchor:self.view.layoutMarginsGuide.trailingAnchor]
  ]];

Swift:

let banner = FintezaBannerView(frame: .zero)
self.view.addSubview(banner)
 
banner.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
   banner.topAnchor.constraint(equalTo: self.view.layoutMarginsGuide.topAnchor),
   banner.bottomAnchor.constraint(equalTo: self.view.layoutMarginsGuide.bottomAnchor),
   banner.leadingAnchor.constraint(equalTo: self.view.layoutMarginsGuide.leadingAnchor),
   banner.trailingAnchor.constraint(equalTo: self.view.layoutMarginsGuide.trailingAnchor)
  ])

초기화 #

배너의 영역 ID와 웹사이트 주소를 설정하세요.

Objective-C and Swift:

banner.zoneID = @"{ZONE_ID}";
banner.site = @"{WEBSITE_URL}";

다음 {ZONE_ID}에서, Finteza 광고 영역 ID를 설정하세요. 다음 {WEBSITE_URL}에서, 영역에 해당하는 애플리케이션 이름 또는 웹사이트 도메인을 설정하세요.

이러한 매개 변수는 Interface Builder에서도 설정할 수 있습니다. 이를 위해서는, FintezaBannerView 클래스를 선택하고 "Attributes inspector" 탭으로 이동하세요:

영역 ID와 웹사이트/애플리케이션 이름은 Interface Builder를 통해 지정 가능

콘텐츠 다운로드 #

콘텐츠 다운로드를 시작하려면 load 메소드를 호출하세요.

Objective-C:

[banner load];

Swift:

banner.load()

델리게이트 객체를 지정하여 콘텐츠 다운로드 상태에 대한 알림을 받을 수 있습니다. 그렇게 하려면, 델리게이트 속성에서 프로토콜을 구현하는 객체를 설정하세요:

@protocol FintezaBannerViewDelegate <NSObject>
- (void)fintezaBannerDidLoad:(nonnull FintezaBannerView *)banner;  // called if the content downloaded successfully
- (void)fintezaBannerDidFail:(nonnull FintezaBannerView *)banner;  // called in case of a failure
@end

예를 들면, 델리게이트는 콘텐츠 다운로드가 완료된 후에 한해서 부모보기에 배너를 추가 할 수 있습니다

IntrinsicContentSize에 기반한 배너 크기 정의 #

Auto Layout을 사용하는 경우, 배너 크기는 표준 intrinsicContentSize 속성을 기반으로 설정될 수 있습니다.

FintezaBannerView의 경우, intrinsicContentSize 가 Finteza의 영역 설정에서 설정된 값과 같습니다. 영역의 크기는 배너 요청 단계에서 알 수 있습니다.

정확한 영역 크기가 지정되지 않은 경우 (영역 설정에서 "Custom Size, use banner width\height" 설정), intrinsicContentSize 는 업로든 한 배너 콘텐츠에 따라 정의됩니다. JPG, PNG, GIF 배너의 경우, 이것이 이미지 크기가 됩니다.

이 같은 메소드는 명뱍하게 해당 콘텐츠 사이즈를 판단할 수 없기 때문에 HTML이나 적응형 배너에는 적합하지 않습니다.


광고 로테이션 #

광고 로테이션 시간은 rotationTime 속성에 의해 초 단위로 설정됩니다 (기본 값은 10분). 로테이션 배너의 경우, 배너를 포함한 부모 뷰가 표시될 때마다 load 메소드가 호출되어야 합니다 (예, viewWillAppear). rotationTime에 지정된 시간이 만료될 때까지 불필요한 네트워크 요청이 발생하지 않습니다.

Objective-C and Swift:

banner.rotationTime = 60  // rotation every minute

로테이션을 비활성화 하려면, rotationTime = 0으로 설정하세요.

해당 rotationTime 매개변수는 load 메소드를 호출하기 전에 지정되어야 합니다.