-
Notifications
You must be signed in to change notification settings - Fork 16
Banner_Ad_iOS
開発環境にXcodeを使用することを前提とします。
- Xcode 12系(※Ad Generation SDK 〜v2.20.1 までのバージョンをご利用の方はXcode 13へのアップデートを行わないでください)
- iOS 9.0以降
- SDKをダウンロードします
↓ - 例を参考に広告表示の実装を行います
- App Transport Security(ATS)対応については「iOS SDK導入時のApp Transport Security(ATS)対応について」を御覧ください。
- 【重要】Xcode12以降の環境の場合、あわせて、AppTrackingTransparency対応について / SKAdNetwork対応について を御覧いただき、ご対応をお願いいたします。
- 次の行をプロジェクトの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 ※こちらの必須Frameworkに関しては位置情報の扱いについてもご参照ください。
- AVFoundation.framework
- CoreMedia.framework
- MediaPlayer.framework
- SafariServices.framework
- WebKit.framework
- StoreKit.framework
- AdSupport.framework (※)
(※)はOptionalで追加
ADG.framework/Resources
にあるADG-Resources.bundle
をXcodeのプロジェクトナビゲータの任意の場所にドラッグ&ドロップするか、右クリック > Add Files to ...
を選択し、"Copy items if needed"にチェックがついていることを確認して、Finishを押します。
Xcodeのプロジェクトナビゲータからプロジェクトファイルを選択し、
"TARGETS" > アプリケーションスキーマ > "Build Settings"タブ > "Linking" > "Other Linker Flags"に"-ObjC"を追加してください。
広告を配置するViewを作成します。以下の例では下部中央を指定しています。
AutoLayoutの制約は、広告のサイズに合わせて設定して下さい。
- 広告を表示するViewやViewController等で
ADG/ADGManagerViewController.h
をインポートします。 - 広告表示用のView(サンプルコードだと self.adView が該当します)をself.viewにaddSubViewして追加 または StoryBoardにて追加していただき、広告リクエストをする前に配置させておきます。
- 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:自由設定
rootViewController: 広告を配置するViewController
*/
self.adg = [[ADGManagerViewController alloc] initWithLocationID:@"48547"
adType:kADG_AdType_Sp
rootViewController:self];
[self.adg addAdContainerView:self.adView]; // 広告Viewを配置するViewを指定
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……エラー回数が上限に達しました。
- kADGErrorCodeTemplateFailed……サイズ指定の誤りなどの要因により広告の形成に失敗しました。
- (void)ADGManagerViewControllerDidTapAd:(ADGManagerViewController *)adgManagerViewController
広告がタップされた際に呼び出されます。
(ブラウザやストア起動の成否は問いません)
adOrigin
に広告Viewを配置する際の親Viewに対する相対位置を指定してください。
adtype
にkADG_AdType_Free
を指定し、adSize
に表示サイズを指定してください。
adtype
にkADG_AdType_Free
を指定し、adSize
に表示サイズを指定してください。
adScale
に拡大倍率を指定してください。
以下は300x250を1.2倍に指定した場合の例です。
self.adg = [[ADGManagerViewController alloc] initWithLocationID:@"xxxxx"
adType:kADG_AdType_Free
rootViewController:self];
[self.adg addAdContainerView:self.adView];
self.adg.adSize = CGSizeMake(360, 300);
self.adg.adScale = 1.2;
審査完了前に広告の掲載イメージをご確認頂く際は、以下のIDに置き換えご確認ください。
このIDをセットしたままアプリをリリースしないようご注意ください。
サイズ | テストID | 配信広告 |
---|---|---|
320×50 | 48547 | テスト広告 |
320×100 | 48548 | テスト広告 |
300×250 | 48549 | テスト広告 |
728×90 | 48550 | テスト広告 |
ユーザーが位置情報に関する権限をアプリに付与かつ、Ad Generation SDKにて位置データ付与の設定をONにしている場合、位置情報を広告リクエストに付与します。
位置データ付与のデフォルト設定に関しては、SDKバージョンにより異なります。
v2.13.0より、位置データ付与の設定がデフォルトOFFに変更になりました。
有効にする方法等、詳しくはこちらをご覧ください。位置情報の扱いについて
また、位置情報サービスを使用される場合には、マーケットの規約に従い、ユーザーへの通知及び同意をお願いいたします。
詳しくはこちらをご覧ください。位置情報を利用した広告配信について
"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:自由設定
rootViewController: 広告を配置するViewController
*/
adg = ADGManagerViewController(locationID: "48547", adType: .adType_Sp, rootViewController: self)
adg?.addAdContainerView(self.adView) // 広告Viewを配置するViewを指定
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.")
}
}