iPhone アプリを販売して夢の左うちわ生活、と思ったらダウンロードが少なすぎる…。という人には、売れないアプリを販売するより、広告の方が儲かります。特にInterstitial広告はうまく表示させると効果があるようです。
Xcode 10.2.1
AdMob Interstitial
公式ガイドはこちらにあります。インタースティシャル広告
このAdMobの設定はGoogleが推奨するFirebaseではなく、今までのSDKを使った方法です。何らかの理由でFirebaseを利用できないケースが想定されるので残っているのでしょう。
AdMob SDK を導入
SDKの設定まではこちらにあるAdMob Banner設定手順と同じです。SDKをダウンロードするかCocoaPodsで設定する方法があります。
以前は「Build Phases」タブの「Link Binary With Libraries」に10個ほどのframeworkを追加していましたがもう設定する必要はありません。
コードの記述とAdMob IDはバナーとは異なります。
Interstitial IDはBanner IDとは別に取らないといけません。BannerのIDは使えないので注意です。
サンプルコード
コードですが、ここでは、本番とテストをフラグで切り替えるようにしてあります。
シミュレータの場合にはIDは、kGADSimulatorID を使います。
ViewController.swift
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
import UIKit import GoogleMobileAds class ViewController: UIViewController, GADInterstitialDelegate { // Interstitial AdMob ID を入れてください var AdMobID = "your admob ID" let testAdMobID = "ca-app-pub-3940256099942544/1033173712" // Simulator testDevice ID let SIMULSTOR_ID = kGADSimulatorID // テスト let adTest:Bool = true // delay sec let delayTime = 3.0 override func viewDidLoad() { super.viewDidLoad() if adTest { AdMobID = testAdMobID } let interstitial = GADInterstitial(adUnitID: AdMobID) let request = GADRequest() if adTest { request.testDevices = [SIMULSTOR_ID] } else{ // AdMob print("AdMob本番") } interstitial.load(request); // 3秒間待たせる DispatchQueue.main.asyncAfter(deadline: .now() + delayTime) { self.showAdMob(interstitial: interstitial) } } func showAdMob(interstitial: GADInterstitial){ if (interstitial.isReady) { interstitial.present(fromRootViewController: self) } } } |
このケースでは、interstitial のロードに時間がかかると表示されないので、3秒後にpresentFromRootViewController(self)で前面に表示させるようにしています。あるいはロードされたことを確認する方法もあります。
ゲームでのページ切り替えなど、起動から時間がたっていれば必要ないでしょう。
また、Bannerと違って画面を占拠されるので毎回表示させているとユーザーから嫌われます。ゲームの終わりとか5回に1回程度など調整したほうがいいでしょう。
References:
スタートガイド | Android | Google Developers
インタースティシャル広告 | Android | Google Developers