詳細設定

広告プレースメント

広告ユニットごとにプレースメント名を設定できます(例:「Rewarded VideoLevels」、「INTER_levelEnd」、「RewardedVideoCoinStore」)。 これにより、異なるプレースメントカテゴリの統計情報を収集するのに役立ちます。 以下のスニペットは、さまざまな広告フォーマットでプレースメント名を設定する方法を示しています。

バナー / MREC

バナーおよびMRECの場合、バナーまたはMRECをロードする前にプレースメント名を設定する必要があります。

adView.placement = @"«placement»";
[adView loadAd];

インタースティシャル

[interstitialAd showAdForPlacement: @"«placement»"];

リワード広告

[rewardedAd showAdForPlacement: @"«placement»"];

ネイティブ広告

nativeAdLoader.placement = @"«placement»";

ネイティブ広告(広告プレイサー)

MAAdPlacerSettings *settings = [MAAdPlacerSettings settingsWithAdUnitIdentifier: @"«ad-unit-ID»"];
settings.placement = @"«placement»";

音声のミュート

アプリの起動時に、一部のメディエーション対象SDKネットワークの音声をミュートに設定できます。 AppLovin SDK経由でこの機能をサポートしているネットワークは以下の通りです。

  • AppLovin
  • Bigo(ネイティブのみ)
  • DT Exchange
  • Google Ad Manager
  • Google bidding および Google AdMob
  • LINE
  • Mintegral

その他のネットワークについては、この機能が利用可能かどうか、およびアクセス方法について、各ネットワークのアカウント担当チームにお問い合わせください。

以下のコードスニペットは、この機能をサポートしているネットワークで音声をミュートにする方法を示しています。

ALSdk *sdk = [ALSdk shared];
sdk.settings.muted = YES; // ミュートにする場合
sdk.settings.muted = NO;  // ミュートを解除する場合

広告をロードする前にミュート状態を設定してください。 一部のネットワーク(Google biddingやGoogle AdMobなど)は、広告ロード前のミュート状態に応じて、ミュートされた動画またはミュートされていない動画を返します。

注意:広告をミュートにすると、広告収益が低下する可能性があります。

詳細ログ(Verbose Logging)の有効化

詳細ログを有効にするには、次の2つの方法があります。

プログラムによる設定

SDKの設定オブジェクトでフラグ isVerboseLoggingEnabledYES に設定することで、詳細ログを有効にできます。

[ALSdk shared].settings.verboseLoggingEnabled = YES;

Info.plist

アプリケーションの Info.plistAppLovinVerboseLoggingOnYES に設定することでも、詳細ログを有効にできます。

Key: Information Property List. Type: Dictionary. Value: (1 item). Key: AppLovinVerboseLoggingOn. Type: Boolean. Value: YES.

確認方法

詳細ログが有効になっていることを確認するには、AppLovin SDKログの初期化セクションで Verbose Logging On: true という行を探します。

AppLovin SDK
Version: 12.4.2
⋮
Verbose Logging On: true
⋮

AppLovin SDKは、ログに「/AppLovinSdk: [AppLovinSdk]」というタグを付与します。

クリエイティブIDとネットワーク名

メディエーション対象ネットワークから、表示された広告のクリエイティブIDとネットワーク名を取得できます。 詳細については、クリエイティブデバッガーのドキュメントを参照してください。

DSP名

AppLovin Exchangeから配信されたMAX広告のDSP名は、以下のようなコードで取得できます。

- (void)didLoadAd:(MAAd *)ad
{
  NSLog(@"AppLovin Exchange DSP name: %@", ad.DSPName);
}

インプレッションレベルのユーザー収益API

クライアント側でインプレッションレベルのユーザー収益データにアクセスできます。 このデータを使用して、異なるソースやキャンペーンを比較できます。 また、MAXのユーザー収益APIを使用してこのデータにアクセスすることもできます。 このデータへのアクセスを希望するMMPは、MMP向けインプレッションレベルのユーザー収益APIページを参照してください。

インプレッションレベルの広告収益データは、サポートされているすべてのネットワークについて、Adjustなど、お好みのモバイル計測パートナー(MMP)と共有できます。

収益額は、すべての広告ライフサイクルコールバックで取得できます。 以下の例は、「広告収益支払い(ad revenue paid)」コールバックでこれを行う方法を示しています。

- (void)didPayRevenueForAd:(MAAd *)ad
{
  double revenue = ad.revenue; // 米ドル(USD)表記

  // その他のデータ
  NSString *countryCode = [ALSdk shared].configuration.countryCode; // 米国の場合は "US" など - 注意:通貨コードである "USD" と混同しないでください
  NSString *networkName = ad.networkName; // 広告を表示したネットワークの表示名
  NSString *adUnitId = ad.adUnitIdentifier; // MAX広告ユニットID
  MAAdFormat *adFormat = ad.format; // 広告の広告フォーマット(例:BANNER, MREC, INTERSTITIAL, REWARDED)
  NSString *placement = ad.placement; // この広告のポストバックが紐付けられているプレースメント
  NSString *networkPlacement = ad.networkPlacement; // 広告を表示したネットワークからのプレースメントID
}

ad.revenue-1 の場合、これはエラーを示します。

以下の例に示すように、収益値の精度評価(precision)を取得することもできます。

NSString *revenuePrecision = ad.revenuePrecision;

この精度(precision)は、以下のいずれかの値をとります。

"publisher_defined"
収益額はパブリッシャーによって設定された価格です
"exact"
収益額はリアルタイムオークションの結果です
"estimated"
収益額はAuto-CPMまたはFB Biddingの予測値に基づいています
"undefined"
収益額が定義されておらず、予測するための十分なデータがありません
""
収益および精度が無効です(テストモード時など)

