[Unity/admob/Applovin]admob動画リワードメディエーション実装方法(Applovin編)

admobのメディエーションに動画リワードメディエーション(正式にはリワードメディエーション)が導入され、
徐々に利用者も増えてるみたいなので、今回はApplovinの導入方法をまとめたいと思います。

ちなみに、今回のApplovinでは関係ありませんが、
admobメディエーションを使用する際に、各広告会社のAdapterが必要となるのですが、
各広告会社の公式ではなく、Googleが公開しているものが多く、公式にまったく情報がないことがよくあります。

ということで、公式で情報がない場合は、下記から探してAdapterを導入してみてください。
(UnityAdsはAdapterさえ見つかれば割と簡単に入れられました)

https://firebase.google.com/docs/admob/android/mediation-networks#supported-ad-networks

では、Unityでadmobリワードメディエーション+Applovinの方法は下記!

 

あ、admobとApplovinへの登録方法の説明は省略します!

 

 

1.AdmobのSDKを導入しよう

まずはAdmobのSDKを導入しましょう。

※既にAdmobを導入している場合はよしなにやってください

Admob公式の導入方法は下記。英語ですが。

https://firebase.google.com/docs/admob/ios/games#unity_plugin_api

 

下記より、SDK(GoogleMobileAds.unitypackage)をDLします。

https://github.com/googleads/googleads-mobile-unity/releases/tag/v3.0.4

capture-20160611-231712

 

それから、iOS用に.frameworkと、メディエーション用の.aファイルもDLしておきましょう。

https://firebase.google.com/docs/admob/ios/download

 

capture-20160611-232002

 

 

DLしたGoogleMobileAds.unitypackageをダブルクリックで開くと、開いているUnityプロジェクトにインポートできます

capture-20160611-232405

このままImportボタンを押して、プロジェクトにインポートしましょう。

 

こんな感じになります。↓

capture-20160611-232728

 

次に、先ほどDLしたgooglemobileadssdkios.zipを解凍して、中身をUnityに入れていきましょう。

下記2つのフォルダが必要になります。

・GoogleMobileAds.framework

・Mediation Adapters

 

GoogleMobileAds.frameworkは、xcode側で追加してもいいですし、UnityのPlugins->iOSフォルダの中に入れておいてもOKです。

※UnityをWindowsで使用している場合、Unity側に.frameworkを入れるとxcodeが認識してくれないことがあります。その場合は、xcodeで追加するようにしてください

 

Mediation Adaptersは、中身の.hファイルたちをPlugins->iOSフォルダの中に入れましょう。

リワードメディエーションでは使わないファイルも含まれているっぽいですが、今回は全部入れておきます。

 

こんな感じ↓

capture-20160611-233600

 

 

それからそれから、必要なframeworkをUnity側で設定しておきましょう。

※必要なframework

  • AdSupport
  • AudioToolbox
  • AVFoundation
  • CoreGraphics
  • CoreTelephony
  • CoreMedia(Applovinで使用)
  • EventKit
  • EventKitUI
  • MessageUI
  • StoreKit
  • SystemConfiguration
  • UIKit(Applovinで使用)
  • GoogleMobileAds.framework(先ほどDLしたもの)

 

UnityでPlugins->iOS内の適当なファイルを選ぶと、Inspectorで使用するframeworkを設定することができます。

capture-20160611-235030

 

2.Applovinを導入しよう

ApplovinのunitypackageをDLしましょう。

https://www.applovin.com/integration#unity3dIntegration

 

capture-20160611-235228

 

unitypackageなので、DLしたファイルをそのまま開きましょう。

そしてUnityにImport!なんですが、AndroidManifest.xmlはいらないので、インポートのチェックを外しておきましょう。

capture-20160611-235538

 

もしAndroidManifestもインポートしてしまった場合は、削除しておいてください。

 

次に、AndroidManifest.xmlにApplovinの情報を追記します。

今回はAdmobのAndroidManifestを使用しますが、使用している広告会社等によって各々変わると思うので、適宜対応をお願いします。

 

