Geniee Mediation Integration For iOS DoubleClick - unigeniee/Geniee-iOS-SDK GitHub Wiki

iOS DoubleClick動画リワードにおけるGenieeカスタムメディエーション実装

動画リワード広告とは、アプリ内で使用可能なアイテムやポイントをユーザーに付与する代わりに、約15秒〜30秒程度の動画広告を表示する広告フォーマットです。
本機能を使用する事により、DoubleClickの動画リワードで、Genieeのメディエーション機能により各アドネットワークの動画のリワード広告を表示します。

実装準備

GoogleMobileAds の追加

Podfileに以下の行を記述します。

pod 'Google-Mobile-Ads-SDK'

GNAdDFPRewardMediationAdapterの追加

Cocoapodsで導入する(推奨)

Podfileに以下を記述します。

pod 'Geniee-DFP-Mediation-Adapter'

手動で導入する

手動導入手順はこちら GNAdDFPRewardMediationAdapter をダウンロードします。

GNAdDFPRewardMediationAdapter

GNAdDFPRewardMediationAdapter.framework をドラッグアンドドロップでプロジェクトにコピーして追加してください。

ナビゲータエリアよりプロジェクトを選択し、"TARGET" -> "General" を選択する。
"Embedded Binaries" へ "GNAdDFPRewardMediationAdapter.framework" を追加する。

  • ナビゲータエリアより"Pods/***.xcconfig" を選択する。
    "OTHER_LDFLAGS" から -framework "GoogleMobileAds" を削除する。
  • ナビゲータエリアよりプロジェクトを選択し、"TARGETS" -> "Build Settings" を選択する。
    "Other Linker Flags" から "GoogleMobileAds" を削除する。

Geniee SDK の追加

Geniee SDK のインストールは、下記スタートガイドから行ってください。

スタートガイド

各アドネットワーク用SDK、アダプターの追加

動画リワードでは、配信で使用するアドネットワーク毎のSDKとアダプターの設定が必要です。 以下よりアドネットワークのリンクから導入方法を参照して下さい。

アドネットワーク              検証済みバージョン    
maio 1.4.0
AppLovin 5.1.1
Unity Ads 2.3.0
AdColony 3.3.5
CAReward 2.3.1
Tapjoy 12.0.0
Vungle 6.2.0
Nend 5.0.2
AMoAd playable1.0.0

動画リワード広告の実装

Delegateメソッドを実装する

GADRewardBasedVideoAdDelegateを実装します。

  • ObjectiveC
Delegate実装手順はこちら

ヘッダーファイルへimport、Delegateの記述を追加します。

例:ViewController.h

#import <GoogleMobileAds/GoogleMobileAds.h>
@interface ViewController <GADRewardBasedVideoAdDelegate>

Delegateを指定します。

例:Viewcontroller.m

[GADRewardBasedVideoAd sharedInstance].delegate = self;

SDKから通知を受け取る為の、GADRewardBasedVideoAdDelegateのメソッドを実装します。

例:Viewcontroller.m

// ユーザーに報酬を付与した事を通知するデリゲート.
- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd didRewardUserWithReward:(GADAdReward *)reward {
}

// ロード失敗を通知するデリゲート.
- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd didFailToLoadWithError:(NSError *)error {
}

// リワード動画広告が受信された事を通知するデリゲート.
- (void)rewardBasedVideoAdDidReceiveAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
}

// リワード動画広告がOpenされた事を通知するデリゲート.
- (void)rewardBasedVideoAdDidOpen:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
}

// リワード動画広告の再生開始を通知するデリゲート.
- (void)rewardBasedVideoAdDidStartPlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
}

// リワード動画広告の再生完了を通知するデリゲート.
- (void)rewardBasedVideoAdDidCompletePlaying:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
}

// リワード動画広告が終了した事を通知するデリゲート.
- (void)rewardBasedVideoAdDidClose:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
}

// リワード動画広告がアプリケーションから離れる事を通知するデリゲート.
- (void)rewardBasedVideoAdWillLeaveApplication:(GADRewardBasedVideoAd *)rewardBasedVideoAd {
}
  • Swift
Delegate実装手順はこちら Delegateを指定します。
GADRewardBasedVideoAd.sharedInstance().delegate = self

SDKから通知を受け取る為の、GADRewardBasedVideoAdDelegateのメソッドを実装します。

