Skip to content

VAMP iOS Integration Guide

AdGeneration edited this page Oct 17, 2019 · 47 revisions
  • 最新ReleaseNote
  • 対象OSバージョン:iOS 9.0以降
  • 対象Xcodeバージョン:Xcode 9.2以降

動作確認環境

ver.
Xcode 10.2

SDKインストール手順

開発環境としてXcodeを利用し、iOSアプリケーション開発に必要な環境がインストールされていることを前提としています。

1. 動画リワード用SDKのインストール

SDKを以下よりダウンロードしてください。
https://github.com/AdGeneration/VAMP-iOS-SDK/releases

アドネットワーク各社のSDKも併せてダウンロードしてください。

ダウンロードしたVAMP.embeddedframeworkとアドネットワーク各社のSDKをXcodeのプロジェクトナビゲータにドラッグ&ドロップします。
"Copy items if needed"にチェックがついていることを確認して、Finishを押します。
※ MoPubを使用される場合はMoPubSDKFramework.frameworkをGeneralタブのEmbedded Binariesに追加してください。

2. 接続先アドネットワークSDKのインストール

  • AppLovin
    • AppLovinSDK.framework
    • AppLovinSDKResources.bundle
  • AdMob
    • GoogleMobileAds.framework
    • GoogleAppMeasurement.framework
    • GoogleUtilities.framework
    • nanopb.framework
  • Facebook Audience Network
    • FBAudienceNetwork.framework
    • FBSDKCoreKit.framework
  • maio
    • Maio.framework
  • nend
    • NendAd.embeddedframework
  • Tapjoy
    • Tapjoy.embeddedframework
  • UnityAds
    • UnityAds.framework
  • Vungle
    • VungleSDK.framework
  • Mintegral
    • MTGSDK.framework
    • MTGSDKReward.framework
  • MoPub
    • MoPubSDKFramework.framework
  • TikTok Audience Network
    • BUAdSDK.framework
    • BUAdSDK.bundle

2-1. RTB配信Player

* ADGPlayer * ADGPlayer.framework

※ADGPlayerはVAMP SDK v1.0.3から追加されました。RTB配信のために必要となります。 ※ADGPlayerはVAMP SDK v2.0.0からVAMP SDKにソースコードがマージされたので不要となります。

3. その他frameworkの追加

Xcodeのプロジェクトナビゲータからプロジェクトファイルを選択し、
"TARGETS" > アプリケーションスキーマ > "General"タブ > "Linked Frameworks and Libraries" の+ボタンから、各SDKが使用するframeworkの追加をしてください。

"(Optional)"と記載しているものは、StatusをOptionalにしてください。

VAMP.framework

  • AdSupport.framework
  • AVFoundation.framework
  • CoreLocation.framework
  • CoreMedia.framework
  • CoreTelephony.framework
  • MediaPlayer.framework
  • SafariServices.framework
  • StoreKit.framework
  • SystemConfiguration.framework
  • UIKit.framework
  • WebKit.framework

上記frameworkに加え、以下の各接続先アドネットワークに必要なframeworkを追加してください。

AppLovinSDK.framework

  • AdSupport.framework
  • AVFoundation.framework
  • CoreGraphics.framework
  • CoreMedia.framework
  • CoreTelephony.framework
  • SafariServices.framework
  • StoreKit.framework
  • SystemConfiguration.framework
  • UIKit.framework
  • WebKit.framework
  • libz.tbd

FBAudienceNetwork.framework

※ FBAudienceNetwork.framework(v5.0.0以降)では以下のframeworkを追加しないとクラッシュします

  • CoreFoundation.framework(Optional)

Maio.framework

なし

NendAd.framework

  • AdSupport.framework
  • Security.framework
  • ImageIO.framework
  • AVFoundation.framework
  • CoreMedia.framework
  • SystemConfiguration.framework
  • WebKit.framework
  • CoreLocation.framework(Optional)
  • CoreMotion.framework(Optional)
  • CoreTelephony.framework(Optional)

Tapjoy.framework

  • AdSupport.framework
  • CFNetwork.framework
  • CoreData.framework
  • CoreGraphics.framework
  • CoreLocation.framework (SDK 11.9.0 以降ではオプション)
  • CoreMotion.framework
  • CoreTelephony.framework (古いバージョンのiOSと互換性が必要な場合はオプション)
  • Foundation.framework
  • ImageIO.framework (SDK 11.10 以降)
  • libc++
  • libsqlite3.0
  • libxml2
  • libz
  • MapKit.framework
  • MediaPlayer.framework
  • MessageUI.framework (SDK 11.9.0 以降では不要)
  • MobileCoreServices.framework
  • PassKit.framework(古いバージョンのiOSと互換性が必要な場合はオプション)
  • QuartzCore.framework
  • Security.framework
  • StoreKit.framework (古いバージョンのiOSと互換性が必要な場合はオプション)
  • SystemConfiguration.framework
  • UIKit.framework
  • WebKit.framework

