Geniee Mediation Integration For iOS DoubleClick - unigeniee/Geniee-iOS-SDK GitHub Wiki
動画リワード広告とは、アプリ内で使用可能なアイテムやポイントをユーザーに付与する代わりに、約15秒〜30秒程度の動画広告を表示する広告フォーマットです。
本機能を使用する事により、DoubleClickの動画リワードで、Genieeのメディエーション機能により各アドネットワークの動画のリワード広告を表示します。
Podfileに以下の行を記述します。
pod 'Google-Mobile-Ads-SDK'
Podfileに以下を記述します。
pod 'Geniee-DFP-Mediation-Adapter'
手動導入手順はこちら
GNAdDFPRewardMediationAdapter をダウンロードします。GNAdDFPRewardMediationAdapter.framework をドラッグアンドドロップでプロジェクトにコピーして追加してください。
ナビゲータエリアよりプロジェクトを選択し、"TARGET" -> "General" を選択する。
"Embedded Binaries" へ "GNAdDFPRewardMediationAdapter.framework" を追加する。
- ナビゲータエリアより"Pods/***.xcconfig" を選択する。
"OTHER_LDFLAGS" から -framework "GoogleMobileAds" を削除する。 - ナビゲータエリアよりプロジェクトを選択し、"TARGETS" -> "Build Settings" を選択する。
"Other Linker Flags" から "GoogleMobileAds" を削除する。
Geniee 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 |
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の動画リワードがLoad失敗になった場合に、Geniee SDKを呼び出すことで、広告の空き枠を防ぐことができます。実装手順は以下の通りです。
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" へ 上記で作成したヘッダーファイルのパスを追加する。
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)")
}