Skip to main content

Getting Started

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

Sample Image

Prerequisites​

NAMSDK Import​

Import the SDK module.

import GFPSDK

Setting Up Video Ad Provider​

  • GFPVideoProviderOptionNDA: Naver Display video ads
// Add cocoapods dependency to integrate IMA and NDA video ads.
GFPAdManager.setup(withPublisherCd: "publisherCd") { (error : GFPError?) in
print("Setup Eror: \(String(describing: error?.description))")
}

Video Ad Manager Types​

Implementing View Controller​

Create a view controller (MyViewController) and perform the following in the header file (MyViewController.h).

  1. Declare a GFPVideoAdScheduleManager *scheduleManager property in the view controller.
  2. Implement the GFPVideoAdScheduleManagerDelegate protocol in the view controller.
  3. Prepare a container view (UIView) for video playback.
// 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
}

Creating GFPVideoAdScheduleManager and Requesting Ads​

In the viewDidLoad method of MyViewController.m, create an instance of GFPVideoAdScheduleManager and request an ad.

  • When creating a GFPVideoAdScheduleManager instance, 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.
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()
}

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.

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didLoadedSchedule aAdBreak: [GFPVideoAdBreak]?) {
...
}

On Schedule Load Failure​

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didFailScheduleWithError aError: GFPError) {
...
}

When All Schedules Have Completed​

func scheduleManagerDidCompleted(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
...
}

Content Playback and Pause Events​

Called When It Is Time to Resume Content Playback​

func scheduleManagerContentResumeRequest(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
/* Resume content player when there is no pre-roll ad or when ad playback fails */
...
}

Called When It Is Time to Pause Content Playback​

func scheduleManagerContentPauseRequest(_ aScheduleAdManager: GFPVideoAdScheduleManager) {
/* Pause content player before ad playback */
...
}

Events Occurring After Ad Playback​

See GFPVideoAdScheduleManagerDelegate.h for more details.

On Ad Load or Playback Failure​

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didFailWith aResult: GFPVideoAdBreakResult) {
...
}

When Video Ad Is Loaded​

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didLoadAd aResult: GFPVideoAdBreakResult) {
...
}

When Video Ad Playback Starts​

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didStartAd aResult: GFPVideoAdBreakResult) {
...
}

Called When Video Ad Is Ready to Play​

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)
}

When Video Ad Playback Ends​

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didCompleteAd aResult: GFPVideoAdBreakResult) {
...
}

Called When Ad Notice Label Can Be Shown Before a Mid-Roll Ad​

Called when GFPAdScheduleParam.noticeDurationSec is set.

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, showAdNotice aDuration: Int) {
/* Show text such as "Plays after ad" */
...
}

On Click Event​

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, wasClicked aResult: GFPVideoAdBreakResult) {
...
}

When a Log Event Occurs if the Ad Playback Player Is AVPlayer​

func scheduleManager(_ aScheduleAdManager: GFPVideoAdScheduleManager, didReceive accessLogEvents: [AVPlayerItemAccessLogEvent]) {
...
}

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.

func nonLinearDidHide(_ type: GFPRemindType) {
...
}

Called When the Remind Ad Is Clicked​

func nonLinearWasClicked(_ type: GFPRemindType) {
...
}

Called When the Remind Ad Is Visible to the User​

func nonLinear(onActiveImpression type: GFPRemindType) {
...
}

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.