extension ViewController : GADRewardBasedVideoAdDelegate {

    // ユーザーに報酬を付与した事を通知するデリゲート.
    func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didRewardUserWith reward: GADAdReward) {
    }
    
    // ロード失敗を通知するデリゲート.
    func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didFailToLoadWithError error: Error) {
    }
    
    // リワード動画広告が受信された事を通知するデリゲート.
    func rewardBasedVideoAdDidReceive(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    }
    
    // リワード動画広告がOpenされた事を通知するデリゲート.
    func rewardBasedVideoAdDidOpen(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    }
    
    // リワード動画広告の再生開始を通知するデリゲート.
    func rewardBasedVideoAdDidStartPlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    }
    
    // リワード動画広告の再生完了を通知するデリゲート.
    func rewardBasedVideoAdDidCompletePlaying(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    }

    // リワード動画広告が終了した事を通知するデリゲート.
    func rewardBasedVideoAdDidClose(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    }

    // リワード動画広告がアプリケーションから離れる事を通知するデリゲート.
    func rewardBasedVideoAdWillLeaveApplication(_ rewardBasedVideoAd: GADRewardBasedVideoAd) {
    }
}

動画リワード広告のロード

ロードリクエストにUnitIDを指定して、動画広告ロードリクエストします。

Note:

1つの動画広告が表示された後に別の動画広告を表示する場合は、もう一度loadRequestを実行する必要があります。

  • ObjectiveC
DFPRequest *request = [DFPRequest request];
[[GADRewardBasedVideoAd sharedInstance] loadRequest:request withAdUnitID:@"YOUR_UNIT_ID"];
  • Swift
let request :DFPRequest = DFPRequest()
GADRewardBasedVideoAd.sharedInstance().load(request, withAdUnitID: "YOUR_UNIT_ID")

動画リワード広告表示

動画広告が準備完了であることを確認し、動画広告を表示します。

  • ObjectiveC
