Getting Started
The GFP SDK helps you display in-stream video ads.
Prerequisites
Implementing View Controller
In the view controller that will present the ad view as subview,
-
add these properties
GFPVideoAdScheduleManager *scheduleManager
IBOutlet UIView *videoView
AVPlayer *contentPlayer
-
and implement this delegate protocol
GFPVideoAdScheduleManagerDelegate
- Swift
- Objective-C
// MyViewController.h
import GFPSDK
class MyViewController : UIViewController, GFPVideoAdScheduleManagerDelegate {
var scheduleManager : GFPVideoAdScheduleManager?
@IBOutlet var videoView : UIView!
var contentPlayer : AVPlayer?
}
// MyViewController.h
@import GFPSDK;
@interface MyViewController : UIViewController <GFPVideoAdScheduleManagerDelegate>
@property (nonatomic) GFPVideoAdScheduleManager *scheduleManager;
@property (nonatomic) IBOutlet UIView *videoView;
@property (nonatomic) AVPlayer *contentPlayer;
@end
GFPVideoAdScheduleManager
Initialize GFPVideoAdScheduleManager
in your view controller, say, in viewDidLoad:
and request an ad.
-
Provide
GFPVideoAdScheduleManager
with video ad Schedule ID (essential) as registered on GFP dashboard, an AVPlayer instance, UIView to enclose video view, andGFPAdScheduleParam
(optional) for better ad performance. -
Set
GFPVideoAdScheduleManagerDelegate
(required) toGFPVideoAdScheduleManager
GFPVideoAdScheduleManager must be manually deallocated by calling destroy:
method.
- Swift
- Objective-C
override func viewDidLoad() {
super.viewDidLoad()
let adParam = GFPAdParam()
adParam.yearOfBirth = 1990
adParam.gender = .male
...
let scheduleParam = GFPAdScheduleParam(placementPolicy: .full, duration: CMTimeGetSeconds(self.duration!), param: adParam)
scheduleParam.noticeDurationSec = 5.0
self.scheduleManager = GFPVideoAdScheduleManager(adScheduleID: "YOUR_SCHEDULE_ID", contentPlayer: contentPlayer, videoView: videoView, scheduleParam: scheduleParam)
self.scheduleManager?.renderingSetting = GFPVideoAdRenderingSetting()
self.scheduleManager?.delegate = self
self.scheduleManager?.qoeDelegate = self
self.scheduleManager?.loadSchedule()
}
- (void)viewDidLoad {
[super viewDidLoad];
GFPAdParam *adParam = [[GFPAdParam alloc]init];
adParam.yearOfBirth = 1990;
adParam.gender = GFPAdParamGenderTypeMale;
...
GFPVideoPlacementType type = GFPVideoPlacementTypePre | GFPVideoPlacementTypeMid | GFPVideoPlacementTypePost;
GFPAdScheduleParam *param = [[GFPAdScheduleParam alloc] initWithPlacementPolicy: type duration: CMTimeGetSeconds(Content duration) param: adParam];
param.noticeDurationSec = 5.0;
...
self.scheduleManager = [[GFPVideoAdScheduleManager alloc] initWithAdScheduleID: @"YOUR_SCHEDULE_ID"
contentPlayer: contentPlayer
videoView: videoView
scheduleParam: param];
self.scheduleManager.renderingSetting = [GFPVideoAdRenderingSetting alloc] init];
self.scheduleManager.delegate = self;
self.scheduleManager.qoeDelegate = self;
[self.scheduleManager loadSchedule];
}
GFPVideoAdScheduleManagerDelegate
Schedule Events
On Schedule Request Success
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didLoadedSchedule aAdBreak: [GFPVideoAdBreak]?) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didLoadedSchedule:(NSArray <GFPVideoAdBreak *> * _Nullable)aAdBreak {
...
}
On Schedule Request Failure
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didFailScheduleWithError aError: GFPError) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didFailScheduleWithError:(GFPError *)aError {
...
}
On Schedule Complete
- Swift
- Objective-C
func scheduleManagerDidCompleted(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
...
}
- (void)scheduleManagerDidCompleted:(GFPVideoAdScheduleManager *)aScheduleAdManager {
...
}
Video Playback Events
On Resuming Content
Called when the player resumes, in other words, continues to play content video in case of ad schedule failure or ad video fails to play
- Swift
- Objective-C
func scheduleManagerContentResumeRequest(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
...
}
- (void)scheduleManagerContentResumeRequest:(GFPVideoAdScheduleManager *)aScheduleAdManager {
...
}
On Pausing Content
Called when the player pauses content to play ad video.
- Swift
- Objective-C
func scheduleManagerContentPauseRequest(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
...
}
- (void)scheduleManagerContentPauseRequest:(GFPVideoAdScheduleManager *)aScheduleAdManager {
...
}
Video Ad Events
See more information in GFPVideoAdScheduleManagerDelegate.h
On Ad Failure
Ad failure includes ad load and ad video playback failure.
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didFailWith aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didFailWithResult:(GFPVideoAdBreakResult *)aResult {
...
}
On Ad Loaded
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didLoadAd aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didLoadAd:(GFPVideoAdBreakResult *)aResult {
...
}
On Ad Video Started
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didStartAd aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didStartAd:(GFPVideoAdBreakResult *)aResult {
...
}
On Ad Video Ready
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didStartReadyAd aResult: GFPVideoAdBreakResult) {
/* 1. Manually hide preliminary ad notice label */
/* 2. Manually stop content video player. */
...
self.scheduleAdManager?.start(with: true) /* 3. Start ad video */
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didStartReadyAd:(GFPVideoAdBreakResult *)aResult {
/* 1. Manually hide preliminary ad notice label */
/* 2. Manually stop content video player. */
...
[self.scheduleAdManager startWith: NO or YES]; /* 3. Start ad video */
}
On Video Ad Playback Ended
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didCompleteAd aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didCompleteAd:(GFPVideoAdBreakResult *)aResult {
...
}
On Show Preliminary Ad Notice Label
GFPAdScheduleParam.noticeDurationSec
must be set to call this delegate method.
SDK only notifies the time to show the notice label through this method. It is app's will to manually render the notice label view.
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, showAdNotice aDuration: Int) {
/* Show to notice label */
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager showAdNotice:(NSInteger)aDuration {
/* Show to notice label */
...
}
On Clicked
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, wasClicked aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager wasClicked:(GFPVideoAdBreakResult *)aResult {
...
}
AVPlayer Log Event
It is called only if video player is configured as AVPlayer.
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didReceive accessLogEvents: [AVPlayerItemAccessLogEvent]) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager
didReceiveAccessLogEvents:(NSArray<AVPlayerItemAccessLogEvent *> *)accessLogEvents {
...
}
Remind(NonLinear) Ad Events
See more information in GFPNonLinearDelegate.h
On Remind Ad Hidden
It is called when the video duration is completed, device being rotated or close button being clicked.
- Swift
- Objective-C
func nonLinearDidHide(_ type: GFPRemindType) {
...
}
- (void)nonLinearDidHide:(GFPRemindType)type {
...
}
On Remind Ad Clicked
- Swift
- Objective-C
func nonLinearWasClicked(_ type: GFPRemindType) {
...
}
- (void)nonLinearWasClicked:(GFPRemindType)type {
...
}
On Remind Ad View Impression
- Swift
- Objective-C
func nonLinear(onActiveImpression type: GFPRemindType) {
...
}
- (void)nonLinearOnActiveImpression:(GFPRemindType)type {
...
}
ControlView Callbacks
Set a GFPVideoAdScheduleManagerDelegate
to the GFPVideoAdScheduleManager
On ControlView Will Show
The duration refers to animation's, when showing the control buttons.
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager playControlWillShow:(NSTimeInterval)duration {
}
On ControlView Will Hide
The duration refers to animation's, when hiding the control buttons.
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager playControlWillHide:(NSTimeInterval)duration {
}