UnityAds.framework

なし

VungleSDK.framework

  • AdSupport.framework
  • AudioToolbox.framework
  • AVFoundation.framework
  • CFNetwork.framework
  • CoreGraphics.framework
  • CoreMedia.framework
  • Foundation.framework
  • libz.dylib or libz.tbd
  • MediaPlayer.framework
  • QuartzCore.framework
  • StoreKit.framework
  • SystemConfiguration.framework
  • UIKit.framework
  • WebKit.framework
  • Foundation.framework

MTGSDK.framework

  • CoreGraphics.framework
  • Foundation.framework
  • UIKit.framework
  • libsqlite3.tbd or libsqlite3.dylib
  • libz.tbd or libz.dylib
  • AdSupport.framework
  • StoreKit.framewrok
  • QuartzCore.framework
  • CoreLocation.framework
  • CoreTelephony.framework
  • MobileCoreServices.framework
  • Accelerate.framework
  • AVFoundation.framework
  • WebKit.framework

MoPub.framework

  • AdSupport.framework
  • AVFoundation.framework
  • CoreGraphics.framework
  • CoreLocation.framework
  • CoreMedia.framework
  • CoreTelephony.framework
  • Foundation.framework
  • MediaPlayer.framework
  • MessageUI.framework
  • QuartzCore.framework
  • SafariServices.framework
  • StoreKit.framework
  • SystemConfiguration.framework
  • UIKit.framework
  • WebKit.framework

BUAdSDK.framework

  • StoreKit.framework
  • MobileCoreServices.framework
  • WebKit.framework
  • MediaPlayer.framework
  • CoreMedia.framework
  • AVFoundation.framework
  • CoreTelephony.framework
  • SystemConfiguration.framework
  • AdSupport.framework
  • CoreMotion.framework
  • libresolv.9.tbd
  • libc++.tbd
  • libz.tbd

Build Settingsの修正

Build SettiongsのLinking > Other Linker Flagsに"-ObjC"を指定してください。

AdMobの設定

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."

TikTok Audience Networkの設定

プロジェクトplistファイルでApp Transport Security Settingsを追加するには、まず左側の展開矢印をクリックし、さらに右側のプラスマークをクリックすると、自動的にAllow Arbitrary Loadsオプションが追加され、値がYESに変更されます。
TikTok Audience Network SDK APIは全HTTPSをサポートしていますが、広告主のクリエイティブが非HTTPSの場合もあります。

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

Swiftでの実装

プロジェクト直下に、以下の一行を追記したhファイルを作成します(例ではHeader.h)。

#import <VAMP/VAMP.h>

Build Settingsの「SwiftCompiler-Code Generation」内の「Objective-C Bridging Header」にHeader.hを設定します。

4-1. 広告表示の実装

VAMP.frameworkをインポートして、VAMPデリゲートをセットしてください。

import VAMP

class VideoSingleViewController:UIViewController, VAMPDelegate {

5-1. 実装方法

初期設定

    let pubId:String! = "*****" // 広告枠IDを設定してください

    override func viewDidLoad() {
        super.viewDidLoad()
        self.adReward = VAMP()       
        self.adReward.setPlacementId(self.pubId)
        self.adReward.delegate = self
        self.adReward.setRootViewController(self)
    }

AdGeneration管理画面で発行された広告枠IDを*****に設定します。

広告の読み込み

    self.adReward.load()

広告の読み込み完了時にはvampDidReceiveが通知されます。

表示(再生)

    self.adReward.show()
広告枠ID
    self.adReward.setPlacementId(self.pubId)

AdGenerationの管理画面から取得してください。

各メソッドの仕様やオプションについては、iOSリファレンスをご参照ください。

https://github.com/AdGeneration/VAMP-iOS-SDK/wiki/VAMP-iOS-API-Reference

Objective-Cでの実装

4-2. 広告表示の実装

VAMP.frameworkをインポートして、VAMPデリゲートをセットしてください。

#import <VAMP/VAMP.h>

@interface VideoSingleViewController : UIViewController<VAMPDelegate>

5-2. 実装方法

初期設定

  static NSString * const pubId = @"*****"; // 広告枠IDを設定してください

  - (void)viewDidLoad {
      [super viewDidLoad];

      self.adReward = [[VAMP alloc] init];
      [self.adReward setPlacementId:pubId];
      self.adReward.delegate = self;
      [self.adReward setRootViewController:self];
  }

AdGeneration管理画面で発行された広告枠IDを*****に設定します。

広告の読み込み

