モバイルプロパティにサードパーティSDKを統合する場合、その統合に関する責任はすべて開発者自身に帰属します。 開発者およびサードパーティSDKプロバイダーは、ユーザーまたはデバイスに基づくプライバシーの選択やフラグに準拠したデータ処理および取り扱いを確実に行う必要があります。
MAX mediationアダプターは、以下の3つの方法のいずれかでアプリにダウンロードして統合できます。
AppLovinSDKを含むアダプターの依存関係を自動的に解決します。
アダプターの名前は変更しないでください。 変更すると、MAX SDKがアダプターを認識できなくなり、広告がロードされなくなります。
統合したいメディエーション対象の広告ネットワークを以下のチェックボックスで選択してください。 選択すると、それらのネットワークに特化した手順がこのページに表示されます。 また、このページはCocoaPodsスクリプトをカスタマイズして表示します。 カスタマイズされた以下のCocoaPodsスクリプトをPodfileにコピーしてください。
# Settings
use_frameworks!
inhibit_all_warnings!
# Pods
target 'YOUR_PROJECT_NAME' do
pod 'AmazonPublisherServicesSDK'
pod 'AppLovinMediationAmazonAdMarketplaceAdapter'
pod 'AppLovinMediationBidMachineAdapter'
pod 'AppLovinMediationBigoAdsAdapter'
pod 'AppLovinMediationChartboostAdapter'
pod 'AppLovinMediationCSJAdapter'
pod 'AppLovinMediationFyberAdapter'
pod 'AppLovinMediationGoogleAdManagerAdapter'
pod 'AppLovinMediationGoogleAdapter'
pod 'AppLovinMediationHyprMXAdapter'
pod 'AppLovinMediationInMobiAdapter'
pod 'AppLovinMediationIronSourceAdapter'
pod 'AppLovinMediationVungleAdapter'
pod 'AppLovinMediationLineAdapter'
pod 'AppLovinMediationMaioAdapter'
pod 'AppLovinMediationFacebookAdapter'
pod 'AppLovinMediationMintegralAdapter'
pod 'AppLovinMediationMobileFuseAdapter'
pod 'AppLovinMediationMolocoAdapter'
pod 'AppLovinMediationOguryPresageAdapter'
pod 'AppLovinMediationByteDanceAdapter'
pod 'AppLovinMediationPubMaticAdapter'
pod 'AppLovinMediationSmaatoAdapter'
pod 'AppLovinMediationTencentGDTAdapter'
pod 'AppLovinMediationUnityAdsAdapter'
pod 'AppLovinMediationVerveAdapter'
pod 'AppLovinMediationMyTargetAdapter'
pod 'AppLovinMediationYandexAdapter'
pod 'AppLovinMediationYSONetworkAdapter'
endPangle iOSアダプターバージョン4.9.1.0.0以降、Pangleは中国本土では利用できなくなりました。 中国本土のトラフィックを収益化するには、CSJネットワークを設定し、CSJアダプターを追加してください。 中国本土を除くグローバルトラフィックについては、引き続きPangleを使用して収益化できます。
12.2未満のiOSバージョンでSwiftをサポートするには:

