Getting Started
The GFP SDK helps you display in-stream video ads.

Prerequisites
NAMSDK Import
Import the SDK module.
- Swift
- Objective-C
import GFPSDK
@import GFPSDK;
Setting Up Video Ad Provider
- GFPVideoProviderOptionNDA: Naver Display video ads
- Swift
- Objective-C
// Add cocoapods dependency to integrate IMA and NDA video ads.
GFPAdManager.setup(withPublisherCd: "publisherCd") { (error : GFPError?) in
print("Setup Eror: \(String(describing: error?.description))")
}
// Add cocoapods dependency to integrate IMA and NDA video ads.
[GFPAdManager setupWithPublisherCd:@"publisherCd" completionHandler:^(GFPError * _Nullable error) {
NSLog(@"Setup ERROR: %@", error);
}];
Video Ad Manager Types
- GFPVideoAdScheduleManager is provided to support scheduling of pre-roll, mid-roll, and post-roll ads.
Implementing View Controller
Create a view controller (MyViewController) and perform the following in the header file (MyViewController.h).
- Declare a
GFPVideoAdScheduleManager *scheduleManagerproperty in the view controller. - Implement the
GFPVideoAdScheduleManagerDelegateprotocol in the view controller. - Prepare a container view (UIView) for video playback.
- Swift
- Objective-C
// MyViewController.h
import GFPSDK
class MyViewController : UIViewController, GFPVideoAdScheduleManagerDelegate {
var scheduleManager : GFPVideoAdScheduleManager?
@IBOutlet var videoView : UIView! // Assumed to be connected to a view object in the storyboard
var contentPlayer : AVPlayer? // Player on which content is played
}
// MyViewController.h
@import GFPSDK;
@interface MyViewController : UIViewController <GFPVideoAdScheduleManagerDelegate>
@property (nonatomic) GFPVideoAdScheduleManager *scheduleManager;
@property (nonatomic) IBOutlet UIView *videoView; // Assumed to be connected to a view object in the storyboard
@property (nonatomic) AVPlayer *contentPlayer; // Player on which content is played
@end
Creating GFPVideoAdScheduleManager and Requesting Ads
In the viewDidLoad method of MyViewController.m, create an instance of GFPVideoAdScheduleManager and request an ad.
- When creating a
GFPVideoAdScheduleManagerinstance, set the schedule information using the video ad schedule ID you received, the Content Player (AVPlayer), the UIView where the ad will be displayed, and GFPAdScheduleParam. The Content Player is used to measure time for ad playback. - When you are done using GFPVideoAdScheduleManager, you must call the 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()
// Request ad schedule
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];
// Request ad schedule
self.scheduleManager.delegate = self;
self.scheduleManager.qoeDelegate = self;
[self.scheduleManager loadSchedule];
}
Implementing GFPVideoAdScheduleManagerDelegate
By implementing GFPVideoAdScheduleManagerDelegate, you can receive events through the corresponding methods.
Schedule Load Success and Failure
On Schedule Load Success
When the schedule loads successfully, ad scheduling begins.
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didLoadedSchedule aAdBreak: [GFPVideoAdBreak]?) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didLoadedSchedule:(NSArray <GFPVideoAdBreak *> * _Nullable)aAdBreak {
...
}
On Schedule Load Failure
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didFailScheduleWithError aError: GFPError) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didFailScheduleWithError:(GFPError *)aError {
...
}
When All Schedules Have Completed
- Swift
- Objective-C
func scheduleManagerDidCompleted(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
...
}
- (void)scheduleManagerDidCompleted:(GFPVideoAdScheduleManager *)aScheduleAdManager {
...
}
Content Playback and Pause Events
Called When It Is Time to Resume Content Playback
- Swift
- Objective-C
func scheduleManagerContentResumeRequest(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
/* Resume content player when there is no pre-roll ad or when ad playback fails */
...
}
- (void)scheduleManagerContentResumeRequest:(GFPVideoAdScheduleManager *)aScheduleAdManager {
/* Resume content player when there is no pre-roll ad or when ad playback fails */
...
}
Called When It Is Time to Pause Content Playback
- Swift
- Objective-C
func scheduleManagerContentPauseRequest(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
/* Pause content player before ad playback */
...
}
- (void)scheduleManagerContentPauseRequest:(GFPVideoAdScheduleManager *)aScheduleAdManager {
/* Pause content player before ad playback */
...
}
Events Occurring After Ad Playback
See GFPVideoAdScheduleManagerDelegate.h for more details.
On Ad Load or Playback Failure
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didFailWith aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didFailWithResult:(GFPVideoAdBreakResult *)aResult {
...
}
When Video Ad Is Loaded
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didLoadAd aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didLoadAd:(GFPVideoAdBreakResult *)aResult {
...
}
When Video Ad Playback Starts
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didStartAd aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didStartAd:(GFPVideoAdBreakResult *)aResult {
...
}
Called When Video Ad Is Ready to Play
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didStartReadyAd aResult: GFPVideoAdBreakResult) {
/* Hide the ad notice label, stop any currently playing player, then start the ad video */
...
self.scheduleAdManager?.start(with: true)
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didStartReadyAd:(GFPVideoAdBreakResult *)aResult {
/* Hide the ad notice label, stop any currently playing player, then start the ad video */
...
[self.scheduleAdManager startWith: NO or YES];
}
When Video Ad Playback Ends
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didCompleteAd aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager didCompleteAd:(GFPVideoAdBreakResult *)aResult {
...
}
Called When Ad Notice Label Can Be Shown Before a Mid-Roll Ad
Called when GFPAdScheduleParam.noticeDurationSec is set.
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, showAdNotice aDuration: Int) {
/* Show text such as "Plays after ad" */
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager showAdNotice:(NSInteger)aDuration {
/* Show text such as "Plays after ad" */
...
}
On Click Event
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, wasClicked aResult: GFPVideoAdBreakResult) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager wasClicked:(GFPVideoAdBreakResult *)aResult {
...
}
When a Log Event Occurs if the Ad Playback Player Is AVPlayer
- Swift
- Objective-C
func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didReceive accessLogEvents: [AVPlayerItemAccessLogEvent]) {
...
}
- (void)scheduleManager:(GFPVideoAdScheduleManager *)aScheduleAdManager
didReceiveAccessLogEvents:(NSArray<AVPlayerItemAccessLogEvent *> *)accessLogEvents {
...
}
Remind (NonLinear) Ad Events
See GFPNonLinearDelegate.h for more details.
Called When the Remind Ad Is Hidden
Triggered when: the duration has elapsed, the screen orientation changes, or the close button is tapped.
- Swift
- Objective-C
func nonLinearDidHide(_ type: GFPRemindType) {
...
}
- (void)nonLinearDidHide:(GFPRemindType)type {
...
}
Called When the Remind Ad Is Clicked
- Swift
- Objective-C
func nonLinearWasClicked(_ type: GFPRemindType) {
...
}
- (void)nonLinearWasClicked:(GFPRemindType)type {
...
}
Called When the Remind Ad Is Visible to the User
- Swift
- Objective-C
func nonLinear(onActiveImpression type: GFPRemindType) {
...
}
- (void)nonLinearOnActiveImpression:(GFPRemindType)type {
...
}
Miscellaneous
Quality of Experience (QOE)
To receive more detailed events related to video ad playback, you can receive event information through GFPVideoAdManager.qoeDelegate or GFPVideoAdScheduleManager.qoeDelegate. See GFPVideoAdQoeDelegate.h and GFPVideoAdQoeInfo.h for more details.