Skip to content

Banner_Ad_iOS

AdGeneration edited this page Dec 7, 2017 · 30 revisions

iOS SDK Getting Started / バナー広告

はじめに

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

対応バージョン

iOS 7.0以降

導入の流れ

  1. SDKをダウンロードします
  2. 例を参考に広告表示の実装を行います

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

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

CocoaPodsを使用する

  1. 次の行をプロジェクトのPodfileに追加します。
    pod 'AdGeneration'
  2. pod install を実行します。

手動でインストールする

ダウンロードする

こちらからダウンロードしてください。
ダウンロード
(Downloads > ADG.framework.zip )

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

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

img

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

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

  • SystemConfiguration.framework
  • CoreTelephony.framework
  • CoreLocation.framework
  • AVFoundation.framework
  • CoreMedia.framework
  • MediaPlayer.framework
  • AdSupport.framework (※)

(※)はOptionalで追加

img

リソースファイルをプロジェクトに追加する

ADG.framework/ResourcesにあるADG-Resources.bundleをXcodeのプロジェクトナビゲータの任意の場所にドラッグ&ドロップするか、右クリック > Add Files to ... を選択し、"Copy items if needed"にチェックがついていることを確認して、Finishを押します。

img

img

2. 広告表示を実装する

広告を配置するViewを作成します。以下の例では下部中央を指定しています。
AutoLayoutの制約は、広告のサイズに合わせて設定して下さい。

img

  1. 広告を表示するViewやViewController等でADG/ADGManagerViewController.hをインポートします。
  2. ADGManagerViewControllerクラスのインスタンスを生成し、広告リクエストを行います。
  3. viewDidAppearで広告のローテーション再開を行います。
    画面切り替えで本処理を走らせたくない場合はバックグラウンドからの復帰時に行ってください。
  4. ViewControllerのdeallocで、インスタンスの破棄をします。
    delegateへのnilセットを忘れないようご注意ください。
  5. delegateメソッドを実装してください。
#import "BannerAdsObjCViewController.h"
#import <ADG/ADGManagerViewController.h>

@interface BannerAdsObjCViewController () <ADGManagerViewControllerDelegate>

@property (weak, nonatomic) IBOutlet UIView *adView;
@property (nonatomic) ADGManagerViewController *adg;

@end

@implementation BannerAdsObjCViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    /*
     locationid:  管理画面から払い出された広告枠ID
     adtype:      枠サイズ
                  kADG_AdType_Sp:320x50, kADG_AdType_Large:320x100,
                  kADG_AdType_Rect:300x250, kADG_AdType_Tablet:728x90,
                  kADG_AdType_Free:自由設定
     originx:     広告枠設置起点のx座標(optional)
     originy:     広告枠設置起点のy座標(optional)
     w:           広告枠横幅(kADG_AdType_Freeのとき有効 optional)
     h:           広告枠高さ(kADG_AdType_Freeのとき有効 optional)
     */
    NSDictionary *adgparam = @{
        @"locationid" : @"48547",
        @"adtype" : @(kADG_AdType_Sp),
//        @"originx" : @0,
//        @"originy" : @0,
//        @"w" : @0,
//        @"h" : @0
    };
    self.adg = [[ADGManagerViewController alloc] initWithAdParams:adgparam
                                                           adView:self.adView];
    self.adg.delegate = self;
    [self.adg loadRequest]; // 広告リクエスト
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    // 画面復帰時のローテーション再開
    [self.adg resumeRefresh];
}

- (void)dealloc {
    // インスタンスの破棄
    self.adg.delegate = nil;
    self.adg = nil;
}

- (void)ADGManagerViewControllerReceiveAd:(ADGManagerViewController *)adgManagerViewController {
    NSLog(@"Received an ad.");
}

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

- (void)ADGManagerViewControllerDidTapAd:(ADGManagerViewController *)adgManagerViewController{
    NSLog(@"Did tap ad.");
}

@end

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

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

Delegateについて

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

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

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

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

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

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

注意事項

originx / originyについて

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

w / hについて

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

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

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

広告の拡大縮小について

表示領域はパラメータ指定をする場合の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を追加する"まで行ってください。

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

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

import UIKit
import ADG

class BannerAdsSwiftViewController: UIViewController {

    @IBOutlet weak var adView: UIView!
    private var adg: ADGManagerViewController?

    override func viewDidLoad() {
        super.viewDidLoad()

        /*
         locationid:  管理画面から払い出された広告枠ID
         adtype:      枠サイズ
                      adType_Sp:320x50, adType_Large:320x100,
                      adType_Rect:300x250, adType_Tablet:728x90,
                      adType_Free:自由設定
         originx:     広告枠設置起点のx座標(optional)
         originy:     広告枠設置起点のy座標(optional)
         w:           広告枠横幅(kADG_AdType_Freeのとき有効 optional)
         h:           広告枠高さ(kADG_AdType_Freeのとき有効 optional)
         */
        let params: [String: Any] = [
            "locationid": "48547",
            "adtype": ADGAdType.adType_Sp.rawValue,
//            "originx": 0,
//            "originy": 0,
//            "w": 0,
//            "h": 0,
        ]
        adg = ADGManagerViewController(adParams: params, adView: self.adView)
        adg?.delegate = self
        adg?.loadRequest() // 広告リクエスト
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        // 画面復帰時のローテーション再開
        adg?.resumeRefresh()
    }

    deinit {
        // インスタンスの破棄
        adg = nil
    }
}

extension BannerAdsSwiftViewController: ADGManagerViewControllerDelegate {

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

    func adgManagerViewControllerFailed(toReceiveAd adgManagerViewController: ADGManagerViewController!, code: kADGErrorCode) {
        print("Failed to receive an ad.")
        // エラー時のリトライは特段の理由がない限り必ず記述するようにしてください。
        switch code {
        case .adgErrorCodeNeedConnection, // ネットワーク不通
            .adgErrorCodeExceedLimit, // エラー多発
            .adgErrorCodeNoAd: // 広告レスポンスなし
            break
        default:
            adgManagerViewController.loadRequest()
        }
    }

    func adgManagerViewControllerDidTapAd(_ adgManagerViewController: ADGManagerViewController!) {
        print("Did tap ad.")
    }
}

Home

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

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

Clone this wiki locally