windowプロパティApp Delegateファイルのwindowプロパティを削除しないでください。
削除すると、InMobiのSDKがクラッシュする可能性があります。
@property (nonatomic, strong) UIWindow *window;
var window: UIWindow?
Limited Data Use (LDU) モードを有効にしたくない場合は、SetDataProcessingOptions()に空の配列を渡します。
#import <FBAudienceNetwork/FBAudienceNetwork.h>
⋮
[FBAdSettings setDataProcessingOptions: @[]];
⋮
// MAX SDKを初期化する
import FBAudienceNetwork
⋮
FBAdSettings.setDataProcessingOptions([])
⋮
// MAX SDKを初期化する
ユーザーに対してLDUを有効にし、ユーザーの地域を指定するには、以下のようにSetDataProcessingOptions()を呼び出します。
#import <FBAudienceNetwork/FBAudienceNetwork.h>
⋮
[FBAdSettings setDataProcessingOptions: @[@"LDU"] country: «country» state: «state»];
⋮
// MAX SDKを初期化する
import FBAudienceNetwork
⋮
FBAdSettings.setDataProcessingOptions(["LDU"], country: «country», state: «state»)
⋮
// MAX SDKを初期化する
CMPとしてGoogle UMPを使用している場合、ユーザーがMetaに同意したかどうかを判断できます。 そのためには、以下のようなコードを使用します。
NSNumber *hasMetaConsent = [ALPrivacySettings additionalConsentStatusForIdentifier: 89];
if ( hasMetaConsent )
{
BOOL consentGiven = hasMetaConsent.boolValue;
// それに応じてMeta Data Processing Optionsを設定します。
}
else
{
// AC文字列がディスク上に存在しません。ユーザーがCMPフローを完了した後に同意ステータスを確認してください。
}
let hasMetaConsent = ALPrivacySetting.additionalConsentStatus(forIdentifier: 89)
if let consentGiven = hasMetaConsent?.boolValue
{
// それに応じてMeta Data Processing Optionsを設定します。
}
else
{
// AC文字列がディスク上に存在しません。ユーザーがCMPフローを完了した後に同意ステータスを確認してください。
}
カリフォルニア州におけるMeta Audience Networkの「Limited Data Use」フラグの実装方法については、Meta for Developersのドキュメントを参照してください。
Audience Network SDK 6.2.1では、以下の重要な要件が導入されています。
setAdvertiserTrackingEnabledフラグを実装します。
これにより、パーソナライズされた広告を配信するためにデータを使用できるかどうかがMetaに通知されます。Info.plistに追加します。
統合手順については、SKAdNetworkドキュメントを参照してください。[sdk initializeSdkWithCompletionHandler:^(ALSdkConfiguration *sdkConfiguration)
{
if ( @available(iOS 14.5, *) )
{
// App Tracking Transparencyのトラッキング許可は `sdkConfiguration.appTrackingTransparencyStatus` を介して確認できます。
// 1. ここでMeta ATEフラグを設定し、その後:
}
// 2. 広告をロードする
}];
sdk.initializeSdk { (sdkConfiguration: ALSdkConfiguration) in
if #available(iOS 14.5, *)
{
// App Tracking Transparencyのトラッキング許可は `sdkConfiguration.appTrackingTransparencyStatus` を介して確認できます。
// 1. ここでMeta ATEフラグを設定し、その後:
}
// 2. 広告をロードする
}
Google AdSense、AdManager、またはAdMobを使用する開発者およびパブリッシャーは、Googleが認定した同意管理プラットフォーム (CMP) を使用する必要があります。 欧州経済領域 (EEA) または英国のユーザーに広告を配信する場合、CMPはIABのTransparency and Consent Frameworkと統合されている必要があります。 詳細については、プライバシー:「TCF v2同意」を参照してください。
アプリのInfo.plistにGADApplicationIdentifierキーを追加します。
このキーに、Google biddingおよびGoogle AdMob / Google Ad ManagerのアプリIDのString値を設定します。

