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.