-
Notifications
You must be signed in to change notification settings - Fork 16
Banner_Ad_iOS
開発環境にXcodeを使用することを前提とします。
iOS 7.0以降
- SDKをダウンロードします
↓ - 例を参考に広告表示の実装を行います
App Transport Security(ATS)対応については「iOS SDK導入時のApp Transport Security(ATS)対応について」を御覧ください。
- 次の行をプロジェクトのPodfileに追加します。
pod 'AdGeneration'
-
pod install
を実行します。
こちらからダウンロードしてください。
ダウンロード
(Downloads > ADG.framework.zip
)
ダウンロードしたZIPファイルを解凍し、ADG_iOSSDKフォルダの中に入っている"ADG.framework"をプロジェクトナビゲータの任意の場所にドラッグ&ドロップするか、右クリック > Add Files to ...
を選択し、"Copy items if needed"にチェックがついていることを確認して、Finishを押します。
Xcodeのプロジェクトナビゲータからプロジェクトファイルを選択し、 "TARGETS" > アプリケーションスキーマ > "General"タブ > "Linked Frameworks and Libraries" の+ボタンから、各SDKが使用するframeworkの追加をしてください。
- SystemConfiguration.framework
- CoreTelephony.framework
- CoreLocation.framework
- AVFoundation.framework
- CoreMedia.framework
- MediaPlayer.framework
- AdSupport.framework (※)
(※)はOptionalで追加
ADG.framework/Resources
にあるADG-Resources.bundle
をXcodeのプロジェクトナビゲータの任意の場所にドラッグ&ドロップするか、右クリック > Add Files to ...
を選択し、"Copy items if needed"にチェックがついていることを確認して、Finishを押します。
広告を配置するViewを作成します。以下の例では下部中央を指定しています。
AutoLayoutの制約は、広告のサイズに合わせて設定して下さい。
- 広告を表示するViewやViewController等で
ADG/ADGManagerViewController.h
をインポートします。 - ADGManagerViewControllerクラスのインスタンスを生成し、広告リクエストを行います。
- viewDidAppearで広告のローテーション再開を行います。
画面切り替えで本処理を走らせたくない場合はバックグラウンドからの復帰時に行ってください。 - ViewControllerのdeallocで、インスタンスの破棄をします。
delegateへのnilセットを忘れないようご注意ください。 - 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リファレンスをご参照ください。
- (void)ADGManagerViewControllerReceiveAd:(ADGManagerViewController *)adgManagerViewController
SDKからの広告リクエストが成功したタイミングで呼び出されます。
また、ローテーションによる広告取得成功の際にも呼び出されます。
- (void)ADGManagerViewControllerFailedToReceiveAd:(ADGManagerViewController *)adgManagerViewController code:(kADGErrorCode)code
広告読込みが失敗した際に呼び出されます。
- kADGErrorCodeUnknown……不明なエラーが発生しました。
- kADGErrorCodeCommunicationError……アドサーバー間通信/連携しているアドネットワークSDKとの接続等でエラーが発生しました。
- kADGErrorCodeReceivedFiller……白板検知されました。
- kADGErrorCodeNoAd……接続先アドネットワーク全て広告在庫切れが返却されました。
- kADGErrorCodeNeedConnection……デバイスがネットワークに接続されていません。
- kADGErrorCodeExceedLimit……エラー回数が上限に達しました。
- (void)ADGManagerViewControllerDidTapAd:(ADGManagerViewController *)adgManagerViewController
広告がタップされた際に呼び出されます。
(ブラウザやストア起動の成否は問いません)
originx / oroginyは広告表示領域となるCGRectクラスのx, yに相当します。
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の領域で表示したとしても、広告自体の大きさに変更はありません。 領域の確保のみが行われます。
"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.")
}
}