Amazon Publisher Services SDKは、MAX SDKの外部で初期化する必要があります。
[[DTBAds sharedInstance] setAppKey: appId];
[DTBAds sharedInstance].mraidCustomVersions = @[@"1.0", @"2.0", @"3.0"];
[DTBAds sharedInstance].mraidPolicy = CUSTOM_MRAID;
レポートの不一致を避けるために、最新のAmazon Publisher Servicesアダプターバージョンを使用してください。
Amazon広告をMAXに統合するには、最初にAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoをMAAdViewのインスタンスに渡します。
これは、-[MAAdView setLocalExtraParameterForKey:value:]を呼び出すことで行えます。
自動更新されるbanner広告の場合、広告のロードは1回だけで十分です。
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *amazonAdSlotId;
MAAdFormat *adFormat;
if ( UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad )
{
amazonAdSlotId = @"«Amazon-leader-slot-ID»";
adFormat = MAAdFormat.leader;
}
else
{
amazonAdSlotId = @"«Amazon-banner-slot-ID»";
adFormat = MAAdFormat.banner;
}
CGSize rawSize = adFormat.size;
DTBAdSize *size = [[DTBAdSize alloc] initBannerAdSizeWithWidth: rawSize.width
height: rawSize.height
andSlotUUID: amazonAdSlotId];
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
[adLoader setAdSizes: @[size]];
[adLoader loadAd: self];
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'adView' は MAAdView のインスタンスです
[self.adView setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[self.adView loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'adView' は MAAdView のインスタンスです
[self.adView setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[self.adView loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
let amazonAdSlotId: String
let adFormat: MAAdFormat
if UIDevice.current.userInterfaceIdiom == .pad
{
amazonAdSlotId = "«Amazon-leader-slot-ID»"
adFormat = MAAdFormat.leader
}
else
{
amazonAdSlotId = "«Amazon-banner-slot-ID»"
adFormat = MAAdFormat.banner
}
let rawSize = adFormat.size
let size = DTBAdSize(bannerAdSizeWithWidth: Int(rawSize.width),
height: Int(rawSize.height),
andSlotUUID: amazonAdSlotId)!
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([size])
adLoader.loadAd(self)
}
}
extension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
adView.loadAd()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_error", value:dtbAdErrorInfo)
adView.loadAd()
}
}
import AppLovinSDK
import DTBiOSSDK
struct ExampleSwiftUIWrapper: UIViewRepresentable
{
func makeUIView(context: Context) -> MAAdView
{
let adView = MAAdView(adUnitIdentifier: "«ad-unit-ID»")
adView.delegate = context.coordinator
let amazonAdSlotId: String
let adFormat: MAAdFormat
if UIDevice.current.userInterfaceIdiom == .pad
{
amazonAdSlotId = "«Amazon-leader-slot-ID»"
adFormat = MAAdFormat.leader
}
else
{
amazonAdSlotId = "«Amazon-banner-slot-ID»"
adFormat = MAAdFormat.banner
}
let rawSize = adFormat.size
let size = DTBAdSize(bannerAdSizeWithWidth: Int(rawSize.width),
height: Int(rawSize.height),
andSlotUUID: amazonAdSlotId)!
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([size])
adLoader.loadAd(adView)
return adView
}
}
extension ExampleSwiftUIWrapper
{
class Coordinator: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
adView.loadAd()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
adView.loadAd()
}
}
}
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
- (void)viewDidLoad
{
[super viewDidLoad];
NSString *amazonAdSlotId = @"«Amazon-MREC-slot-ID»";
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
[adLoader setAdSizes: [[DTBAdSize alloc] initBannerAdSizeWithWidth: 300
height: 250
andSlotUUID: amazonAdSlotId]];
[adLoader loadAd: self];
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'adView' は MAAdView のインスタンスです
[self.adView setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[self.adView loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'adView' は MAAdView のインスタンスです
[self.adView setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[self.adView loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
override func viewDidLoad()
{
super.viewDidLoad()
let amazonAdSlotId: String = "«Amazon-MREC-slot-ID»"
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([DTBAdSize(bannerAdSizeWithWidth: 300,
height: 250,
andSlotUUID: amazonAdSlotId)!])
adLoader.loadAd(self)
}
}
extension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
adView.loadAd()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_error", value:dtbAdErrorInfo)
adView.loadAd()
}
}
import AppLovinSDK
import DTBiOSSDK
struct ExampleSwiftUIWrapper: UIViewRepresentable
{
func makeUIView(context: Context) -> MAAdView
{
let adView = MAAdView(adUnitIdentifier: "«ad-unit-ID»", adFormat: MAAdFormat.mrec)
adView.delegate = context.coordinator
let amazonAdSlotId: String = "«Amazon-MREC-slot-ID»"
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([DTBAdSize(bannerAdSizeWithWidth: 300,
height: 250,
andSlotUUID: amazonAdSlotId)!])
adLoader.loadAd(adView)
return adView
}
}
extension ExampleSwiftUIWrapper
{
class Coordinator: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
adView.loadAd()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'adView' は MAAdView のインスタンスです
adView.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
adView.loadAd()
}
}
}
Amazon interstitial広告をMAXに統合するには、最初にAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoをMAInterstitialAdのインスタンスに渡します。
これは、-[MAInterstitialAd setLocalExtraParameterForKey:value:]を呼び出すことで行えます。
AmazonのDTBAdResponseまたはDTBAdErrorInfoをロードしてMAInterstitialAdインスタンスに渡す処理は、セッションごとに1回だけ行う必要があります。
#import <AppLovinSDK/AppLovinSDK.h>
#import <DTBiOSSDK/DTBiOSSDK.h>
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
static MAInterstitialAd *interstitialAd;
static BOOL isFirstLoad;
+ (void)initialize
{
[super initialize];
interstitialAd = [[MAInterstitialAd alloc] initWithAdUnitIdentifier: @"«MAX-inter-ad-unit-ID»"];
isFirstLoad = YES;
}
- (void)loadAd
{
// 初回ロードの場合 - AmazonのSDKから広告をロードし、その後MAXの広告をロードします
if ( isFirstLoad )
{
isFirstLoad = NO;
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
[adLoader setAdSizes: @[
[[DTBAdSize alloc] initInterstitialAdSizeWithSlotUUID: @"«Amazon-inter-slot-ID»"]
]];
[adLoader loadAd: self];
}
else
{
[interstitialAd loadAd];
}
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
[interstitialAd setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[interstitialAd loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
[interstitialAd setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[interstitialAd loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
private static var interstitialAd = MAInterstitialAd(adUnitIdentifier: "«MAX-inter-ad-unit-ID»")
private static var isFirstLoad = true
func loadAd()
{
// 初回ロードの場合 - AmazonのSDKから広告をロードし、その後MAXの広告をロードします
if Self.isFirstLoad
{
Self.isFirstLoad = false
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
adLoader.setAdSizes([DTBAdSize(interstitialAdSizeWithSlotUUID: "«Amazon-inter-slot-ID»")!])
adLoader.loadAd(self)
}
else
{
Self.interstitialAd.load()
}
}
}
extension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
Self.interstitialAd.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
Self.interstitialAd.load()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
Self.interstitialAd.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
Self.interstitialAd.load()
}
}
Amazon interstitial広告をMAXに統合するには、最初にAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoをMAInterstitialAdのインスタンスに渡します。
これは、-[MAInterstitialAd setLocalExtraParameterForKey:value:]を呼び出すことで行えます。
AmazonのDTBAdResponseまたはDTBAdErrorInfoをロードしてMAInterstitialAdインスタンスに渡す処理は、セッションごとに1回だけ行う必要があります。
#import <AppLovinSDK/AppLovinSDK.h>
#import <DTBiOSSDK/DTBiOSSDK.h>
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
static MAInterstitialAd *interstitialAd;
static BOOL isFirstLoad;
+ (void)initialize
{
[super initialize];
interstitialAd = [[MAInterstitialAd alloc] initWithAdUnitIdentifier: @"«MAX-inter-ad-unit-ID»"];
isFirstLoad = YES;
}
- (void)loadAd
{
// 初回ロードの場合 - AmazonのSDKから広告をロードし、その後MAXの広告をロードします
if ( isFirstLoad )
{
isFirstLoad = NO;
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値 (320, 480) を切り替えます
[adLoader setAdSizes: @[
[[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth: 320 height: 480 andSlotUUID:@"«Amazon-video-inter-slot-ID»"]
]];
[adLoader loadAd: self];
}
else
{
[interstitialAd loadAd];
}
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
[interstitialAd setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[interstitialAd loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
[interstitialAd setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[interstitialAd loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
private static var interstitialAd = MAInterstitialAd(adUnitIdentifier: "«MAX-inter-ad-unit-ID»")
private static var isFirstLoad = true
func loadAd()
{
// 初回ロードの場合 - Amazon of SDKから広告をロードし、その後MAXの広告をロードします
if Self.isFirstLoad
{
Self.isFirstLoad = false
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値 (320, 480) を切り替えます
adLoader.setAdSizes([DTBAdSize(videoAdSizeWithPlayerWidth: 320, height: 480, andSlotUUID: "«Amazon-video-inter-slot-ID»")!])
adLoader.loadAd(self)
}
else
{
Self.interstitialAd.load()
}
}
}
nextension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
Self.interstitialAd.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
Self.interstitialAd.load()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'interstitialAd' は MAInterstitialAd のインスタンスです
Self.interstitialAd.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
Self.interstitialAd.load()
}
}
Amazon rewarded動画をMAXに統合するには、最初にAmazon広告をロードする必要があります。
MAX広告をロードする前に、DTBAdResponseまたはDTBAdErrorInfoをMARewardedAdのインスタンスに渡します。
これは、-[MARewardedAd setLocalExtraParameterForKey:value:]を呼び出すことで行えます。
AmazonのDTBAdResponseまたはDTBAdErrorInfoをロードしてMARewardedAdインスタンスに渡す処理は、1回だけ行う必要があります。
#import <AppLovinSDK/AppLovinSDK.h>
#import <DTBiOSSDK/DTBiOSSDK.h>
@interface ExampleViewController ()<DTBAdCallback>
⋮
@end
@implementation ExampleViewController
static MARewardedAd *rewardedAd;
static BOOL isFirstLoad;
+ (void)initialize
{
[super initialize];
rewardedAd = [MARewardedAd sharedWithAdUnitIdentifier: @"«MAX-rewarded-ad-unit-ID»"];
isFirstLoad = YES;
}
- (void)loadAd
{
// 初回ロードの場合 - AmazonのSDKから広告をロードし、その後MAXの広告をロードします
if ( isFirstLoad )
{
isFirstLoad = NO;
DTBAdNetworkInfo *adNetworkInfo = [[DTBAdNetworkInfo alloc] initWithNetworkName: DTBADNETWORK_MAX];
DTBAdLoader *adLoader = [[DTBAdLoader alloc] initWithAdNetworkInfo: adNetworkInfo];
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値 (320, 480) を切り替えます
[adLoader setAdSizes: @[
[[DTBAdSize alloc] initVideoAdSizeWithPlayerWidth: 320 height: 480 andSlotUUID:@"«Amazon-video-rewarded-slot-ID»"]
]];
[adLoader loadAd: self];
}
else
{
[rewardedAd loadAd];
}
}
- (void)onSuccess:(DTBAdResponse *)adResponse
{
// 'rewardedAd' は MARewardedAd のインスタンスです
[rewardedAd setLocalExtraParameterForKey: @"amazon_ad_response" value: adResponse];
[rewardedAd loadAd];
}
- (void)onFailure:(DTBAdError)error dtbAdErrorInfo:(DTBAdErrorInfo *)errorInfo
{
// 'rewardedAd' は MARewardedAd のインスタンスです
[rewardedAd setLocalExtraParameterForKey: @"amazon_ad_error" value: errorInfo];
[rewardedAd loadAd];
}
@end
import AppLovinSDK
import DTBiOSSDK
class ExampleViewController: UIViewController
{
private static var rewardedAd = MARewardedAd.shared(withAdUnitIdentifier: "«MAX-rewarded-ad-unit-ID»")
private static var isFirstLoad = true
func loadAd()
{
// 初回ロードの場合 - AmazonのSDKから広告をロードし、その後MAXの広告をロードします
if Self.isFirstLoad
{
Self.isFirstLoad = false
let adLoader = DTBAdLoader(adNetworkInfo: DTBAdNetworkInfo(networkName: DTBADNETWORK_MAX))
// デバイスの向きに応じて、動画プレイヤーの幅と高さの値 (320, 480) を切り替えます
adLoader.setAdSizes([DTBAdSize(videoAdSizeWithPlayerWidth: 320, height: 480, andSlotUUID: "«Amazon-video-rewarded-slot-ID»")!])
adLoader.loadAd(self)
}
else
{
Self.rewardedAd.load()
}
}
}
extension ExampleViewController: DTBAdCallback
{
func onSuccess(_ adResponse: DTBAdResponse!)
{
// 'rewardedAd' は MARewardedAd のインスタンスです
Self.rewardedAd.setLocalExtraParameterForKey("amazon_ad_response", value: adResponse)
Self.rewardedAd.load()
}
func onFailure(_ error: DTBAdError, dtbAdErrorInfo: DTBAdErrorInfo!)
{
// 'rewardedAd' は MARewardedAd のインスタンスです
Self.rewardedAd.setLocalExtraParameterForKey("amazon_ad_error", value: dtbAdErrorInfo)
Self.rewardedAd.load()
}
}
AppLovinは、AmazonのSDKでテストモードを有効にすることを推奨しています。 テストモードを有効にすると、テスト広告を受信できます。 以下の呼び出しを使用してテストモードを有効にします。
[[DTBAds sharedInstance] setLogLevel: DTBLogLevelAll];
[[DTBAds sharedInstance] setTestMode: YES];
DTBAds.sharedInstance().setLogLevel(DTBLogLevelAll)
DTBAds.sharedInstance().testMode = true
Amazon広告のみを含むようにウォーターフォールをフィルタリングできます。 これを行うには、Mediation DebuggerのSelect Live Networkに移動し、Amazonネットワークを選択します。
App Transport Security (ATS) を無効にするには、アプリのInfo.plistにNSAppTransportSecurityを追加します。
次に、NSAllowsArbitraryLoadsキーを追加し、そのBoolean値をYESに設定します。
このキーのみが存在することを確認してください。

統合手順については、SKAdNetworkドキュメントを参照してください。
コマンドラインで以下を実行します。
pod install --repo-update
各アダプターは、専用のリポジトリで独自のSwiftパッケージとして提供されています。アダプターを統合するには、Xcodeで以下を行います。
各アダプターのURLについては、以下の表を参照してください。
すべてのMAXアダプターはAppLovinSDKに依存しています。プロジェクトは、2つのパッケージマネージャーを同時に使用してAppLovinSDKを統合することはできません。いずれかのアダプターでSPMを採用した場合は、AppLovinSDKおよび他のすべてのアダプターもSPMを通じて管理してください。これらのコンポーネントにSPMとCocoaPodsの両方を使用すると、AppLovinSDKの重複リンクやバージョンの競合が発生します。