Skip to main content

Getting Started

Supported Versions

  • iOS 12.0 or higher
  • Xcode 12.0 or higher
    • 14.1 or higher when using DFP
    • 15 or higher when using Unity or IronSource
danger

Starting from NAMSDK 2.2.4, Xcode 12.0 or higher is required. (only compatible with iOS 14 or higher)

danger

Starting from NAMSDK 6.0.0, Xcode 14.1 or higher is required when using Google DFP.

Starting from NAMSDK 7.0.0, Xcode 15 or higher is required when using Unity or IronSource.

Adding Cocoapods Dependencies

Add 'NAMSDK' to your Podfile.

Add Mediation Pods of the ad mediation networks on your demand.

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '12.0'

target 'MyApplication' do
pod 'NAMSDK' #
pod 'NAMSDK/MediationNDA' # Naver Banner & Native ads
pod 'NAMSDK/MediationNDAVideo' # Naver Video ads (requires >= 4.3.0)
pod 'NAMSDK/MediationNDARich' # Naver Premium ads (requires >= 7.2.0)
pod 'NAMSDK/MediationDFP'
pod 'NAMSDK/MediationIMA'
pod 'NAMSDK/MediationFAN'
pod 'NAMSDK/MediationInMobi'
pod 'NAMSDK/MediationUnity'
pod 'NAMSDK/MediationAppLovin'
pod 'NAMSDK/MediationVungle'
pod 'NAMSDK/MediationDT' # (requires >= 6.4.0)
pod 'NAMSDK/MediationIronSource' # (requires >= 7.0.0)
pod 'NAMSDK/MediationAPS' # (requires >= 7.0.0)
end

List of Supported Ad Networks

Ad NetworkSupported Ad TypeCocoapods Settings
NAVERBanner, Nativepod NAMSDK/MediationNDA
NAVERVideopod NAMSDK/MediationNDAVideo
NAVERNative Rich Rewardpod NAMSDK/MediationNDARich
Google DFPBanner, Native, Interstitial, Rewardpod NAMSDK/MediationDFP
Google IMAVideopod NAMSDK/MediationIMA
FacebookBanner, Native, Interstitial, Rewardpod NAMSDK/MediationFAN
InMobiBanner, Nativepod NAMSDK/MediationInMobi
UnityBanner, Interstitial, Rewardpod NAMSDK/MediationUnity
AppLovinBanner, Native, Interstitial, Rewardpod NAMSDK/MediationAppLovin
VungleInterstitial, Rewardpod NAMSDK/MediationVungle
DigitalTurbineBanner, Interstitial, Rewardpod NAMSDK/MediationDT
IronSourceInterstitial, Rewardpod NAMSDK/MediationIronSource
APSRewardpod NAMSDK/MediationAPS
info

See the up-to-date list of available ad networks in GFPProviderOptions.swift

  • GFPBannerProviderOption
  • GFPVideoProviderOption
  • GFPNativeProviderOption
  • GFPCombinedProviderOption
  • GFPRewardedAdProviderOption
  • GFPInterstitialAdProviderOption

App Transport Security (ATS) settings

App Transport Security (ATS) has been introduced in iOS 9 which allows apps to make network requests over HTTPS by default.

In order to allow ad requests to external ad networks over HTTP, add following value to your Info.plist.

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

Requirements while linking with Google DFP

To link Google DFP, add the following values to your Info.plist.

Otherwise, you will get “The Google Mobile Ads SDK was initialized incorrectly” error message with the operation suspended.

<key>GADIsAdManagerApp</key>
<true/>
danger

To apply Google DFP >= 10, follow addtional steps in the reference below.

Importing GFPSDK

First, import GFPSDK.

@import GFPSDK;

GFPAdManager

Initializing Ad Networks

  • GFP SDK must be initialized prior to requesting ads, once, in your app's life cycle.

  • Ad networks added in your Podfile will be automatically initialized with the GFP SDK.

    • Be minded that ad networks that are not installed by the Podfile will be failed to be rendered, despite receiving proper ad response.
  • To initialize GFPAdManager, pass Publisher Code (required) which is registered in GFP dashboard.

  • Pass Service Code (optional) to manage multiple apps separately.

  • You can validate initialization by isSdkInitialized property.

tip

For NAMSDK >= 7.3.0 the new ServiceCd is available for initializing SDK. Use ServiceCd (optional) with PublisherCd (required) when managing multiple apps of a same publisher.

See more information about initialization in GFPAdManager.h.

@import GFPSDK;

// 1. Example of initializing without GFPAdConfiguration, with a PublisherCd.
[GFPAdManager setupWithPublisherCd:@"publisherCd" target:self completionHandler:^(GFPError * _Nullable error) {
NSLog(@"Setup ERROR: %@", error);
}];

// 2. Example of initializing without GFPAdConfiguration, with PublisherCd & ServiceCd.
[GFPAdManager setupWithPublisherCd:@"publisherCd" serviceCd:@"serviceCd" target:self completionHandler:^(GFPError * _Nullable error) {
NSLog(@"Setup ERROR: %@", error);
}];