    [self.adReward load]

広告の読み込み完了時にはvampDidReceiveが通知されます。

表示(再生)

    [self.adReward show]
広告枠ID
    [self.adReward setPlacementId:pubId]

AdGenerationの管理画面から取得してください。

各メソッドの仕様やオプションについては、iOSリファレンスをご参照ください。

https://github.com/AdGeneration/VAMP-iOS-SDK/wiki/VAMP-iOS-API-Reference

デリゲート

広告表示準備完了

- (void)vampDidReceive:(NSString *)placementId adnwName:(NSString *)adnwName;

広告のロードが成功したタイミングで呼び出されます。

失敗

vampDidFailはv3.0.0からdeprecated

// 全アドネットワークにおいて広告が取得できなかったときに通知  
- (void)vamp:(VAMP *)vamp didFailToLoadWithError:(VAMPError *)error withPlacementId:(NSString *)placementId  

// 広告の表示に失敗したときに通知  
- (void)vamp:(VAMP *)vamp didFailToShowWithError:(VAMPError *)error withPlacementId:(NSString *)placementId

失敗した際に呼び出されます。

  • VAMPErrorCodeUnknown:不明なエラー(起動元アプリと接続できなくなった場合など)
  • VAMPErrorCodeServerError:サーバー間通信エラー
  • VAMPErrorCodeNoAdnetwork:配信可能なアドネットワークがない
  • VAMPErrorCodeNeedConnection:通信不通
  • VAMPErrorCodeMediationTimeout:タイムアウト
  • VAMPErrorCodeUserCancel:ユーザ都合の途中終了
  • VAMPErrorCodeNoAdStock:広告在庫がない or アドネットワーク側のエラー
  • VAMPErrorCodeAdnetworkError:アドネットワーク側のエラー
  • VAMPErrorCodeAdnetworkError:アドネットワーク側のエラー
  • VAMPErrorCodeNotSupportedOsVersion:非対応OSバージョン
  • VAMPErrorCodeInvalidParameter:パラメーターが不正
  • VAMPErrorCodeFrequencyCapped:キャップにかかっている

広告を閉じる

- (void)vampDidClose:(NSString *)placementId adnwName:(NSString *)adnwName;

広告を閉じたタイミングで呼び出されます。

インセンティブ付与通知

- (void)vampDidComplete:(NSString *)placementId adnwName:(NSString *)adnwName;

動画再生完了時、または広告が閉じられた際にインセンティブ付与が可能な状態であれば呼び出されます。
動画の再生を途中でキャンセルした場合は、本デリゲートは呼び出されません。

アドネットワーク毎の広告取得 開始

- (void)vampLoadStart:(NSString *)placementId adnwName:(NSString *)adnwName;

アドネットワーク毎の広告取得が開始されたときに通知します。

アドネットワーク毎の広告取得 結果

- (void)vampLoadResult:(NSString *)placementId success:(BOOL)success
adnwName:(NSString *)adnwName message:(NSString *)message;

アドネットワーク毎の広告取得結果を、success,failedのどちらの場合でも通知します。
失敗しても次のアドネットワークがある場合、広告取得を実行します。
最終的に全てのアドネットワークの広告在庫がない場合は、
vampDidFailedToLoadのNO_ADSTOCKが通知されるため、ここで処理を止めないでください。
この通知をもとにshowしないようご注意ください。showする判定は、onReceiveを受け取ったタイミングで判断ください。

期限切れ

- (void)vampDidExpired:(NSString *)placementId;

vampDidReceiveを受けてからの有効期限(55分)が切れた際に通知されます。
広告を表示するためには、再度ロードを行う必要があります。

6. テストモード

テストモードをONにすることで、テスト広告による表示確認が可能です。
(アプリをリリースするときは必ず本コードは削除してください)

Objective-C

[VAMP setTestMode:YES];

Swift

VAMP.setTestMode(true);

7. デバッグモード

デバッグモードをONにすることで、詳細なログが出力されます。
(アプリをリリースするときは必ず本コードは削除してください)

Objective-C

[VAMP setDebugMode:YES];

Swift

VAMP.setDebugMode(true)

8. 注意事項

  • 通信状況や動画広告によってはロードに時間がかかる場合があります。特に各アドネットワークの初回のロードは時間がかかる傾向にありますのでご注意ください。
  • 自社広告・純広告でLINEスタンプ、LINE着せかえ機能を使う場合は、info.plistに以下を追記する必要があります。
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>line</string>
</array>

9. FAQ

その他不明点や、各アドネットワークの最新の対応OSバージョンは下記からご確認ください。
https://ad-generation.jp/support/help/faqs/rewardedvideoad

You can’t perform that action at this time.