Ad Exchange アプリ内広告の導入 - united-adstir/AdStir-Integration-Guide-iOS GitHub Wiki
対応OS
adstir SDK 2.12.0以降をお使いの場合はiOS 8.0以上の端末に配信されます。 adstir SDK 2.12.0未満をお使いの場合はiOS 6.0以上の端末に配信されます。
Google Mobile Ads SDKは7.28.0以上をご利用ください
iPhoneXへの対応について
以下のリンクを参考に、バナー広告をSafe Area内に表示していただくようお願いします。
https://developers.google.com/mobile-ads-sdk/docs/dfp/ios/x-ad-rendering
プロジェクトへのSDKの追加
CocoaPodsの利用(推奨)
CocoaPodsを利用すると、adstir SDKを簡単プロジェクトに追加できます。 まだCocoaPodsを利用されていない場合は、CocoaPodsのサイトをご覧頂き、導入してください。
既存、もしくは新規に生成したPodfileを開き、下段の2行を追加し、adstir SDKを利用するように設定します。
platform :ios, "6.0"
# 省略
pod 'AdStir-Ads-SDK'
pod 'AdStir-Ads-SDK/AdMobMediationAdapter'
新規にadstir SDKを追加する場合は、下記のターミナルアプリケーションを開き、プロジェクトのディレクトリコマンドを実行します。
$ pod install
adstir SDKを更新、または削除する場合は、下記のコマンドを実行します。
$ pod update
新規にCocoaPodsを導入した場合、プロジェクト名
.xcworkspaceというファイルが生成されますので、今までのプロジェクトファイルではなく、こちらのファイルを開いて開発を進めてください。
すでに利用していた場合は、引き続き開発を進めてください。
手動でのプロジェクトへの追加
以前のバージョンのSDKを利用されている場合は、必ず関連するファイルを全て削除してください。
GoogleMobileAds.framework
、AdstirAds.framework
、libAdMobMediationAdapter-AdstirAds.a
を、プロジェクト内の任意の箇所にドラッグ&ドロップします。Copy items if needed
にチェックを入れます。Add to targets
欄で、adstir SDKを利用するすべてのターゲットにチェックを入れます。Finish
をクリックします。
依存Framework/Libraryの追加
名前 | ステータス |
---|---|
CoreMotion.framework | Required |
GLKit.framework | Required |
SafariServices.framework | Optional |
iOS 10以降では、CoreMotionをリンクする場合、Info.plistにPrivacy - Motion Usage Description
(NSMotionUsageDescription
)キーを追加し、使用理由を説明する必要があります。
ビルド設定の変更
- プロジェクトファイル設定画面を開きます
- 動画広告を組み込むビルドターゲットを選択します
- `Build Target“タブを選択します
- 画面右側の検索窓に
Other Linker Flags
と入力し、検索します Other Linker Flags
欄に、-ObjC
と設定します
adstirのSDKを呼び出すためにはこの設定が必須となり、設定がされていない場合は、案件切れ扱いとなってしまいます- 組み込む対象の全てのビルドターゲットに、同じ設定を行います
もしくは、この設定はプロジェクト単位で設定することも可能です
Amazonモバイル広告を利用される場合
こちらをご覧ください。
MoPub広告を利用される場合
こちらをご覧ください。
広告の設置
SDKの実装
Swift
- ViewController.swift
import UIKit
import GoogleMobileAds
class ViewController: UIViewController, GADBannerViewDelegate {
var bannerView: DFPBannerView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
// ここでは、320x50サイズのバナー広告を表示します。
// サイズについての詳細は、営業担当者からお知らせ致します。
bannerView = DFPBannerView.init(adSize: kGADAdSizeBanner, origin: CGPoint(x:0.0, y:UIApplication.shared.statusBarFrame.size.height))
bannerView.validAdSizes = [NSValueFromGADAdSize(kGADAdSizeBanner)]
// 実際に配信に使用するAd Unit IDは、営業担当者から別途お知らせ致します。
// こちらはテスト用のIDになります。
bannerView.adUnitID = "/34264398/adstir_5358_39604_130929"
bannerView.rootViewController = self
// デリゲートは必要に応じて実装してください
// See also: https://developers.google.com/mobile-ads-sdk/docs/dfp/ios/ad-events
bannerView.delegate = self
let request : DFPRequest! = DFPRequest.init()
bannerView.load(request)
self.view.addSubview(bannerView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
deinit {
self.bannerView.delegate = nil
self.bannerView = nil
}
// MARK: -
// MARK: GADBannerViewDelegate
func adViewDidReceiveAd(_ bannerView: GADBannerView!) {
// 広告取得完了時の動作を実装
NSLog("Loaded!")
NSLog("%@", bannerView.adNetworkClassName!)
}
func adView(_ bannerView: GADBannerView!, didFailToReceiveAdWithError error: GADRequestError!) {
// 広告取得失敗時の動作を実装
NSLog("Failed!")
}
}
Objective-C
- ViewController.m
@import GoogleMobileAds;
@interface ViewController () <GADBannerViewDelegate>
@property (nonatomic, strong) DFPBannerView *bannerView;
@end
@implementation ViewController
- (void)viewDidLoad
{
// ここでは、320x50サイズのバナー広告を表示します。
// サイズについての詳細は、営業担当者からお知らせ致します。
DFPBannerView *bannerView = [[DFPBannerView alloc] initWithAdSize:kGADAdSizeBanner origin:CGPointMake(0, UIApplication.sharedApplication.statusBarFrame.size.height)];
bannerView.validAdSizes = @[NSValueFromGADAdSize(kGADAdSizeBanner)];
// 実際に配信に使用するAd Unit IDは、営業担当者から別途お知らせ致します。
// こちらはテスト用のIDになります。
bannerView.adUnitID = @"/34264398/adstir_5358_39604_130929";
bannerView.rootViewController = self;
// デリゲートは必要に応じて実装してください
// See also: https://developers.google.com/mobile-ads-sdk/docs/dfp/ios/ad-events
bannerView.delegate = self;
DFPRequest *request = DFPRequest.new;
[bannerView loadRequest:request];
[self.view addSubview:bannerView];
self.bannerView = bannerView;
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)dealloc {
self.bannerView.delegate = nil;
self.bannerView = nil;
}
#pragma mark -
#pragma mark GADBannerViewDelegate
- (void)adViewDidReceiveAd:(GADBannerView *)bannerView {
// 広告取得完了時の動作を実装
}
- (void)adView:(GADBannerView *)bannerView didFailToReceiveAdWithError:(GADRequestError *)error {
// 広告取得失敗時の動作を実装
}
@end
対応している広告サイズ
- バナー広告
- 320x50
- 320x100
- 300x250
よくある質問
AppStoreの審査が通りません
v2.7.1以前にバンドルされているGoogleMobileAds.framework
をご利用の場合、下記のようなメッセージが来る場合があります。
担当者から最新のSDKを受け取っていただくか、こちらから最新のSDKをダウンロードしていただき、GoogleMobileAds.framework
を差し替えてください。
This app attempts to access privacy-sensitive data without a usage description.
The app's Info.plist must contain an NSCalendarsUsageDescription key
with a string value explaining to the user how the app uses this data.