ApplovinのDoc->Android->Admobの欄に、書き加えるべき情報が載っているので、それを入れます。

https://www.applovin.com/integration#adMobIntegration

capture-20160611-235945

 

AdmobのAndroidManifestは、Plugins->Android->GoogleMobileAdsPlugin->libs以下に入っています。

それぞれ、Admobの方のAndroidManifestの方にmeta-dataとかuses-permissionとかactivityとかが既にあるはずなので、

その下あたりにコピペすれば問題ないと思います。

 

3.ApplovinのAdapterを導入しよう

3-1.Android版について

さて、ここでハマる人が多いと思うので、章を変えて説明します。

 

ページ冒頭でも少し触れましたが、

Admobのメディエーションを行うためには、各社ごとにAdapterを導入する必要があります。

 

そこで、ApplovinのAdapterを探してみると、下記のGitHubに公開されていました(DLはしなくて大丈夫です)

https://github.com/AppLovin/SDK-Network-Adaptors/tree/master/AdMob/Android

 

この.javaたちをUnityに入れれば、それで大丈夫なのか…と思いきや、実は罠が潜んでいます。

なんと、Unityでは.javaはコンパイル時に弾かれしまうようなのです。

 

これは困ったということで、Applovinの中の人・坂本さん(@tatsuosakamoto)にヘルプを出しました。

そして、.jarファイル化したものを作っていただくことができました。

ただ、それを公式で公開することは今のところないようなので、こちらで配布することにします。

 

Applovinのメディエーション用Adapter(動画リワード以外のバナー等にも使用できます)

https://drive.google.com/open?id=0B3YkTeehNDFKeDR6NmNvNzctMUU

※今後公式のAdapterが更新された際、上記の.jarが動かなくなる可能性があります。

※その場合は、坂本さんに直接確認していただくか、私(@merkmal_dev)までご連絡ください。

 

 

さて、では上記URLからapplovin-admob-adapter.jarファイルをDLしていただき、

UnityのPlugins->Androidフォルダの中に入れましょう。

 

3-2.iOS版について

iOS版は、公式で用意されているAdapterをそのまま使用できます。

https://github.com/AppLovin/SDK-Network-Adaptors/tree/master/AdMob/iOS

 

上記ファイルをDLして、Plugins->iOS以下に入れましょう。

 

4.Admobの広告枠作成

メディエーション用の広告枠を作成しましょう。

アプリ自体の広告枠を作成していない場合は、作成しておいてください(今回は省略します)

 

Admobの収益化->該当するアプリ枠を選択->新しい広告ユニットを選択します。

capture-20160612-004220

 

 

広告の種類を「リワードインタースティシャル広告」

報酬の設定を「第三者広告ネットワーク設定の使用」

広告ユニット名を適宜設定して、保存します。

capture-20160612-004520

 

あとなんか出てくるけど、「完了」を押して広告枠を作成してください。

 

 

動画リワードの枠が出来ているか確認してください。この広告ユニットIDというのは後程使います。

capture-20160612-005012

 

 

広告枠の右側にある、「第三者のメディエーションを設定」を選択し、Applovin(必要ならばその他のADNWも)の設定をしておきましょう。

capture-20160612-005146

 

メディエーションという画面が表示されると思うので、「+新しい広告ネットワーク」を選びます。

capture-20160612-005442

 

 

導入したい広告ネットワークを選択しましょう。

今回はApplovinのみ。

AppNameは空で大丈夫です。

 

capture-20160612-005610

 

最後に保存ボタンを押して完了です。

capture-20160612-010023

 

今回はAndroid用の画面で設定していますが、iOS、Androidともに同様に設定しておきましょう。

 

5.スクリプトの用意

さて、ここからはスクリプトの用意です。

 

私の場合は、AdmobManager.csという名前のファイルを作って、そこに記載しています。

下記にサンプルのスクリプトを置いておきます。適宜修正をお願いいたします。

 

