AdMobメディエーションを利用した実装方法
AdMobメディエーションを利用してアドフリくんの広告を表示することができます。
実装手順に従い、各広告を導入してください。
追加情報については、AdMob公式ガイドを参照してください。
AdMobメディエーション作成
① メニューからメディエーションを選択して「メディエーショングループを作成」を行います。
② 広告フォーマットとプラットフォームを選択します。

広告種類によるAdMobの広告フォーマット
| 広告種類 | AdMobの広告フォーマット | 
|---|---|
| 動画リワード | リワード | 
| インタースティシャル | インタースティシャル | 
| ネイティブ | ネイティブアドバンス | 
| レクタングル | バナー | 
| モバイルバナー | バナー | 
③ 広告のソースから「カスタムイベントを追加」を行います。

④ カスタムイベントの「ラベル」と「eCPM」を設定します。

⑤ 広告ユニットのマッピングから「Class name」と「Parameter」を設定します。

広告種類によるClass nameとParameter
| 広告種類 | Class name | Parameter | 
|---|---|---|
| 動画リワード | AdfurikunAdMobReward | アドフリくんの広告ID | 
| インタースティシャル | AdfurikunAdMobInterstitial | アドフリくんの広告ID | 
| ネイティブ | AdfurikunAdMobNativeAd | アドフリくんの広告ID | 
| レクタングル | AdfurikunAdMobRectangle | アドフリくんの広告ID | 
| モバイルバナー | AdfurikunAdMobBanner | アドフリくんの広告ID | 
AdMobMediationAdapterフォルダをプロジェクトに追加
① adnetworkフォルダにある「AdMobMediationAdapter」をXcodeプロジェクトに追加します。

各広告の実装例
class ViewController: UIViewController {
  var rewardedAd: GADRewardedAd?
  override func viewDidLoad() {
    super.viewDidLoad()
    //動画リワードインスタンスを生成
    rewardedAd = GADRewardedAd(adUnitID: "AdMob管理画面で設定したUnitID")
    //広告を読み込む
    rewardedAd?.load(GADRequest()) { error in
      self.adRequestInProgress = false
      if let error = error {
        //広告読み込み失敗
      } else {
        //広告読み込み成功
      }
    }
  }
  //広告再生ボタン
  @IBAction func playRewardedAd(sender: UIButton) {
    if rewardedAd?.isReady == true {
       rewardedAd?.present(fromRootViewController: self, delegate:self)
    }
  }
}
extension ViewController: GADRewardedAdDelegate {
  func rewardedAdDidPresent(_ rewardedAd: GADRewardedAd) {
    //広告再生開始時に呼ばれます
  }
  func rewardedAdDidDismiss(_ rewardedAd: GADRewardedAd) {
    //広告を閉じた時に呼ばれます
  }
  func rewardedAd(_ rewardedAd: GADRewardedAd, didFailToPresentWithError error: Error) {
    //広告表示失敗時に呼ばれます
  }
}
class ViewController: UIViewController {
  var interstitial: GADInterstitial!
  override func viewDidLoad() {
    super.viewDidLoad()
    //インタースティシャル広告インスタンスを生成
    interstitial = GADInterstitial(adUnitID: "AdMob管理画面で設定したUnitID")
    interstitial.delegate = self
    //広告をロード
    interstitial.load(GADRequest())
  }
  //広告再生ボタン
  @IBAction func playInterstitial(_ sender: AnyObject) {
    if interstitial.isReady {
      interstitial.present(fromRootViewController: self)
    }
  }
}
extension ViewController: GADInterstitialDelegate{
  func interstitialDidReceiveAd(_ ad: GADInterstitial) {
    //広告ロード成功時に呼ばれます
  }
  func interstitial(_ ad: GADInterstitial, didFailToReceiveAdWithError error: GADRequestError) {
    //広告ロード失敗時に呼ばれます
  }
  func interstitialWillPresentScreen(_ ad: GADInterstitial) {
    //広告再生時に呼ばれます
  }
  func interstitialDidDismissScreen(_ ad: GADInterstitial) {
    //広告を閉じる時に呼ばれます
  }
}
class ViewController: UIViewController {
  IBOutlet weak var mediaView: GADMediaView!
  var adLoader: GADAdLoader!
  override func viewDidLoad() {
    super.viewDidLoad()
    //広告のロード
    adLoader = GADAdLoader(adUnitID: YOUR_AD_UNIT_ID, rootViewController: self,
                           adTypes: [GADAdLoaderAdType.unifiedNative],
                           options: [])
    adLoader.delegate = self
    adLoader.load(GADRequest())
  }
}
extension ViewController: GADUnifiedNativeAdLoaderDelegate {
  //広告ロード成功時に呼ばれます
  func adLoader(_ adLoader: GADAdLoader, didReceive nativeAd: GADUnifiedNativeAd) {
    //広告を表示します
    mediaView.mediaContent = nativeAd.mediaContent
  }
  func adLoader(_ adLoader: GADAdLoader, didFailToReceiveAdWithError error: GADRequestError) {
    //広告ロード失敗時に呼ばれます
  }
}
class ViewController: UIViewController {
  //BannerViewインスタンスを定義、レイアウトを設定
  var bannerView: GADBannerView!
  override func viewDidLoad() {
    super.viewDidLoad()
    //広告のサイズを設定
    // バナー:kGADAdSizeBanner  レクタングル:kGADAdSizeMediumRectangle
    bannerView = GADBannerView(adSize: kGADAdSizeBanner)
    addBannerViewToView(bannerView)
    bannerView.adUnitID = "AdMob管理画面で設定したUnitID"
    bannerView.rootViewController = self
    bannerView.delegate = self
    //広告を読み込む
    bannerView.load(GADRequest())
  }
  func addBannerViewToView(_ bannerView: GADBannerView) {
    bannerView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(bannerView)
    view.addConstraints(
      [NSLayoutConstraint(item: bannerView,
                          attribute: .bottom,
                          relatedBy: .equal,
                          toItem: bottomLayoutGuide,
                          attribute: .top,
                          multiplier: 1,
                          constant: 0),
       NSLayoutConstraint(item: bannerView,
                          attribute: .centerX,
                          relatedBy: .equal,
                          toItem: view,
                          attribute: .centerX,
                          multiplier: 1,
                          constant: 0)
     ])
  }
}
extension ViewController: GADBannerViewDelegate {
  func adViewDidReceiveAd(_ bannerView: GADBannerView) {
    //広告の読み込み成功時に呼ばれます
  }
  func adView(_ bannerView: GADBannerView,
      didFailToReceiveAdWithError error: GADRequestError) {
    //広告の読み込み失敗時に呼ばれます
  }
}