Skip to content

Banner_Ad_iOS

AdGeneration edited this page Jan 5, 2017 · 30 revisions

iOS SDK Getting Started / バナー広告

はじめに

開発環境にXcodeを使用することを前提とします。

対応バージョン

iOS 6.0以降

導入の流れ

  1. SDKをダウンロードします
  2. プロジェクトにSDKを追加します
  3. Ad Generation SDKが参照しているframeworkを追加します
  4. 例を参考に広告表示の実装を行います

App Transport Security(ATS)対応については「iOS SDK導入時のApp Transport Security(ATS)対応について」を御覧ください。

1. SDKのダウンロードする

こちらからダウンロードしてください。
ダウンロード

2. プロジェクトにSDKを追加する

ダウンロードしたZIPファイルを解凍し、ADG_iOSSDKフォルダの中に入っている"ADG.framework"をプロジェクトナビゲータにドラッグ&ドロップします。
"Copy items if needed"にチェックがついていることを確認して、Finishを押します。

img

3. Ad Generation SDKが参照しているframeworkを追加する

Xcodeのプロジェクトナビゲータからプロジェクトファイルを選択し、 "TARGETS" > アプリケーションスキーマ > "General"タブ > "Linked Frameworks and Libraries" の+ボタンから、各SDKが使用するframeworkの追加をしてください。

  • SystemConfiguration.framework
  • CoreTelephony.framework
  • MediaPlayer.framework
  • Security.framework
  • QuartzCore.framework
  • AdSupport.framework (※)
  • CoreGraphics.framework

(※)はOptionalで追加

img

4. 広告表示を実装する

.hファイル

  1. 広告を表示するViewやViewController等のヘッダーファイル内でADG/ADGManagerViewController.hをインポートします。
  2. ADGManagerViewControllerクラスのプロパティを追加します。
#import <UIKit/UIKit.h>
#import <ADG/ADGManagerViewController.h> //手順1

@interface TestViewController : UIViewController<ADGManagerViewControllerDelegate>

@property (nonatomic, retain) ADGManagerViewController *adg; //手順2
@end

.mファイル

  1. ADGManagerViewControllerクラスを生成します。
  2. 広告リクエストを行います。
  3. viewDidAppearで広告のローテーション再開を行います。
    画面切り替えで本処理を走らせたくない場合はバックグラウンドからの復帰時に行ってください。
  4. インスタンスの破棄をします。
    delegateへのnilセットを忘れないようご注意ください。
  5. delegateメソッドを実装します
@implementation TestViewController

- (void)viewDidLoad
{
    //手順1
     NSDictionary *adgparam = @{
                                 @"locationid" : @"10723", //管理画面から払い出された広告枠ID
                                 @"adtype" : @(kADG_AdType_Sp), //枠サイズ(kADG_AdType_Sp:320x50, kADG_AdType_Large:320x100, kADG_AdType_Rect:300x250, kADG_AdType_Tablet:728x90, kADG_AdType_Free:自由設定)
                                 @"originx" : @(0), //広告枠設置起点のx座標
                                 @"originy" : @(0), //広告枠設置起点のy座標
                                 @"w" : @(0), //広告枠横幅(kADG_AdType_Freeのとき有効)
                                 @"h" : @(0)  //広告枠高さ(kADG_AdType_Freeのとき有効)
                             };
    ADGManagerViewController *adgvc = [[ADGManagerViewController alloc] initWithAdParams:adgparam adView:self.view];// adViewには広告を表示する画面のUIViewインスタンスをセットする。
    self.adg = adgvc;
    [adgvc release];
    _adg.delegate = self;
    [_adg setFillerRetry:NO];
    [_adg loadRequest]; // 手順2
}

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    // 手順3
    if(_adg){
        [_adg resumeRefresh];
    }
}

- (void) dealloc {
    // 手順4
    _adg.delegate = nil;
    _adg = nil;
    [super dealloc];
}

// 手順5
- (void)ADGManagerViewControllerReceiveAd:(ADGManagerViewController *)adgManagerViewController
{
    NSLog(@"%@", @"ADGManagerViewControllerReceiveAd");
}

// エラー時のリトライは特段の理由がない限り必ず記述するようにしてください。
- (void)ADGManagerViewControllerFailedToReceiveAd:(ADGManagerViewController *)adgManagerViewController code:(kADGErrorCode)code {
    NSLog(@"%@", @"ADGManagerViewControllerFailedToReceiveAd");
    // ネットワーク不通/エラー多発/広告レスポンスなし 以外はリトライしてください
    switch (code) {
    	case kADGErrorCodeExceedLimit:
    	case kADGErrorCodeNeedConnection:
      case kADGErrorCodeNoAd:
            break;
       default:
       [adgManagerViewController loadRequest];
            break;
    }
}

