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