Skip to main content

Combined Ad

The NAM SDK provides a way to simultaneously receive banner, native, and native simple ads via GFPAdLoader.
Since multiple ad types need to be supported on a single placement, ad unit configuration is required — please discuss this with your GFP representative.

NAMSDK Import

Import the SDK module.

import GFPSDK

Add Dependency and Initialize

Please refer to the Banner Ad and Native Ad setup guides.

Write the View Controller

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

  1. Declare a GFPAdLoader *adLoader property in the view controller.
  2. Implement the GFPAdLoaderDelegate protocol in the view controller.
info

GFPAdLoaderDelegate delivers events related to native ad loading.

  1. Declare a GFPBannerView *bannerView property in the view controller.
  2. Implement the GFPBannerViewDelegate protocol in the view controller.
info

GFPBannerViewDelegate delivers events such as impression, click, and rendering errors of the loaded banner object.

  1. Declare a GFPNativeAd *nativeAd property in the view controller.
  2. Implement the GFPNativeAdDelegate protocol in the view controller.
info

GFPNativeAdDelegate delivers events such as impression, click, and rendering errors of the loaded native object.

  1. Declare a GFPNativeSimpleAd *nativeSimpleAd property in the view controller.
  2. Implement the GFPNativeSimpleAdDelegate protocol in the view controller.
info

GFPNativeSimpleAdDelegate delivers events such as impression, click, and rendering errors of the loaded native simple object.

// MyViewController.h
import GFPSDK

class MyViewController : UIViewController,
GFPAdLoaderDelegate,
GFPBannerViewDelegate,
GFPNativeAdDelegate,
GFPNativeSimpleAdDelegate {

private var adLoader : GFPAdLoader?
private var bannerView : GFPBannerView?

private var nativeAd : GFPNativeAd?
private var nativeAdView : GFPNativeAdView?

private var nativeSimpleAd : GFPNativeSimpleAd?
private var nativeSimpleAdView : GFPNativeSimpleAdView?
}

Create GFPAdLoader and Request Ad

Create a GFPAdLoader instance in the viewDidLoad method of MyViewController.m and request an ad.

  • When creating a GFPAdLoader instance, set user information in GFPAdParam along with your issued ad unit ID. GFPAdParam is used for targeting to improve ad effectiveness.

  • Set the Options and Delegates on GFPAdLoader for each ad type you want to use.

override func viewDidLoad() {
super.viewDidLoad()

let adParam = GFPAdParam()
adParam.yearOfBirth = 1990
adParam.gender = .male
...

self.adLoader = GFPAdLoader(unitID: "UnitId", rootViewController: self, adParam: adParam)

//Banner option settings
let bannerOption = GFPAdBannerOptions()
bannerOption.layoutType = .fluidWidth
self.adLoader?.setBannerDelegate(self, bannerOptions: bannerOption)

//Native general settings
let nativeOption = GFPAdNativeOptions()
nativeOption.renderingSetting = ... // Rendering settings for the native general ad to be loaded
self.adLoader?.setNativeDelegate(self, nativeOptions: nativeOption)

//Native simple settings
let nativeSimpleOption = GFPAdNativeSimpleOptions()
nativeSimpleOption.renderingSetting = ... // Rendering settings for the native general ad to be loaded
self.adLoader?.setNativeSimpleDelegate(self, nativeSimpleOptions: nativeSimpleOption)

self.adLoader?.delegate = self
self.adLoader?.requestTimeoutInterval = 60
self.adLoader?.loadAd()
}

GFPAdLoaderDelegate

Combined ads receive Delegate events associated with each ad type.

On Banner Ad Response Success

Since GFPBannerView is a regular view object (UIView), it can be included in the view hierarchy.

func adLoader(_ unifiedAdLoader: GFPAdLoader, didReceiveBannerAd bannerView: GFPBannerView) {
self.bannerView = bannerView
// Add to view hierarchy
}

On Native General Ad Response Success

func adLoader(_ unifiedAdLoader: GFPAdLoader, didReceiveNativeAd nativeAd: GFPNativeAd) {
self.nativeAd = nativeAd
}

On Native Simple Ad Response Success

func adLoader(_ unifiedAdLoader: GFPAdLoader, didReceiveNativeSimpleAd nativeSimpleAd: GFPNativeSimpleAd) {
self.nativeSimpleAd = nativeSimpleAd
}

On Ad Response Failure

func adLoader(_ unifiedAdLoader: GFPAdLoader, didFailWithError error: GFPError, responseInfo: GFPLoadResponseInfo?) {
...
}

Event Reception and Rendering Guide After GFPAdLoader

Retrieving Ad Metadata

For banner, native, and native simple ads, ad information can be checked when events occur, but only when provided by the server. This information is delivered on load success, when an ad impression occurs, and when a click event occurs.

On Load Success

func adLoader(_ unifiedAdLoader: GFPAdLoader, didReceiveNativeAd nativeAd: GFPNativeAd) {
if let adMetaData = nativeAd.adMetaData {
let adMetaDataMessage = String(format: "Native Ad Context (loaded) %@", adMetaData.adContext)
print(adMetaDataMessage)
}
}

On Ad Impression

func bannerAdWasSeen(_ bannerView: GFPBannerView) {
...
if let adMetaData = bannerView.adMetaData {
let adMetaDataMessage = String(format: "Banner Ad Context (seen) %@", adMetaData.adContext)
print(adMetaDataMessage)
}
}

On Click Event

func nativeSimpleAdWasClicked(_ nativeSimpleAd: GFPNativeSimpleAd) {
if let adContext = nativeSimpleAd.adMetaData?.adContext {
let adMetaDataMessage = String(format: "Native Simple Ad Context (clicked) %@", adContext)
print(adMetaDataMessage)
}
}

Checking Slot Index of Native Ads

func nativeAdWasClicked(_ nativeAd: GFPNativeAd) {
if let slotIndex = nativeAd.adMetaData?.slotIndex, slotIndex.intValue >= 0 {
let slotIndexMessage = String(format: "Native Ad Slot Index (clicked) %ld", slotIndex.intValue)
print(slotIndexMessage)
}
}