VAMP iOS Integration Guide - AdGeneration/VAMP-iOS-SDK GitHub Wiki
- Integration Guide
- SDKインストール手順
- 最新ReleaseNote
- 対象OSバージョン:iOS 9.0以降
- 対象Xcodeバージョン:Xcode 9.2以降
ver. | |
---|---|
Xcode | 12.0 |
開発環境としてXcodeを利用し、iOSアプリケーション開発に必要な環境がインストールされていることを前提としています。
SDKを以下よりダウンロードしてください。
https://github.com/AdGeneration/VAMP-iOS-SDK/releases
※アドネットワーク各社のSDKも併せてダウンロードしてください。
※AdMob
を使用される場合はVAMP_iOS_v[VERSION].zip
、使用されない場合はVAMP_iOS_v[VERSION]_no_admob.zip
をご使用ください。
ダウンロードしたVAMP.embeddedframework
とアドネットワーク各社のSDKをXcodeのプロジェクトナビゲータにドラッグ&ドロップします。
"Copy items if needed"にチェックがついていることを確認して、Finishを押します。
VAMP以外に以下のアドネットワークはCocoaPodsでのインストールがサポートされていないため、手動でインストールする必要があります。
- LINEAds (FIVE)
- FiveAd.xcframework
プロジェクト([プロジェクト名].xcodeproj)のあるディレクトリで以下のコマンドを実行します。
$ pod init
このコマンドでPodfileが生成されます。
各アドネットワークSDKのバージョンについてはリリースノートをご確認ください。
- AppLovin
pod 'AppLovinSDK', '[VERSION]'
- AdMob
pod 'Google-Mobile-Ads-SDK', '[VERSION]'
- Facebook Audience Network
pod 'FBAudienceNetwork', '[VERSION]'
- maio
pod 'MaioSDK', '[VERSION]'
- nend
pod 'NendSDK_iOS', '[VERSION]'
- Tapjoy
pod 'TapjoySDK', '[VERSION]'
- UnityAds
pod 'UnityAds', '[VERSION]'
- Pangle (TikTok Audience Network)
pod 'Bytedance-UnionAD', '[VERSION]'
-
初回のインストール
$ pod install
-
Podsファイルの更新(ライブラリの追加、更新)
$ pod update
podのコマンドを実行したディレクトリ配下に[プロジェクト名].xcworkspaceというファイルが生成されます。 [プロジェクト名].xcodeprojを開くのではなく、[プロジェクト名].xcworkspaceというファイルを開いて実行します。
Xcodeのプロジェクトナビゲータからプロジェクトファイルを選択し、
"TARGETS" > アプリケーションスキーマ > "General"タブ > "Linked Frameworks and Libraries"
の+ボタンから、各SDKが使用するframeworkの追加をしてください。
"(Optional)"と記載しているものは、StatusをOptionalにしてください。
- AdSupport.framework
- AVFoundation.framework
- CoreMedia.framework
- CoreTelephony.framework
- MediaPlayer.framework
- SafariServices.framework
- StoreKit.framework
- SystemConfiguration.framework
- UIKit.framework
- WebKit.framework
上記frameworkに加え、以下の各接続先アドネットワークに必要なframeworkを追加してください。
- AdSupport.framework
- Audiotoolbox.framework
- AVFoundation.framework
- CoreGraphics.framework
- CoreMedia.framework
- CoreMotion.framework
- CoreTelephony.framework
- Foundation.framework
- MessageUI.framework
- SafariServices.framework
- StoreKit.framework
- SystemConfiguration.framework
- SafariServices.framework
- UIKit.framework
- WebKit.framework
- libz.tbd
なし
- Accelerate.framework
- Accounts.framework
- CoreLocation.framework
- Social.framework
- Security.framework
- QuartzCore.framework
- CoreGraphics.framework
- UIKit.framework
- Foundation.framework
- AudioToolbox.framework
- AdSupport.framework
- AVFoundation.framework
- CoreMedia.framework
- Foundation.framework
- MobileCoreServices.framework
- SystemConfiguration.framework
- StoreKit.framework
- UIKit.framework
- WebKit.framework
- libz.tbd
- AdSupport.framework
- Security.framework
- ImageIO.framework
- AVFoundation.framework
- CoreMedia.framework
- SystemConfiguration.framework
- WebKit.framework
- AVKit.framework
- StoreKit.framework
- libxml2.tbd
- AdSupport.framework
- CFNetwork.framework
- CoreGraphics.framework
- CoreTelephony.framework (古いバージョンのiOSと互換性が必要な場合はオプション)
- Foundation.framework
- ImageIO.framework (SDK 11.10 以降)
- libc++
- libz
- MediaPlayer.framework
- MobileCoreServices.framework
- PassKit.framework(古いバージョンのiOSと互換性が必要な場合はオプション)
- QuartzCore.framework
- Security.framework
- StoreKit.framework (古いバージョンのiOSと互換性が必要な場合はオプション)
- SystemConfiguration.framework
- UIKit.framework
- WebKit.framework
なし
- StoreKit.framework
- MobileCoreServices.framework
- WebKit.framework
- MediaPlayer.framework
- CoreMedia.framework
- AVFoundation.framework
- CoreTelephony.framework
- SystemConfiguration.framework
- AdSupport.framework
- CoreMotion.framework
- Accelerate.framework
- libresolv.9.tbd
- libc++.tbd
- libz.tbd
- libsqlite3.tbd
- libbz2.tbd
- libxml2.tbd
- libiconv.tbd
- libc++abi.tbd (newly required from sdk v3.5.0.0)
- Security.framework
- Detailed Steps:
- Add the ImageIO.framework if the above dependency library is still reporting errors.
- AdSupport.framework
- AppTrackingTransparency.framework
- AVFoundation.framework
- CoreMedia.framework
- CoreTelephony.framework
- SystemConfiguration.framework
- AudioToolbox.framework
- WebKit.framework
- StoreKit.framework
Build SettingsのLinking > Other Linker Flagsに"-ObjC"を指定してください。
iOS14でデフォルトのブラウザAppをChromeに切り替えた際に正しく遷移できなくなるケースがあるため、info.plistに↓追記必須となります
<key>LSApplicationQueriesSchemes</key>
<array>
<string>http</string>
<string>https</string>
</array>
AdMob v7.42.0からはAdMobのapp IDをInfo.plistに追加する必要があります。
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>
※上記のIDはTest IDなので実際のapp IDを使用してください。
もし追加していない場合は以下のメッセージがログに出力され、クラッシュします。
"The Google Mobile Ads SDK was initialized incorrectly."
※使用されない場合はVAMP_iOS_v[VERSION]_no_admob.zip
をご使用ください。
プロジェクトplistファイルでApp Transport Security Settingsを追加するには、まず左側の展開矢印をクリックし、さらに右側のプラスマークをクリックすると、自動的にAllow Arbitrary Loadsオプションが追加され、値がYESに変更されます。
Pangle SDK APIは全HTTPSをサポートしていますが、広告主のクリエイティブが非HTTPSの場合もあります。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
プロジェクト直下に、以下の一行を追記したhファイルを作成します(例ではHeader.h)。
#import <VAMP/VAMP.h>
Build Settingsの「SwiftCompiler-Code Generation」内の「Objective-C Bridging Header」にHeader.hを設定します。
VAMP.frameworkをインポートして、VAMPデリゲートをセットしてください。
import VAMP
class VideoSingleViewController:UIViewController, VAMPDelegate {
let pubId:String! = "*****" // 広告枠IDを設定してください
override func viewDidLoad() {
super.viewDidLoad()
self.adReward = VAMP()
self.adReward.setPlacementId(self.pubId)
self.adReward.delegate = self
}
AdGeneration管理画面で発行された広告枠IDを*****に設定します。
self.adReward.load()
広告の読み込み完了時にはvampDidReceiveが通知されます。
self.adReward.show(from: self)
self.adReward.setPlacementId(self.pubId)
AdGenerationの管理画面から取得してください。
各メソッドの仕様やオプションについては、iOSリファレンスをご参照ください。
https://github.com/AdGeneration/VAMP-iOS-SDK/wiki/VAMP-iOS-API-Reference
VAMP.frameworkをインポートして、VAMPデリゲートをセットしてください。
#import <VAMP/VAMP.h>
@interface VideoSingleViewController : UIViewController<VAMPDelegate>
static NSString * const pubId = @"*****"; // 広告枠IDを設定してください
- (void)viewDidLoad {
[super viewDidLoad];
self.adReward = [[VAMP alloc] init];
[self.adReward setPlacementId:pubId];
self.adReward.delegate = self;
}
AdGeneration管理画面で発行された広告枠IDを*****に設定します。
[self.adReward load];
広告の読み込み完了時にはvampDidReceiveが通知されます。
[self.adReward showFromViewController:self];
[self.adReward setPlacementId:pubId];
AdGenerationの管理画面から取得してください。
各メソッドの仕様やオプションについては、iOSリファレンスをご参照ください。
https://github.com/AdGeneration/VAMP-iOS-SDK/wiki/VAMP-iOS-API-Reference
- (void)vamp:(VAMP *)vamp didReceiveAd:(VAMPAd *)ad;
広告のロードが成功したタイミングで呼び出されます。
※v3.1.6からdidReceiveAdは非推奨です。
vampDidFailはv3.0.0からdeprecated
// 全アドネットワークにおいて広告が取得できなかったときに通知
- (void)vamp:(VAMP *)vamp didFailToLoadWithError:(VAMPError *)error withAd:(VAMPAd *)ad;
// 広告の表示に失敗したときに通知
- (void)vamp:(VAMP *)vamp didFailToShowWithError:(VAMPError *)error withAd:(VAMPAd *)ad;
失敗した際に呼び出されます。
- VAMPErrorCodeUnknown:不明なエラー(起動元アプリと接続できなくなった場合など)
- VAMPErrorCodeServerError:サーバー間通信エラー
- VAMPErrorCodeNoAdnetwork:配信可能なアドネットワークがない
- VAMPErrorCodeNeedConnection:通信不通
- VAMPErrorCodeMediationTimeout:タイムアウト
- VAMPErrorCodeUserCancel:ユーザ都合の途中終了
- VAMPErrorCodeNoAdStock:広告在庫がない or アドネットワーク側のエラー
- VAMPErrorCodeAdnetworkError:アドネットワーク側のエラー
- VAMPErrorCodeAdnetworkError:アドネットワーク側のエラー
- VAMPErrorCodeNotSupportedOsVersion:非対応OSバージョン
- VAMPErrorCodeInvalidParameter:パラメーターが不正
- VAMPErrorCodeFrequencyCapped:キャップにかかっている
- (void)vamp:(VAMP *)vamp didCloseAd:(VAMPAd *)ad adClicked:(BOOL)adClicked;
広告を閉じたタイミングで呼び出されます。
- (void)vamp:(VAMP *)vamp didCompleteAd:(VAMPAd *)ad;
動画再生完了時、または広告が閉じられた際にインセンティブ付与が可能な状態であれば呼び出されます。
動画の再生を途中でキャンセルした場合は、本デリゲートは呼び出されません。
- (void)vamp:(VAMP *)vamp loadStartAd:(VAMPAd *)ad;
アドネットワーク毎の広告取得が開始されたときに通知します。
- (void)vamp:(VAMP *)vamp loadResultAd:(VAMPAd *)ad success:(BOOL)success message:(nullable NSString *)message;
アドネットワーク毎の広告取得結果を、success,failedのどちらの場合でも通知します。
失敗しても次のアドネットワークがある場合、広告取得を実行します。
最終的に全てのアドネットワークの広告在庫がない場合は、
vampDidFailedToLoadのNO_ADSTOCKが通知されるため、ここで処理を止めないでください。
この通知をもとにshowしないようご注意ください。showする判定は、onReceiveを受け取ったタイミングで判断ください。
- (void)vamp:(VAMP *)vamp didExpireWithPlacementId:(NSString *)placementId;
didReceiveAdを受けてからの有効期限(55分)が切れた際に通知されます。
広告を表示するためには、再度ロードを行う必要があります。
テストモードをONにすることで、テスト広告による表示確認が可能です。
(アプリをリリースするときは必ず本コードは削除してください)
[VAMP setTestMode:YES];
VAMP.setTestMode(true);
デバッグモードをONにすることで、詳細なログが出力されます。
(アプリをリリースするときは必ず本コードは削除してください)
[VAMP setDebugMode:YES];
VAMP.setDebugMode(true)
- 通信状況や動画広告によってはロードに時間がかかる場合があります。特に各アドネットワークの初回のロードは時間がかかる傾向にありますのでご注意ください。
- 自社広告・純広告でLINEスタンプ、LINE着せかえ機能を使う場合は、info.plistに以下を追記する必要があります。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>line</string>
</array>
- iOS14でデフォルトのブラウザAppをChromeに切り替えた際に正しく遷移できなくなるケースがあります。以下をinfo.plistに追記することで回避することができます。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>http</string>
<string>https</string>
</array>
その他不明点や、各アドネットワークの最新の対応OSバージョンは下記からご確認ください。
https://ad-generation.jp/support/adg-help/ad-type/rewarded-video-ad