Getting Started
Rewarded ads are full-screen video ads that reward viewers for watching the ad.

Prerequisites
Adding Dependencies
To use rewarded ads, add the GFPSDK/MediationNDARich module to your Podfile.
# When using static library
pod 'GFPSDK/MediationNDARich'
# When using dynamic library
pod 'GFPSDK-Dynamic/MediationNDARich'
NAMSDK Import
Import the SDK module.
- Swift
- Objective-C
import GFPSDK
@import GFPSDK;
Initializing C2S Rewarded Ad Providers
With the Pod for the rewarded ad provider you want to integrate added to your project, initialize via GFPAdManager. (Perform only once when the app launches)
| Provider Option | Ad Provider | CocoaPods |
|---|---|---|
| GFPRewardedAdProviderOptionNDA | Naver NDA | pod 'GFPSDK/MediationNDA' |
| GFPRewardedAdProviderOptionDFP | Google GAM (Google Ad Manager) | pod 'GFPSDKMediationDFP' |
| GFPRewardedAdProviderOptionFAN | Meta Audience Network | pod 'GFPSDKMediationFAN' |
| GFPRewardedAdProviderOptionUnity | Unity Ads | pod 'GFPSDKMediationUnity' |
| GFPRewardedAdProviderOptionAppLovin | AppLovin MAX | pod 'GFPSDKMediationAppLovin' |
| GFPRewardedAdProviderOptionVungle | Liftoff (Vungle) | pod 'GFPSDKMediationVungle' |
| GFPRewardedAdProviderOptionDT | Digital Turbine | pod 'GFPSDKMediationDT' |
| GFPRewardedAdProviderOptionIS | IronSource | pod 'GFPSDKMediationIronSource' |
| GFPRewardedAdProviderOptionAPS | Amazon Publisher Services | pod 'GFPSDKMediationAPS' |
| GFPRewardedAdProviderOptionLAN | LINE Ads Network | pod 'GFPSDKMediationLAN' |
| GFPRewardedAdProviderOptionChartBoost | Chartboost | pod 'GFPSDKMediationChartBoost' |
| GFPRewardedAdProviderOptionBidMachine | BidMachine | pod 'GFPSDKMediationBidMachine' |
| GFPRewardedAdProviderOptionPangle | Pangle | pod 'GFPSDKMediationPangle' |
S2S rewarded ads do not require a separate provider initialization.
- Swift
- Objective-C
// DFP, Facebook 보상형 광고를 연동하려는 경우 cocoapods 의존성 추가.
GFPAdManager.setup(withPublisherCd: "publisherCd") { (error : GFPError?) in
print("Setup Eror: \(String(describing: error?.description))")
}
// DFP, NDA, Inmobi, Facebook 배너 광고를 연동하려는 경우 cocoapods 의존성 추가.
[GFPAdManager setupWithPublisherCd:@"publisherCd" completionHandler:^(GFPError * _Nullable error) {
NSLog(@"Setup ERROR: %@", error);
}];
For detailed GFPAdManager configuration, refer to Ad Manager Settings.
Writing the View Controller
Create a view controller (MyViewController) and perform the following steps in the header file (MyViewController.h).
(In this example, the view controller owns the manager.)
- Declare a *GFPRewardedAdManager adManager property in the view controller.
- Implement the GFPRewardedAdManagerDelegate protocol in the view controller.
GFPRewardedAdManagerDelegate delivers load success/failure and click events for rewarded ads.
- Swift
- Objective-C
// MyViewController.h
import GFPSDK
class MyViewController : UIViewController, GFPRewardedAdManagerDelegate {
private var adManager : GFPReweardedAdManager?
}
// MyViewController.h
@import GFPSDK;
@interface MyViewController : UIViewController <GFPRewardedAdManagerDelegate>
@property (nonatomic) GFPRewardedAdManager *adManager;
@end
GFPReweardedAdManager Usage Guide
Creating GFPReweardedAdManager and Requesting Ad Load
In the viewDidLoad method of MyViewController.m, create an instance of GFPReweardedAdManager and request an ad.
- After creating the instance, make sure to set the delegate.
- When creating a GFPReweardedAdManager instance, set user information in GFPAdParam along with your issued ad unit ID. GFPAdParam is used for targeting to improve ad effectiveness.
- Swift
- Objective-C
override func viewDidLoad() {
super.viewDidLoad()
let adParam = GFPAdParam()
adParam.yearOfBirth = 1990
adParam.gender = .male
...
//인스턴스 생성
self.adManager = GFPRewardedAdManager(unitID: "UnitID", adParam: adParam)
//Delegate
self.adManager?.delegate = self
//Timeout
self.adManager?.requestTimeoutInterval = 60
//광고 요청
self.adManager?.load()
}
- (void)viewDidLoad {
[super viewDidLoad];
GFPAdParam *adParam = [[GFPAdParam alloc]init];
adParam.yearOfBirth = 1990;
adParam.gender = GFPAdParamGenderTypeMale;
...
//인스턴스 생성
self.adManager = [[GFPRewardedAdManager alloc] initWithUnitID:@"UnitID" adParam:adParam];
//Delegate
self.adManager.delegate = self;
//Timeout
self.adManager.requestTimeoutInterval = 60;
//광고 요청
[self.adManager load];
}
The manager is designed to be used for loading a single ad. Create a new manager each time you need to load a new ad.
On successful ad request, the GFPRewardedAdManagerDelegate rewardedAdManager:didLoadAd: method is called.
Resuming a Rewarded Ad Video
To resume a rewarded ad video after pausing it, use the resumeCurrentRewardVideo class method.
- Swift
- Objective-C
GFPRewardedAdManager.resumeCurrentRewardVideo()
[GFPRewardedAdManager resumeCurrentRewardVideo];
Requesting Ad Display
Once you receive a success response from GFPRewardedAdManagerDelegate rewardedAdManager:didLoadAd:,
you can request ad display using the show:(UIViewController *) method.
Checking Ad Load Completion
Use the isAdLoaded property to check whether an ad has been successfully loaded.
- Swift
- Objective-C
if self.adManager?.isAdLoaded == true {
// The ad is in a loaded state.
}
if (self.adManager.isAdLoaded) {
// The ad is in a loaded state.
}
Checking Ad Invalidation
When displaying a pre-loaded cached ad, you must use the isAdInvalidate method to verify that the ad has not expired. Displaying an expired ad will prevent you from receiving a reward for the ad impression.
- Swift
- Objective-C
if rewardedAd.isAdInvalidate {
self.adManager?.show(self)
}
if (rewardedAd.isAdInvalidate) {
[self.adManager show:self];
}
If the ad display request fails, the GFPRewardedAdManagerDelegate rewardedAdManager:didFailWithError:responseInfo: method will be called.
Since ad loading and ad display are separate, you can implement a flow that loads first and then displays. The loaded ad validity period is DFP, FAN: 60 minutes.
GFPRewardedAdManagerDelegate
By implementing GFPRewardedAdManagerDelegate, you can receive rewarded ad events through the following methods.
Load Events
On Load Success
- Swift
- Objective-C
func rewardedAdManager(_ manager: GFPRewardedAdManager, didLoad rewardedAd: GFPRewardedAd) {
...
}
- (void)rewardedAdManager:(nonnull GFPRewardedAdManager *)manager didLoadAd:(nonnull GFPRewardedAd *)rewardedAd {
...
}
On Load Failure
- Swift
- Objective-C
func rewardedAdManager(_ manager: GFPRewardedAdManager, didFailWithError error: GFPError, responseInfo:GFPLoadResponseInfo!) {
...
}
- (void)rewardedAdManager:(nonnull GFPRewardedAdManager *)manager didFailWithError:(nonnull GFPError *)error responseInfo:(nullable GFPLoadResponseInfo *)responseInfo {
...
}
This method delivers not only load failures, but also display failures, expiration errors, and all other failure cases.
LifeCycle Event
When Ad View Screen Starts
- Swift
- Objective-C
func rewardedAdManager(_ manager: GFPRewardedAdManager, didStart rewardedAd: GFPRewardedAd) {
...
}
- (void)rewardedAdManager:(nonnull GFPRewardedAdManager *)manager didStartAd:(nonnull GFPRewardedAd *)rewardedAd {
...
}
On Ad View Completion
- Swift
- Objective-C
func rewardedAdManager(_ manager: GFPRewardedAdManager, didComplete rewardedAd: GFPRewardedAd, with reward: GFPReward?) {
...
}
- (void)rewardedAdManager:(nonnull GFPRewardedAdManager *)manager didCompleteAd:(nonnull GFPRewardedAd *)rewardedAd withReward:(nullable GFPReward *)reward {
...
}
FAN does not provide reward information, so the reward value will be nil.
When Ad Screen Dismisses
- Swift
- Objective-C
func rewardedAdManager(_ manager: GFPRewardedAdManager, didClose rewardedAd: GFPRewardedAd) {
...
}
- (void)rewardedAdManager:(nonnull GFPRewardedAdManager *)manager didCloseAd:(nonnull GFPRewardedAd *)rewardedAd {
...
}
When Ad Screen is Clicked
- Swift
- Objective-C
func rewardedAdManager(_ manager: GFPRewardedAdManager, wasClickedAd rewardedAd: GFPRewardedAd) {
...
}
- (void)rewardedAdManager:(nonnull GFPRewardedAdManager *)manager wasClickedAd:(nonnull GFPRewardedAd *)rewardedAd {
...
}
DFP versions in the 7.x.x range do not support click events, so this event will not be triggered.
The following methods are declared as @optional, so implement them only when needed.
On Mute State Change (S2S Ads Only)
Called when the player's mute state changes in S2S ads.
- Swift
- Objective-C
func rewardedAdManager(_ manager: GFPRewardedAdManager, didChangedMute isMuted: Bool) {
...
}
- (void)rewardedAdManager:(nonnull GFPRewardedAdManager *)manager didChangedMute:(BOOL)isMuted {
...
}
When Ad Impression Occurs
Called when the ad is actually impressed (impression).
- Swift
- Objective-C
func rewardedAdManagerDidReceiveImpression(_ manager: GFPRewardedAdManager) {
...
}
- (void)rewardedAdManagerDidReceiveImpression:(nonnull GFPRewardedAdManager *)manager {
...
}
When In-App Browser Opens
Called when the in-app browser opens due to an ad click or similar action.
- Swift
- Objective-C
func rewardedAdManagerDidPresentDefaultInAppBrowser(_ manager: GFPRewardedAdManager) {
...
}
- (void)rewardedAdManagerDidPresentDefaultInAppBrowser:(nonnull GFPRewardedAdManager *)manager {
...
}
When In-App Browser Closes
Called when the in-app browser is dismissed.
- Swift
- Objective-C
func rewardedAdManagerDidDismissDefaultInAppBrowser(_ manager: GFPRewardedAdManager) {
...
}
- (void)rewardedAdManagerDidDismissDefaultInAppBrowser:(nonnull GFPRewardedAdManager *)manager {
...
}