※Applovin.SetSdkKey()には、Applovinの管理画面から確認できるSDK keyを入力してください。

 

using UnityEngine;
using System.Collections;
using GoogleMobileAds.Api;

public class AdmobManager : MonoBehaviour
{
    public string ios_Reward;
    public string Android_Reward;

    private RewardBasedVideoAd rewardBasedVideo;

    bool rewardBasedEventHandlersSet = false;
    // Use this for initialization
    void Awake()
    {
        //AppLovin.SetVerboseLoggingOn("true");
#if UNITY_ANDROID
        AppLovin.InitializeSdk();
#elif UNITY_IPHONE
        AppLovin.SetSdkKey("ApplovinのSDK Keyを入力してください");
        AppLovin.InitializeSdk();
#endif
        RequestRewardBasedVideo();
    }

    void Start()
    {
    }

    private void RequestRewardBasedVideo()
    {
        string adUnitId;
#if UNITY_EDITOR
        adUnitId = "unused";
#elif UNITY_ANDROID
        adUnitId = Android_Reward;
#elif UNITY_IPHONE
        adUnitId = ios_Reward;
#else
        adUnitId = "unexpected_platform";
#endif
        rewardBasedVideo = RewardBasedVideoAd.Instance;

        AdRequest request = new AdRequest.Builder().Build();
        rewardBasedVideo.LoadAd(request, adUnitId);

        if(rewardBasedEventHandlersSet == false){
                // has rewarded the user.
                rewardBasedVideo.OnAdRewarded += HandleRewardBasedVideoRewarded;

                rewardBasedVideo.OnAdClosed += HandleRewardBasedVideoRewardedClosed;

                rewardBasedVideo.OnAdFailedToLoad += HandleRewardBasedVideoRewardedFailed;

                rewardBasedEventHandlersSet = true;
        }
    }

    // 動画再生
    public void pushAds()
    {
        if (rewardBasedVideo.IsLoaded())
        {
            rewardBasedVideo.Show();
        }
    }

    // 報酬受け渡し処理
    public void HandleRewardBasedVideoRewarded(object sender, Reward args)
    {
        
    }

    // 動画広告リロード
    public void HandleRewardBasedVideoRewardedClosed(object sender, System.EventArgs args)
    {
        RequestRewardBasedVideo();
    }

    // ロード失敗時
    public void HandleRewardBasedVideoRewardedFailed(object sender, AdFailedToLoadEventArgs args)
    {
        StartCoroutine(_waitConnectReward());
    }

    // ロードに失敗した場合、30秒待ってから再ロードをする
    IEnumerator _waitConnectReward()
    {
        while (true)
        {
            yield return new WaitForSeconds(30.0f);

            // 通信ができない場合は、リロードしない
            if (Application.internetReachability != NetworkReachability.NotReachable)
            {
                RequestRewardBasedVideo();
                break;
            }

            
        }
    }
}

 

ちなみに、ApplovinのSDK Keyに関しては、

管理画面のDoc->iOSのどれかを選べば表示されます。

capture-20160612-043825

 

 

 

さて、上記スクリプトを、空のGameObjectなりにアタッチしてください。

 

アタッチすると、Admobの広告ユニットIDを入力する項目があると思うので、

そこに先ほど作成したAdmobの広告ユニットIDを入力してください。

capture-20160612-010719

 

↓の広告ユニットIDという部分

capture-20160612-005012

 

この段階で、Androidは作業はほぼ終了なのですが、

Applovinの管理画面にて、リワード動画の配信をONにする必要があります。

ただ、一度Android端末を起動して、ApplovinのSDKKeyを送信しないと管理画面上に登録されません。

 

詳細については、後述します。

 

6.iOS版の設定

6-1.Unity側で設定

iOSにビルドする前に、少し設定をしておきましょう。

 

下記のファイルをUnity上で選択し、InspectorにあるCompileFlagsに「-fno-objc-arc」を入力し、Applyを選択してください。

  • ALInterstitialCache.m
  • ALAdDelegateWrapper.m
  • ALManagedLoadDelegate.m
  • AppLovinUnity.mm

 

