Xamarin.Androidでアプリ内広告を出す方法としてGoogle AdmobがあるのでAndroid版の手順をまとめました。XamarinStudioの場合です。
AdMobのライブラリーが見つからないと思ったらAndroidは「GooglePlayServices」の中に入ってる・・ということのようです。
以下を参考にさせていただきました!
Admob with Xamarin Android Part 1: BannerAd(英語)
アプリに「GooglePlayServices」コンポーネントを追加する
- XamarinStudio上でAndroidプロジェクトを開いたら「ソリューション」の「Components」フォルダで右クリック「Get More Components...」をクリックします。
- コンポーネントを検索するウィンドウが表示されるので「CATEGORIES」が「All Compornents」になってることを確認して検索フォームに「Google」と入力します。
- 出てきた「Google Play Services」をクリックして「Add to App」をクリックします。
- Xamarinに画面が戻って「Components」のフォルダに「Google Play Services」が追加されてればOKです。
GooglePlayServicesを入れた後でエラーに何度かひっかかったので以下、別にメモ。
【Xamarin】GooglePlayServices追加で「unzip~」エラー
【Xamarin】GooglePlayServices追加で「touchscreenBlocksFocusが見つからない」エラー
【Xamarin】GooglePlayServicesで「COMPILETODALVIK」エラー
AndroidManifestを編集する
- ソリューションのAndroidプロジェクト内「Properties」の「AndroidManifest.xml」を開く
- 画面最下部の「Application」タブを選択して「Required permission」の「AccessNetworkState」と「Internet」にチェックを入れる。
AssemblyInfo.csを編集する
- ソリューションのAndroidプロジェクト内「Properties」の「AssemblyInfo.cs」を開く
- 最終行に以下の2行を追加する
[assembly: UsesPermission(Android.Manifest.Permission.Internet)]
[assembly: UsesPermission(Android.Manifest.Permission.AccessNetworkState)]
Activity1.csを編集する
やることとしては、ゲーム用のViewを登録していたところに広告用のViewも登録するようにするだけです。
Activity1.csのOnCreate関数のみで完結します。
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
//Admob設定
var ad = new AdView( this );
ad.AdSize = AdSize.SmartBanner;
ad.AdUnitId = "●●●Admobから発行されたユニットID●●●";
var requestbuilder = new AdRequest.Builder();
requestbuilder.AddTestDevice ("●●●テスト機としたい端末のID●●●");
ad.LoadAd( requestbuilder.Build() );
//レイアウト
FrameLayout layout = new FrameLayout( this );
SetContentView( layout );
//ゲーム用のViewを登録
var g = new Game1 ();
layout.AddView( g.Services.GetService<View>() );
//ゲーム用Viewの上にAdmob用のViewを登録(画面下に配置)
FrameLayout.LayoutParams layoutParams =
new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WrapContent,
FrameLayout.LayoutParams.WrapContent );
layoutParams.Gravity = GravityFlags.Bottom | GravityFlags.Center;
layout.AddView( ad, layoutParams );
//ゲームループへ
g.Run ();
}
こんな感じでテスト広告が出ました(なぜか横画面・・・)
AdUnitIdとAddTestDeviceについては検索すれば出てくるはずなので割愛させていただきます・・!
案外さくっと広告出せました!