「Android/広告組込/google/admob/バナー」の版間の差分
提供: 初心者エンジニアの簡易メモ
(→TestDevice) |
(→TestDevice) |
||
(同じ利用者による、間の1版が非表示) | |||
行127: | 行127: | ||
adRequestBuilder.addTestDevice("33BE2250B43518CCDA7DE426D04xxxx"); | adRequestBuilder.addTestDevice("33BE2250B43518CCDA7DE426D04xxxx"); | ||
AdRequest adRequest = adRequestBuilder.build(); | AdRequest adRequest = adRequestBuilder.build(); | ||
+ | </pre> | ||
+ | ==TestDevice(19.0.0以降)== | ||
+ | <pre> | ||
+ | List<String> testDevices = new ArrayList<>(); | ||
+ | testDevices.add(AdRequest.DEVICE_ID_EMULATOR); | ||
+ | RequestConfiguration requestConfiguration | ||
+ | = new RequestConfiguration.Builder() | ||
+ | .setTestDeviceIds(testDevices) | ||
+ | .build(); | ||
+ | MobileAds.setRequestConfiguration(requestConfiguration); | ||
+ | AdRequest.Builder().build(); | ||
</pre> | </pre> | ||
+ | |||
+ | 参考:https://stackoverflow.com/questions/60539407/after-updating-google-ads-sdk-addtestdevice-is-deprecated-how-to-resolve | ||
=="java.lang.IllegalStateException: The ad size can only be set once on AdView."エラーが出る場合== | =="java.lang.IllegalStateException: The ad size can only be set once on AdView."エラーが出る場合== | ||
2回以上AdSizeを設定しているので、一度入れたら設定しないようにする。 | 2回以上AdSizeを設定しているので、一度入れたら設定しないようにする。 | ||
+ | mAdView = new AdView(this); | ||
if (mAdView.getAdSize() == null) { | if (mAdView.getAdSize() == null) { | ||
mAdView.setAdSize(AdSize.BANNER); | mAdView.setAdSize(AdSize.BANNER); |
2020年8月24日 (月) 17:06時点における最新版
目次
公式
https://developers.google.com/admob/android/banner?hl=ja
レイアウト
main_activity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_height="match_parent" android:layout_width="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <com.google.android.gms.ads.AdView xmlns:ads="http://schemas.android.com/apk/res-auto" android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_alignParentBottom="true" ads:adSize="BANNER" ads:adUnitId="ca-app-pub-3940256099942544/6300978111"> </com.google.android.gms.ads.AdView> </RelativeLayout>
サイズ設定とunitId設定
AdView adView = new AdView(this); adView.setAdSize(AdSize.BANNER); adView.setAdUnitId("ca-app-pub-3940256099942544/6300978111");
ロード処理
import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; public class MainActivity extends AppCompatActivity { private AdView mAdView; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); MobileAds.initialize(this, new OnInitializationCompleteListener() { @Override public void onInitializationComplete(InitializationStatus initializationStatus) { } }); mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); } }
イベント周り
mAdView.setAdListener(new AdListener() { @Override public void onAdLoaded() { // Code to be executed when an ad finishes loading. } @Override public void onAdFailedToLoad(int errorCode) { // Code to be executed when an ad request fails. } @Override public void onAdOpened() { // Code to be executed when an ad opens an overlay that // covers the screen. } @Override public void onAdClicked() { // Code to be executed when the user clicks on an ad. } @Override public void onAdLeftApplication() { // Code to be executed when the user has left the app. } @Override public void onAdClosed() { // Code to be executed when the user is about to return // to the app after tapping on an ad. } });
AdManagerからAdMobへ変換
- setAdSizes()をsetAdSize()へ
- com.google.android.gms.ads.doubleclick.PublisherAdView を com.google.android.gms.ads.AdView へ
- com.google.android.gms.ads.doubleclick.PublisherAdRequest を com.google.android.gms.ads.AdRequest へ
- PublisherAdRequestをAdRequestへ
- PublisherInterstitialAdをInterstitialAdへ
タブレットのサイズ
タブレット端末のディスプレイサイズのdisplaysize.y + 1まで広告は表示されるが、displaysize.y + 2で表示されなくなり、"Ad failed to load : 1"のエラーログが発生するようになる。
ディスプレイサイズの定義はここらへん参考に https://akira-watson.com/android/theme-notitlebar.html
TestDevice
テスト端末として認識させる。idは端末ごとに違う。admobに接続してlogcatで確認できる。
AdRequest request = new AdRequest.Builder() .addTestDevice("33BE2250B43518CCDA7DE426D04Exxxx") .build();
or
AdRequest.Builder adRequestBuilder = new AdRequest.Builder(); adRequestBuilder.addTestDevice("33BE2250B43518CCDA7DE426D04xxxx"); AdRequest adRequest = adRequestBuilder.build();
TestDevice(19.0.0以降)
List<String> testDevices = new ArrayList<>(); testDevices.add(AdRequest.DEVICE_ID_EMULATOR); RequestConfiguration requestConfiguration = new RequestConfiguration.Builder() .setTestDeviceIds(testDevices) .build(); MobileAds.setRequestConfiguration(requestConfiguration); AdRequest.Builder().build();
"java.lang.IllegalStateException: The ad size can only be set once on AdView."エラーが出る場合
2回以上AdSizeを設定しているので、一度入れたら設定しないようにする。
mAdView = new AdView(this); if (mAdView.getAdSize() == null) { mAdView.setAdSize(AdSize.BANNER); } if (mAdView.getAdUnitId() == null) { mAdView.setAdUnitId("ca-app-pub-1234hogehogehogehoge/1234hoge"); }