LoginSignup
9
10

More than 3 years have passed since last update.

iOS AdMobでテスト広告を表示したい時の罠

Last updated at Posted at 2017-02-10

背景

AdMobを使って広告付きiOSアプリを開発しているとき、実機でテスト広告をなかなか思うように表示できない問題に直面した。

一般的な実装(Swift 3.2)

let simulator: Bool = false;  //trueでシミュレーター、falseで実機

var ad: GADBannerView = GADBannerView(adSize: kGADAdSizeSmartBannerPortrait);

ad.frame.origin = CGPoint(x: 0, y: view.bounds.height - ad.frame.height);
ad.frame.size = CGSize(width: view.bounds.height, height: view.bounds.height);

ad.adUnitID = "AdMobの広告ID";
ad.delegate = self;
ad.rootViewController = self;

let gadRequest: GADRequest = GADRequest();
gadRequest.testDevices = simulator ? [kGADSimulatorID] : ["端末ID"];
ad.load(gadRequest);

view.addSubview(ad);

テスト広告を表示したい時は、gadRequest.testDevices を設定する。とりわけ実機で表示する場合には端末IDが必要となる。あとは端末で設定 -> プライバシー -> 広告 -> 追跡型広告を制限をOFFにすれば良い。
IMG_7729.PNG

端末IDの確認方法

何も考えずに上のソースコードを組み込んだプログラムを実機でRunしてみれば、デバッグエリアのログに<Google> To get test ads on this device, call: request.testDevices = @[ @"端末ID" ];という風に表示される。

一度端末IDを確認してしまえば永久にそれでテスト広告が表示できるわけではなかった。なんと、端末IDは別のものに変更されてしまうことがあるのだ。gadRequest.testDevices は設定したままでもリリースすることができるが、リリース後に端末IDが変更されてしまっては困る。

原因

テスト広告を表示するには追跡型広告を制限のOFFが必要であるが、これをONに一度してしまうと、端末IDがリセットされてしまうのだ。

解決方法

追跡型広告を制限のON / OFFの切り替えをしないことしか見つけられていない。良い方法があったら教えていただきたい。

9
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10