// Check for initialization success.
[GFPAdManager isSdkInitialized];

// Initializing with GFPAdConfiguration: set test mode, request timeouts, log levels, ad redering time, etc.
GFPAdConfiguration *configuration = [[GFPAdConfiguration alloc] init];

[GFPAdManager setupWithPublisherCd:@"publisherCd" serviceCd:@"serviceCd" configuration:configuration target:self completionHandler:^(GFPError * _Nullable error) {
NSLog(@"Setup ERROR: %@", error);
}];

GFPAdManagerDelegate

danger

For NAMSDK >= 3.1.3, you must provide GFPAdManagerDelegate to GFPAdManager.

Implement ad tracking mechanism of your app using Apple ATTrackingManager and provide tracking status to GFPAdManagerDelegate

@protocol GFPAdManagerDelegate <NSObject>

- (GFPATTAuthorizationStatus)attStatus;

@end

typedef NS_ENUM(NSInteger, GFPATTAuthorizationStatus) {
GFPATTAuthorizeNotDetermined = 0, // = ATTrackingManager.AuthorizationStatus.notDetermined
GFPATTAuthorizeRestricted, // = ATTrackingManager.AuthorizationStatus.restricted
GFPATTAuthorizeDenied, // = ATTrackingManager.AuthorizationStatus.denied
GFPATTAuthorizeAuthorized // = ATTrackingManager.AuthorizationStatus.authorized
};
- (GFPATTAuthorizationStatus)attStatus {
if (@available(iOS 14.5, *)) {
switch (ATTrackingManager.trackingAuthorizationStatus) {
case ATTrackingManagerAuthorizationStatusNotDetermined:
return GFPATTAuthorizeNotDetermined;
case ATTrackingManagerAuthorizationStatusRestricted:
return GFPATTAuthorizeRestricted;
case ATTrackingManagerAuthorizationStatusDenied:
return GFPATTAuthorizeDenied;
case ATTrackingManagerAuthorizationStatusAuthorized:
return GFPATTAuthorizeAuthorized;
}
} else {
if ([[ASIdentifierManager sharedManager] isAdvertisingTrackingEnabled]) {
return GFPATTAuthorizeAuthorized;
}

return GFPATTAuthorizeNotDetermined;
}
}

Available settings in GFPAdConfiguration

  • Banner ad request timeout (default: 60 seconds)
  • Video ad request timeout (default: 60 seconds)
  • Native ad request timeout (default: 60 seconds)
  • Integrated ad request timeout (default: 60 seconds)
  • Rewarded ad request timeout (default: 60 seconds)
  • Interstitial ad request timeout (default: 60 seconds)
  • DFP test ad setting (default: NO)
  • FAN test ad setting (default: NO)
  • NAMSDK log level settings (default: no logs)
  • Enable default user agent (default: NO)
  • Ad interface style settings (default: Light)
  • Disable crash report external ad network SDKs (default: NO)
  • Global customUserParam settings
  • Mute audio by default for rewarded video ads (applies to Naver and most of other ad network ads) (default: YES)
  • AB Test parameter setting (for Naver apps)
  • Disable locationInfo transmission setting (default: NO)

You can also setup Naver user identifiers with GFPAdManager.

NSDictionary <NSString *, NSString *> *cookie = @{@"key1": @"value1", @"key2": @"value2"};
[GFPAdManager setCookie:cookie];

[GFPAdManager appendCookie: @{@"key3": @"value3"}];

[GFPAdManager clearCookie];

Test Mode Settings

You can enable test modes which limits to non-commercial test ads from some ad networks.

  • Supports Google and Facebook test modes.

See more information about test modes in GFPAdProviderSetting.h

Interface Styles

Interface Style changes "AdMute" icon at the corner of ad, according to user device's theme settings.

[GFPAdManager adConfiguration].adInterfaceStyle = GFPAdInterfaceStyleLight;
[GFPAdManager adConfiguration].adInterfaceStyle = GFPAdInterfaceStyleDark;
[GFPAdManager adConfiguration].adInterfaceStyle = GFPAdInterfaceStyleSystem;

Global CustomParam Settings

  • (GFP SDK >= 6.0.0) Some apps might be advised to set CustomParams for better algorithm.

  • Set CustomParam in a form of dictionary of both key and value strings.

info
  • For dictionary values that must contain mutiple values should separate them with "|" letter (not array of strings).

  • GFPAdParam.customUserParam is prioritized over GFPAdConfiguration.customParam

[GFPAdManager adConfiguration].customParam = @{@"key1": @"value1", @"key2": @"value2", @"key3":@"a|b|c"};

A/B Test Parameters

  • (GFP SDK >= 6.5.0) Some Naver apps that demands A/B Test can use abt param.
NSString *abt = @"SUBS:V0;HOME:V2;NEWS:V1";
GFPAdConfiguration *configuration = GFPAdManager.adConfiguration;
configuration.abt = abt;
GFPAdManager.adConfiguration = configuration;