if ([[GADRewardBasedVideoAd sharedInstance] isReady]) {
    [[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:self];
}
  • Swift
if GADRewardBasedVideoAd.sharedInstance().isReady == true {
    GADRewardBasedVideoAd.sharedInstance().present(fromRootViewController: self)
}

DoubleClick動画リワード広告がNo fillとなる場合の対応

DoubleClickの動画リワードがLoad失敗になった場合に、Geniee SDKを呼び出すことで、広告の空き枠を防ぐことができます。実装手順は以下の通りです。

GNAdSDK I/Fの使用準備

Geniee SDKの GNSVideoReward をインポートします。

  • ObjectiveC
    ヘッダーファイルをimportし、Delegateを追加します。

例:ViewController.h

#import <GNAdSDK/GNSRequest.h>
#import <GNAdSDK/GNSRewardVideoAdDelegate.h>
@interface ViewController <GADRewardBasedVideoAdDelegate, GNSRewardVideoAdDelegate>
  • Swift
    以下の内容のヘッダーファイルを追加します。
#import <GNAdSDK/GNSRequest.h>
#import <GNAdSDK/GNSRewardVideoAdDelegate.h>

ナビゲータエリアよりプロジェクトを選択し、"TARGET" -> "Build Settings" を選択する。
"Objective-C Bridging Header" へ 上記で作成したヘッダーファイルのパスを追加する。

Delegateメソッドを実装する

GNSRewardVideoAdDelegateを実装します。

  • ObjectiveC
Delegate実装手順はこちら Delegateを指定します。
[GNSRewardVideoAd sharedInstance].delegate = self;

SDKから通知を受け取る為の、GNSRewardVideoAdDelegateのメソッドを実装します。

// ロード失敗を通知するデリゲート.
- (void)rewardVideoAd:(GNSRewardVideoAd *)rewardVideoAd didFailToLoadWithError:(NSError *)error {
}

// リワード動画広告が受信された事を通知するデリゲート.
- (void)rewardVideoAdDidReceiveAd:(GNSRewardVideoAd *)rewardVideoAd
{
}

// リワード動画広告の再生開始を通知するデリゲート.
- (void)rewardVideoAdDidStartPlaying:(GNSRewardVideoAd *)rewardVideoAd {
}

// リワード動画広告が終了した事を通知するデリゲート.
- (void)rewardVideoAdDidClose:(GNSRewardVideoAd *)rewardVideoAd {
}

// ユーザーに報酬を付与した事を通知するデリゲート.
- (void)rewardVideoAd:(GNSRewardVideoAd *)rewardVideoAd didRewardUserWithReward:(GNSAdReward *)reward {
}
  • Swift
Delegate実装手順はこちら Delegateを指定します。
GNSRewardVideoAd.sharedInstance().delegate = self

SDKから通知を受け取る為の、GNSRewardVideoAdDelegateのメソッドを実装します。

extension ViewController : GNSRewardVideoAdDelegate {

    // リワード動画広告が受信された事を通知するデリゲート.
    func rewardVideoAdDidReceive(_ rewardVideoAd: GNSRewardVideoAd!) {
    }
    
    // ユーザーに報酬を付与した事を通知するデリゲート.
    func rewardVideoAd(_ rewardVideoAd: GNSRewardVideoAd!, didRewardUserWith reward: GNSAdReward!) {
    }
    
    // ロード失敗を通知するデリゲート.
    func rewardVideoAd(_ rewardVideoAd: GNSRewardVideoAd!, didFailToLoadWithError error: Error!) {
    }
    
    // リワード動画広告の再生開始を通知するデリゲート.
    func rewardVideoAdDidStartPlaying(_ rewardVideoAd: GNSRewardVideoAd!) {
    }
    
    // リワード動画広告が終了した事を通知するデリゲート.
    func rewardVideoAdDidClose(_ rewardVideoAd: GNSRewardVideoAd!) {
    }
}

動画リワード広告のロード

DoubleClickのLoadが失敗した場合に呼び出されるメソッドにGeniee SDK動画リワードのloadメソッドを実装します。
ロードリクエストにZoneIDを指定します。
1つの動画の再生完了後に別の動画を見せる場合、再びロードリクエストを行う必要があります。

  • ObjectiveC
- (void)rewardBasedVideoAd:(GADRewardBasedVideoAd *)rewardBasedVideoAd didFailToLoadWithError:(NSError *)error {
    GNSRequest *request = [GNSRequest request];
    [[GNSRewardVideoAd sharedInstance] loadRequest:request
                                        withZoneID:@"YOUR_ZONE_ID"];
}
  • Swift
func rewardBasedVideoAd(_ rewardBasedVideoAd: GADRewardBasedVideoAd, didFailToLoadWithError error: Error) {
    let request = GNSRequest()
    GNSRewardVideoAd.sharedInstance().load(request, withZoneID: "YOUR_ZONE_ID")
}

動画リワード広告表示

DoubleClick → Geniee SDKの順で、loadが完了しているかを確認し、showメソッドで動画を表示します。
showは必ずDoubleClickのLoad実行後に実施するようにして下さい。

  • ObjectiveC
if ([[GADRewardBasedVideoAd sharedInstance] isReady]) {
    [[GADRewardBasedVideoAd sharedInstance] presentFromRootViewController:self];
} else if ([[GNSRewardVideoAd sharedInstance] canShow]) {
    [[GNSRewardVideoAd sharedInstance] show:self];
}
  • Swift
if GADRewardBasedVideoAd.sharedInstance().isReady == true {
    rewardBasedVideo?.present(fromRootViewController: self)
} else if GNSRewardVideoAd.sharedInstance().canShow() {
    GNSRewardVideoAd.sharedInstance().show(self)
}

ユーザに報酬を付与

動画広告で収益を最大化するには、動画広告視聴者に報酬を与えることが重要です。 GNSAdRewardには以下の項目が含まれます。

  • reward.type:SSPの通貨タイプ設定
  • reward.amount:SSPの通貨額設定

動画広告視聴者に報酬を与えるには、didRewardUserWithRewardコールバックメソッドを使用します。

  • ObjectiveC
- (void)rewardVideoAd:(GNSRewardVideoAd *)rewardVideoAd didRewardUserWithReward:(GNSAdReward *)reward {
    NSLog(@"ViewController: Reward received type=%@, amount=%lf"
          ,reward.type
          ,[reward.amount doubleValue]);
}
  • Swift
func rewardVideoAd(_ rewardVideoAd: GNSRewardVideoAd!, didRewardUserWith reward: GNSAdReward!) {
    print("ViewController: Reward received type=" + reward.type + " , amount=\(reward.amount.doubleValue)")
}
⚠️ **GitHub.com Fallback** ⚠️