capture-20160612-023923

 

 

そして、AppLovinUnity.mmを開き、22行目のダブルクォーテーション(“)が全角?になっているのを半角に直します。

※記事作成時(2016/6/12)のものなので、修正されている可能性もあります。

capture-20160612-023639

 

ここまでやったら、iOS版でビルドし、xcodeに移行しましょう。

 

6-2.Xcodeで設定

 

まず、UnityをWindowsで使用している方、

もしくはエラーでGoogleMobileAds.framework not foundが出る方は、

下記の方法でGoogleMobileAds.frameworkを入れましょう。

 

プロジェクトのUnity-iPhoneで右クリック⇒Add Files to “Unity-iPhone”を選択

 

Project_navigator_contextual_menu_と_Unity-iPhone_xcodeproj

 

GoogleMobileAds.frameworkを選んだら、左下にある「Option」ボタンを押し、

必ず「Copy items if needed」にチェックを入れてからAddボタンを押します。

 

スクリーンショット_2016_06_12_2_55

 

 

次に、環境によるのかもしれませんが、

私の環境では第5章で紹介したスクリプト内にある、

AppLovin.SetSdkKey(“ApplovinのSDKKey”)

という部分で設定しているにも関わらず、何故かSDKKeyが設定されてないようで、
一向にApplovin管理画面に反映されなかったので、Xcodeで設定する必要がありました。

まず、Info.Plistを選択し、一番下の行で↓の画像のように+アイコンを表示させ、クリックして行を追加します。

Info_plist

 

 

次に、追加した行のKeyに「AppLovinSdkKey」(大文字小文字に注意!!)と入力し、

ValueにApplovin管理画面にあるSDK Keyを入力します。

※Keyの値の大文字と小文字をミスると、一向にApplovin管理画面に反映されないので注意してください。

Info_plist_Edited

 

※Keyの値の大文字と小文字をミスると、一向にApplovin管理画面に反映されないので注意してください。

 

 

最後に、実行してみるとWarningで-ObjCを設定しろと言われるので、設定しておきます。

Build Settings->Other Linker Flagsに「-ObjC」を追加しましょう。

Unity-iPhone_xcodeproj

 

以上で、Xcode側の設定も終了です。

 

7.Applovinの管理画面でリワード動画の設定

 

まず、先にAndroid、iOSを実機で一度起動しておいてください。

 

Applovinの管理画面より、

Monetize->Manage Appsを選択し、プルタブの中にアプリが反映されているか確認してください。

アプリを起動したら、そんなにタイムラグはなく反映される(5分以内くらい?)ので、

いつまで経っても反映されない場合は、設定をミスっている可能性が高いです。

 

capture-20160612-041243

 

さらに下の方へ行くと、Rewarded Videoという項目があり、

OFFになっている場合があるので、ONにしておきましょう。

(先にアプリで動画を視聴したりしていると、ONになっていることもあります)

capture-20160612-041411

 

後は好きなように内容を設定し、Saveを選択して終了です。

capture-20160612-041448

 

※設定上部にある「Turning On/Off Ads」という項目は特に触る必要はなく、Video InterstitialsはONのままにしておいてください

 

以上で設定は終わりです。

お疲れ様でした。

LINEで送る
Pocket

You can leave a response, or trackback from your own site.

One Response to “[Unity/admob/Applovin]admob動画リワードメディエーション実装方法(Applovin編)”

  1. […]  Firebase Get Started  |  AdMob by Google  |  Firebasehttps://firebase.google.com/docs/admob/unity/start  games.genieus.co.jp [Unity/admob/Applovin]admob動画リワードメディエーション実装方法(Applovin編)…http://games.genieus.co.jp/unity/unity_admob_applovin/ […]

Leave a Reply

*

Powered by WordPress | Designed by: wordpress themes 2011 | Thanks to Best WordPress Themes, Find WordPress Themes and