- (void)ADGManagerViewControllerOpenUrl:(ADGManagerViewController *)adgManagerViewController{
    NSLog(@"%@", @"ADGManagerViewControllerOpenUrl");
}

各メソッドの仕様やオプションについて

iOSリファレンスをご参照ください。

Delegateについて

広告受信
- (void)ADGManagerViewControllerReceiveAd:(ADGManagerViewController *)adgManagerViewController

SDKからの広告リクエストが成功したタイミングで呼び出されます。
また、ローテーションによる広告取得成功の際にも呼び出されます。

広告受信失敗
- (void)ADGManagerViewControllerFailedToReceiveAd:(ADGManagerViewController *)adgManagerViewController code:(kADGErrorCode)code

広告読込みが失敗した際に呼び出されます。

  • kADGErrorCodeUnknown……不明なエラーが発生しました。
  • kADGErrorCodeCommunicationError……アドサーバー間通信/連携しているアドネットワークSDKとの接続等でエラーが発生しました。
  • kADGErrorCodeReceivedFiller……白板検知されました。
  • kADGErrorCodeNoAd……接続先アドネットワーク全て広告在庫切れが返却されました。
  • kADGErrorCodeNeedConnection……デバイスがネットワークに接続されていません。
  • kADGErrorCodeExceedLimit……エラー回数が上限に達しました。
広告タップ
- (void)ADGManagerViewControllerOpenUrl:(ADGManagerViewController *)adgManagerViewController

広告がタップされた際に呼び出されます。
(ブラウザやストア起動の成否は問いません)

注意事項

originx / originyについて

originx / oroginyは広告表示領域となるCGRectクラスのx, yに相当します。

w / hについて

adtypeにkADG_AdType_Freeを指定した場合のみ有効となります。

審査完了前の稼働確認について

審査完了前に広告の掲載イメージをご確認頂く際は、locationIdに"10723"を設定してください。

広告の拡大縮小について

表示領域はパラメータ指定をする場合のadtype並びにwとhの値で決まります。
※wとhが有効となるのはadtypeにkADG_AdType_Freeを指定したときのみです。

//例:横640×縦100の指定
@"adtype" : @(kADG_AdType_Free),
@"w" : @(640),
@"h" : @(100)

表示領域の指定は広告の拡大を意味するものではありません。

横320×縦50の広告を横640×縦100の領域で表示したとしても、広告自体の大きさに変更はありません。 領域の確保のみが行われます。

Swiftでの実装

"3. Ad Generation SDKが参照しているframework"まで行ってください。

プロジェクト直下に以下の一行を書いたhファイルを作成します(ここでは名前をHeader.hとする)。

#import <ADG/ADGManagerViewController.h>

Build Settingsの「SwiftCompiler-Code Generation」内の「Objective-C Bridging Header」にHeader.hを設定します。

広告の呼び出しを実装します。

以下コード例です。
UIViewControllerインスタンスの破棄が行われる際は、広告の破棄やdelegateへのnilセットも必ず行ってください。

import UIKit

class ViewController: UIViewController {

    private var adg: ADGManagerViewController?

    override func viewDidLoad() {
        super.viewDidLoad()

        let params: [String : Any] = [
            "locationid": "10723",  // locationid:広告枠ID
            "adtype": 0,            // adtype:広告サイズ 0:320x50, 1:320x100, 2:300x250, 3:728x90
            "originx": 0,           // originx:x座標
            "originy": 0            // originy:y座標
        ]
        adg = ADGManagerViewController(adParams: params, adView: self.view)
        adg?.delegate = self
        adg?.setFillerRetry(false)
        adg?.loadRequest()
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)

        // 画面表示のタイミングでローテーションを再開させてください
        adg?.resumeRefresh()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

}

extension ViewController: ADGManagerViewControllerDelegate {

    func adgManagerViewControllerReceiveAd(_ adgManagerViewController: ADGManagerViewController!) {
        print("Received an ad.")
    }

    func adgManagerViewControllerFailed(toReceiveAd adgManagerViewController: ADGManagerViewController!, code: kADGErrorCode) {
        print("Failed to receive an ad.(\(code.rawValue))")

        // ネットワーク不通/エラー多発/広告レスポンスなし 以外はリトライしてください
        switch code {
        case .adgErrorCodeNeedConnection, .adgErrorCodeExceedLimit, .adgErrorCodeNoAd:
            break
        default:
            adgManagerViewController.loadRequest()
        }
    }

}

Home

導入マニュアルのドキュメントはコチラに移行しました。

お手数ですがリンクから遷移してください。 https://docs.sdk.ad-generation.jp/

Clone this wiki locally