広告リクエストコールバックの設定

MAAdRequestDelegate を設定し、その [didStartAdRequestForAdUnitIdentifier:] メソッドを実装して、そのデリゲートを requestDelegate に設定することで、広告リクエストがいつ行われたかをリッスンできます。 以下の例は、このような「広告リクエスト開始」コールバックを実装する方法を示しています。

- (void)didStartAdRequestForAdUnitIdentifier:(NSString *)adUnitIdentifier
{
  // ここで広告リクエストが開始されました
}

選択的初期化(Selective init)

ALSdkInitializationConfiguration で特定の広告ユニットを指定することにより、それらの広告ユニットのみでSDKを初期化できます。 これを行うと、SDKは指定された広告ユニット用に設定されたネットワークのみを初期化します。 (広告ユニットを指定しない場合、SDKは現在のセッションですべての広告ユニットが必要であると想定します。 その場合、それらの広告ユニット用に設定されたすべてのネットワークを初期化します。) 以下の例は、この機能を実装する方法を示しています。

ALSdkInitializationConfiguration *initConfig = [ALSdkInitializationConfiguration configurationWithSdkKey:«your-SDK-key»
  builderBlock:^(ALSdkInitializationConfigurationBuilder *builder) {
    builder.mediationProvider = ALMediationProviderMAX;
    builder.adUnitIdentifiers = @[@"«ad-unit-ID-1»", @"«ad-unit-ID-2»"];
  }];

[[ALSdk shared] initializeWithConfiguration: initConfig completionHandler:^(ALSdkConfiguration *sdkConfig) {
 ⋮
}];

SDKキーは、AppLovinダッシュボードの Account > General > Keys セクションで確認できます。

選択的初期化を使用する場合、MAXは明示的に指定されていない広告ユニットを現在のセッションの広告配信から除外します。

テストモードを有効にしている場合、選択的初期化は効果がありません。

ウォーターフォール情報API

ウォーターフォール情報APIは、広告(ロードされた広告、またはロードに失敗した広告)の現在のウォーターフォールに関する情報を提供します。 このAPIは、ウォーターフォール内の各広告の広告ロード状態、レイテンシー、認証情報、およびメディエーション対象ネットワーク情報を返します。 ウォーターフォール内の広告のロードが失敗した場合、APIはエラー情報を提供します。

AdLoadState の値

説明
0広告ロード未試行
1広告ロード完了
2広告ロード失敗

- (void)didLoadAd:(MAAd *)ad
{
  NSLog(@"Waterfall Name: %@ and Test Name: %@", ad.waterfall.name, ad.waterfall.testName);
  NSLog(@"Waterfall latency was: %f seconds", ad.waterfall.latency);

  for (MANetworkResponseInfo *networkResponse in ad.waterfall.networkResponses)
  {
    NSLog(@"Network -> %@", networkResponse.mediatedNetwork);
    NSLog(@"...adLoadState: %ld", (long) networkResponse.adLoadState);
    NSLog(@"...latency: %f seconds", networkResponse.latency);
    NSLog(@"...credentials: %@", networkResponse.credentials);
    if (networkResponse.error) {
      NSLog(@"...error: %@", networkResponse.error);
    }
  }
}

- (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error
{
  if (!error.waterfall) {
    return;
  }

  MAAdWaterfallInfo *waterfall = error.waterfall;
  NSLog(@"Waterfall Name: %@ and Test Name: %@", waterfall.name, waterfall.testName);
  NSLog(@"Waterfall latency was: %f seconds", waterfall.latency);

  for (MANetworkResponseInfo *networkResponse in waterfall.networkResponses)
  {
    NSLog(@"Network -> %@", networkResponse.mediatedNetwork);
    NSLog(@"...latency: %f seconds", networkResponse.latency);
    NSLog(@"...credentials: %@", networkResponse.credentials);
    if (networkResponse.error) {
      NSLog(@"...error: %@", networkResponse.error);
    }
  }
}

ウォーターフォールが空の場合、MAError.waterfallnil を返すため、ウォーターフォールのプロパティを調査することはできません。 ただし、空のウォーターフォールの広告ロードレイテンシーは、requestLatency を介して取得できます。

- (void)didLoadAd:(MAAd *)ad
{
  NSLog(@"Succesful ad load latency: %f seconds", ad.requestLatency);
}

- (void)didFailToLoadAdForAdUnitIdentifier:(NSString *)adUnitIdentifier withError:(MAError *)error
{
  NSLog("Failed ad load latency: %f seconds", error.requestLatency);
}

バナー / MRECの広告リフレッシュのカスタマイズ

広告ユニットUIで設定できるのと同様に、インテグレーション内で直接バナーおよびMRECの広告リフレッシュ間隔をカスタマイズできます。 最小リフレッシュ間隔は10秒です。 最大リフレッシュ間隔は120秒です。 MAXはこれらの制限外の値を無視します。 以下のコードサンプルは、これらのリフレッシュ間隔をカスタマイズする方法を示しています。

// adView が MAAdView のインスタンスである場合
[adView setExtraParameterForKey: @"ad_refresh_seconds" value: «ad-refresh-rate»];

音声設定

インタースティシャル広告やリワード広告の音声がアプリのバックグラウンド音声と干渉するのを防ぐため、AppLovinでは広告を表示する前にアプリのバックグラウンド音声を停止することをお勧めします。 広告を閉じた後に、アプリのバックグラウンド音声を再開できます。

- (void)didDisplayAd:(MAAd *)ad
{
  // アプリのバックグラウンド音声を一時停止する
}

- (void)didHideAd:(MAAd *)ad
{
  // アプリのバックグラウンド音声を再開する
}

search