-
Notifications
You must be signed in to change notification settings - Fork 16
Native_Ad_iOS
開発環境にXcodeを使用することを前提とします。
iOS 7.0以降
- SDKをダウンロードします
↓ - 例を参考に広告表示の実装を行います
iOS SDK Getting Started / バナー広告からご確認ください。
loadRequest
を行う前に、ネイティブ広告オブジェクトをdelegateメソッドで取得するためのsetUsePartsResponse
の設定を行います。
self.adg = [[ADGManagerViewController alloc] initWithAdParams:adgparam adView:_adView]; // バナー広告と併用する場合は、adViewに配置するviewを指定してください
self.adg.delegate = self;
[self.adg setFillerRetry:NO];
[self.adg setUsePartsResponse:YES]; // ネイティブ広告オブジェクトを取得する
[self.adg loadRequest];
ネイティブ広告オブジェクトが取得できた場合、delegateメソッドの以下が呼び出されます。
- (void)ADGManagerViewControllerReceiveAd:(ADGManagerViewController *)adgManagerViewController
mediationNativeAd:(id)mediationNativeAd
mediationNativeAd
からネイティブ広告オブジェクトが取得できます。
ネイティブ広告オブジェクトはADGNativeAd
クラスです。
参照するために、該当クラスにimportを追加してください。
#import <ADG/ADGNativeAd.h>
id型からADGNativeAd
へキャストし、クラス判定を行ってからアクセスしてください。
ADGNativeAd
からネイティブ広告パーツを取得するパラメータは以下の通りです。
-
ADGNativeAd.title.text
: タイトル -
ADGNativeAd.mainImage.url
: メイン画像(長方形画像)URL -
ADGNativeAd.iconImage.url
: アイコン画像(正方形画像)URL -
ADGNativeAd.desc.value
: リード文 -
ADGNativeAd.ctatext.value
: CTA(Call to action)のテキスト -
ADGNativeAd.sponsored.value
: 広告主
アプリに応じてカスタマイズください(画像ロード処理の非同期化など)。
作成される広告イメージ
- (void)ADGManagerViewControllerReceiveAd:(ADGManagerViewController *)adgManagerViewController mediationNativeAd:(id)mediationNativeAd {
if ([mediationNativeAd isKindOfClass:[ADGNativeAd class]]) {
ADGNativeAd *nativeAd = (ADGNativeAd *)mediationNativeAd;
// インフォメーションアイコンのデフォルト表示OFF
// デフォルト表示しない場合は必ずADGInformationIconViewの設置を実装してください
adgManagerViewController.informationIconViewDefault = false;
UIView *nativeAdView = [self createAdView:nativeAd];
// クリックやローテーションの制御に必要なため必ず記述してください
[_adg delegateViewManagement:nativeAdView nativeAd:nativeAd];
[_adView addSubview:nativeAdView];
}
}
- (UIView *)createAdView:(ADGNativeAd *)nativeAd {
// アイコン画像
UIImageView *iconImageView = [[UIImageView alloc] initWithFrame:CGRectMake(4, 4, 30, 30)];
if (nativeAd.iconImage.url.length > 0) {
NSURL *iconImageUrl = [NSURL URLWithString:nativeAd.iconImage.url];
NSData *iconImageData = [NSData dataWithContentsOfURL:iconImageUrl];
iconImageView.image = [UIImage imageWithData:iconImageData];
iconImageView.contentMode = UIViewContentModeScaleAspectFit;
}
// タイトル
UILabel *titleLbl = [[UILabel alloc] initWithFrame:CGRectMake(38, 4, 258, 15)];
if (nativeAd.title.text.length > 0) {
titleLbl.numberOfLines = 1;
titleLbl.font = [titleLbl.font fontWithSize:13];
titleLbl.text = nativeAd.title.text;
}
// 広告マーク
UILabel *adTextLabel = [[UILabel alloc] initWithFrame:CGRectMake(40, 20, 28, 14)];
adTextLabel.textColor = [UIColor lightGrayColor];
adTextLabel.font = [adTextLabel.font fontWithSize:11];
adTextLabel.text = @"広告";
// リード文
UILabel *descriptionLbl = [[UILabel alloc] initWithFrame:CGRectMake(4, 30, 296, 40)];
if (nativeAd.desc.value.length > 0) {
descriptionLbl.numberOfLines = 2;
descriptionLbl.font = [descriptionLbl.font fontWithSize:11];
descriptionLbl.text = nativeAd.desc.value;
descriptionLbl.textColor = [UIColor lightGrayColor];
}
// メイン画像
UIImageView *mainImageView = [[UIImageView alloc] initWithFrame:CGRectMake(4, 64, 292, 156)];
if (nativeAd.mainImage.url.length > 0) {
NSURL *mainUrl = [NSURL URLWithString:nativeAd.mainImage.url];
NSData *mainImageData = [NSData dataWithContentsOfURL:mainUrl];
mainImageView.image = [UIImage imageWithData:mainImageData];
mainImageView.contentMode = UIViewContentModeScaleAspectFit;
mainImageView.clipsToBounds = YES;
}
// インフォメーションアイコン
ADGInformationIconView *infoIconView = [[ADGInformationIconView alloc] initWithNativeAd:nativeAd];
if (infoIconView) {
[mainImageView addSubview:infoIconView];
[infoIconView updateFrameFromSuperview:UIRectCornerTopRight];
}
// 広告主
UILabel *sponsoredLbl = [[UILabel alloc] initWithFrame:CGRectMake(4, 228, 150, 20)];
sponsoredLbl.numberOfLines = 1;
sponsoredLbl.font = [sponsoredLbl.font fontWithSize:10];
sponsoredLbl.textColor = [UIColor colorWithRed:0.7 green:0.7 blue:0.7 alpha:1.0];
if (nativeAd.sponsored.value.length > 0) {
sponsoredLbl.text = [NSString stringWithFormat:@"sponsored by %@", nativeAd.sponsored.value];
} else {
sponsoredLbl.text = @"sponsored";
}
// CTA
UIButton *actionBtn = [[UIButton alloc] initWithFrame:CGRectMake(178, 223, 114, 25)];
if (nativeAd.ctatext.value.length > 0) {
[actionBtn setTitle:nativeAd.ctatext.value forState:UIControlStateNormal];
[actionBtn setTitleColor:[UIColor colorWithRed:0.12 green:0.56 blue:1.00 alpha:1.0]
forState:UIControlStateNormal];
[actionBtn.titleLabel setFont:[UIFont boldSystemFontOfSize:14]];
actionBtn.backgroundColor = [UIColor whiteColor];
actionBtn.layer.borderWidth = 1.0f;
actionBtn.layer.borderColor = [[UIColor colorWithRed:0.12 green:0.56 blue:1.00 alpha:1.0] CGColor];
actionBtn.layer.cornerRadius = 5.0f;
actionBtn.titleEdgeInsets = UIEdgeInsetsMake(1.0f, 1.0f, 1.0f, 1.0f);
actionBtn.titleLabel.adjustsFontSizeToFitWidth = YES;
[nativeAd setTapEvent:actionBtn]; // ボタンへのタップ反応追加
}
UIView *nativeAdView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 300, 250)];
[nativeAdView addSubview:iconImageView];
[nativeAdView addSubview:titleLbl];
[nativeAdView addSubview:adTextLabel];
[nativeAdView addSubview:mainImageView];
[nativeAdView addSubview:descriptionLbl];
[nativeAdView addSubview:sponsoredLbl];
[nativeAdView addSubview:actionBtn];
return nativeAdView;
}
- 広告破棄のタイミングにて、delegateViewManagementにセットされたUIViewインスタンスに対してremoveFromSuperViewが呼び出されます。
- 広告の破棄は画面のdealloc等、広告の表示が終わるタイミングで行ってください。
- テストではタップの確認も行ってください。
- ADGManagerViewControllerクラスは1つの広告枠に対して1つのインスタンスを生成してください。
- 広告枠の設定によっては各ネイティブ広告オブジェクトのパラメータの値がnilになる場合があります。 例えば、GunosyAdsではCTA取得できません。画像の縦横サイズも含め、すべてがoptionalな値です。画像の縦横サイズも含め、すべてがoptionalな値です。
- PR表記をつける等して広告であることを示してください。
- 画像を歪めることはしないでください。
- レスポンスにSponsoredがある場合は表示してください。
- Facebook Audience Networkも併用配信したい場合は、別途SDK連携が必要になります。Facebook Audience Network ネイティブ広告 SDK連携 iOS
※ 2016/12/8(v2.4.2)より必須項目となりました
v2.4.2より、ターゲティングを行っている広告の場合にはデフォルトでインフォメーションアイコン(オプトアウトリンク)が表示されるようになります(ターゲティングを行っていない広告の場合は表示されません)。
インフォメーションアイコンはタップすることで、DSP事業者が指定したオプトアウトWebサイトページへ遷移します。
オプトアウトリンクはユーザーが広告のターゲティングをオプトアウト(拒否)することにより、ユーザーに関する情報の関連付けを防ぐことを可能とし、設置することで配信できるDSP事業者が増加します。
表示される場所は、delegateViewManagement:nativeAd:
で指定したViewの右上に設置されます。
デフォルトの表示位置から変更する場合は、ADGManagerViewController.informationIconViewDefault
を設定し、ADGInformationIconView
を生成してください。
ターゲティングを行っていない広告の場合は、ADGInformationIconView
を生成してもアイコンは表示されません。
テスト広告の表示に使用するAd Genrationの広告枠IDです。
このIDをセットしたままアプリをリリースしないようご注意ください。
ID | 説明 |
---|---|
48635 | RTB/Gunosy/自社広告のテスト広告 |