생중계 광고
GFPSDK에서는 LIVE 스트리밍 중 광고 연동을 희망하시는 시점에 광고 로더를 생성하여 요청하는 형태의 광고를 제공합니다.
광고 요청은 원하는 광고 개수만큼 스케줄 생성할 수 있고, 동영상 플레이어는 AVPlayer로 SDK에서 제공합니다.
생중계 광고 요청하기
GFPVideoScheduleManager 생성 및 GFPVideoAdScheduleManagerDelegate 구현
광고 스케줄 생성
generatePreRollVideoSchedule API를 통해서 GFPVideoSchedule 정보를 생성합니다.
adUnitId(String) : 광고 ID
adsCount(INT) : 요청 광고 갯수
- Swift
- Objective-C
let videoSchedule = GFPVideoAdScheduleManager.generatePreRollVideoSchedule("schdule_video_id", adsCount: 3)
GFPVideoSchedule *videoSchedule = [GFPVideoAdScheduleManager generatePreRollVideoSchedule:@"schdule_video_id"
adsCount:5];
광고 로드 시작하기
로드된 스케줄을 GFPVideoAdScheduleManager로 전달하여 광고 로드를 시작합니다.
- Swift
- Objective-C
scheduleManager.loadSchedule(with: videoSchedule)
[scheduleManager loadScheduleWith:videoSchedule];
adsCount로 요청주신 광고가 로드 시에 실패할 수 있으므로 갯수가 완전히 보장되지는 않습니다.
adsCount만큼의 광고 요청, 실패 콜이 GFPVideoAdScheduleManagerDelegate를 통해서 발생합니다.
해당 콜을 토대로 전체 로드된 광고 갯수를 유추할 수 있습니다.
카운트 광고 뷰 추가하기
SKIP 버튼 및 SKIP Label 위에 추가되는 뷰의 필요성으로 인해, 서비스에서 필요한 뷰 주입 기능입니다.
SDK로 넘겨질 뷰 구현
접근성 처리를 위한 GFPVideoAdAdditionalViewDataAccessibilityProvider 구현이 필수입니다.
간단한 클래스 예제는 다음과 같습니다. 해당 클래스는 UILabel을 멤버로 갖고, subView로 가지는 일반 뷰입니다.
접근성 처리를 위해서 접근성 오브젝트로 label을 반환합니다.
- Swift
- Objective-C
public class AdAdditionalTestView: UIView, GFPVideoAdAdditionalViewDataAccessibilityProvider {
public let label = UILabel()
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
private func setupView() {
addSubview(label)
}
func additionalAdAccessibilityView() -> UIView {
return label
}
}
#import <UIKit/UIKit.h>
@protocol GFPVideoAdAdditionalViewDataAccessibilityProvider <NSObject>
- (UIView *)additionalAdAccessibilityView;
@end
@interface AdAdditionalTestView : UIView <GFPVideoAdAdditionalViewDataAccessibilityProvider>
@property (nonatomic, strong, readonly) UILabel *label;
@end
@interface AdAdditionalTestView ()
@property (nonatomic, strong, readwrite) UILabel *label;
@end
@implementation AdAdditionalTestView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self setupView];
}
return self;
}
- (void)setupView {
self.label = [[UILabel alloc] init];
[self addSubview:self.label];
}
- (UIView *)additionalAdAccessibilityView {
return self.label;
}
@end
렌더링 세팅에 뷰 할당
위에 작성된 클래스로 생성된 뷰를 GFPScheduleManager의 RenderingSetting에 adAdditionalView로 추가합니다.
해당 선언된 프로퍼티에 SDK에 넘겨줄 뷰를 셋팅하고, 스케쥴 매니저의 RenderingSetting에 할당합니다.
이후에 광고를 로드하면, SKIP Button의 위쪽에 할당된 뷰가 마진 8의 값으로 노출되게 됩니다.
로드할 때 전달된 광고 뷰를 조작하면 중간에 광고 뷰의 사이즈를 변경하거나, 내용을 조절하더라도 그대로 반영됩니다.
- Swift
/**
* 인스트림의 SKIP 버튼 위의 Additional Info를 표기할 뷰입니다.
* adCount 등에 사용됩니다.
*/
public var adAdditionalInfoView:(UIView & GFPVideoAdAdditionalViewDataAccessibilityProvider)?