mcpField
A
applovin-ads-integration

applovin-ads-integration

github.com/finsilabsマーケティング・グロース6073 回インストール5 日前に更新
リポジトリ

applovin-ads-integration について

ネイティブのiOSまたはAndroidショッピングアプリで、AppLovinによるユーザー獲得、購入計測、アプリ内広告収益化を行うチーム向けのスキルです。MAX SDK、モバイル計測パートナー、SKAdNetworkの設定を扱います。

主な機能

  1. 01iOS・Android向けMAX SDKの導入
  2. 02モバイル計測パートナーの設定
  3. 03購入イベントとポストバックの送信
  4. 04ユーザー獲得キャンペーンの設定
  5. 05MAX収益化ウォーターフォールの設定
  6. 06SKAdNetworkコンバージョン値の割り当て

活用シーン

  1. 01ショッピングアプリのユーザー獲得
  2. 02購入計測と広告ROASの最適化
  3. 03アプリ内広告による収益化
  4. 04iOSのプライバシー計測設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/finsilabs/awesome-ecommerce-skills --skill applovin-ads-integration

インストール後、Claude Code で/applovin-ads-integrationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

tile.json
evals/ios-sdk-setup-and-max-ad-loading/
criteria.json
task.md
evals/purchase-event-postback-integration/
criteria.json
task.md
evals/skadnetwork-attribution-and-retargeting/
criteria.json
task.md

詳細

AppLovin Ads の統合

概要

AppLovin は、コマースアプリ向けの主要なモバイル広告プラットフォームです。MAX メディエーション SDK(アプリ内広告による収益化)と AppLovin Ads(ユーザーの獲得とリターゲティングキャンペーンの実施)を組み合わせています。このスキルは、ネイティブ iOS または Android のショッピングアプリを持ち、ユーザー獲得キャンペーンを実施したい、またはアプリ内広告で収益化したいマーチャント向けです。ウェブのみのストアには関係ありません。

このスキルを使用するタイミング

  • ネイティブのモバイルコマースアプリでユーザー獲得キャンペーンを実施するとき
  • MAX メディエーションを使用して、アプリ内広告でモバイルコマースアプリを収益化するとき
  • ROAS 最適化入札に向けて購入イベントのポストバックを設定するとき
  • MoPub/ironSource から AppLovin MAX メディエーションに移行するとき
  • カートに追加したものの購入に至らなかったモバイルアプリユーザーを対象に、リターゲティングキャンペーンを作成するとき
  • iOS 14 以降のコンプライアンス対応として SKAdNetwork アトリビューションを実装するとき

基本手順

ステップ 1:必要なものを確認する

AppLovin には、用途が明確に異なる 2 つの機能があります。適切なものを選択してください。

目標使用するもの難易度
新規アプリユーザーを獲得し、既存ユーザーに再アプローチするAppLovin Ads(デマンドサイドプラットフォーム)中 — manage.applovin.com のダッシュボードで設定します
ユーザーに広告を表示してアプリを収益化するAppLovin MAX SDK高 — モバイルアプリへの SDK 統合が必要です
ROAS 最適化のために購入イベントを追跡するSDK + MMP(Adjust、AppsFlyer、または Singular)高 — サーバーサイドのポストバック設定が必要です

前提条件:applovin.com で AppLovin アカウントを作成し、App Store または Google Play に公開されているモバイルアプリを用意してください。

ステップ 2:モバイルアプリに AppLovin MAX SDK をインストールする

iOS(CocoaPods):

Podfile に追加します:

pod 'AppLovinSDK'
pod 'AppLovinMediationGoogleAdMobAdapter'
pod 'AppLovinMediationMetaAudienceNetworkAdapter'

AppDelegate.swift で初期化します:

import AppLovinSDK

func application(_ app: UIApplication, didFinishLaunchingWithOptions opts: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
  ALSdk.shared().mediationProvider = "max"
  ALSdk.shared().userIdentifier = currentUser?.id ?? ""
  ALSdk.shared().initializeSdk { sdkConfig in
    // SDK ready — load your first ad
  }
  return true
}

Android(Gradle):

app/build.gradle に記述します:

dependencies {
    implementation 'com.applovin:applovin-sdk:+'
    implementation 'com.applovin.mediation:google-adapter:+'
    implementation 'com.applovin.mediation:facebook-adapter:+'
}

Application.onCreate() に記述します:

AppLovinSdk.getInstance(this).apply {
    mediationProvider = "max"
    userIdentifier = currentUser?.id ?: ""
    initializeSdk { /* SDK ready */ }
}
ステップ 3:モバイル計測パートナー(MMP)を設定する — キャンペーンの実施前に設定してください

MMP を設定せずに AppLovin キャンペーンを実施しないでください。 直接ポストバックを送信すると、クロスデバイスアトリビューションと SKAdNetwork のデコードが行われません。次のいずれかを使用してください。

  • Adjust(adjust.com)— 最も広く利用されており、AppLovin との連携に優れています
  • AppsFlyer(appsflyer.com)— 業界標準で、複数ネットワークのアトリビューションに適しています
  • Singular(singular.net)— プライバシーを重視したアトリビューションに適しています

各 MMP には AppLovin 連携モジュールが用意されており、購入ポストバックを自動的に送信します。MMP のダッシュボードで次の操作を行います。

  1. Partner Configuration → AppLovin に移動します
  2. AppLovin SDK キーを入力します
  3. 「In-App Purchase」ポストバックを有効にします
  4. SKAdNetwork のコンバージョン値マッピングを設定します
ステップ 4:アプリ内で購入イベントを追跡する

購入が確定したら、クライアントサイドとサーバーサイドの両方で、ただちに購入イベントを発火させます。

クライアントサイド(iOS):

func trackPurchase(orderId: String, revenue: Double, currency: String) {
  ALEventService.shared().trackEvent(ALEventTypePurchasedProduct, withParameters: [
    ALEventParameterRevenueAmount: NSNumber(value: revenue),
    ALEventParameterRevenueCurrency: currency,
    ALEventParameterProductIdentifier: orderId,
  ])
}

// Also track add-to-cart for retargeting signal
func trackAddToCart(productId: String, price: Double) {
  ALEventService.shared().trackEvent(ALEventTypeAddedItemToCart, withParameters: [
    ALEventParameterProductIdentifier: productId,
    ALEventParameterRevenueAmount: NSNumber(value: price),
  ])
}

サーバーサイドのポストバック(シグナルの信頼性向上用):

async function sendApplovinPurchasePostback(params: {
  userId: string;
  orderId: string;
  revenue: number;
  currency: string;
  applovinId?: string;
}) {
  const url = new URL('https://d.applovin.com/postback/v1/purchase');
  url.searchParams.set('event_token', process.env.APPLOVIN_POSTBACK_TOKEN!);
  url.searchParams.set('event_name', 'purchase');
  url.searchParams.set('user_id', params.userId);
  url.searchParams.set('transaction_id', params.orderId);
  url.searchParams.set('revenue', params.revenue.toFixed(2));
  url.searchParams.set('currency', params.currency);
  if (params.applovinId) url.searchParams.set('device_id', params.applovinId);

  await fetch(url.toString());
}
ステップ 5:ユーザー獲得キャンペーンを作成する

manage.applovin.com の AppLovin 広告ダッシュボードで、次の操作を行います。

  1. Campaigns → Create Campaign に移動します
  2. 次の項目を設定します。
    • Campaign Type:App Install(iOS または Android)
    • Optimization Goal:Purchase(ROAS 最適化)
    • Bid Strategy:Target ROAS — 200% から始め、1 日あたりの購入数が 50 件を超えたら引き上げます
    • Daily Budget:ROAS キャンペーンでは最低 1 日あたり $200(アルゴリズムには十分なデータ量が必要です)
    • Targeting:ROAS を最大化するには Tier-1 の国(US、CA、GB、AU)を対象とし、年齢を 25~54 歳に設定します
  3. クリエイティブ素材として、15 秒と 30 秒の動画広告、プレイアブル広告、静止画バナーをアップロードします
  4. Audience Signals で、上位購入者を基にした類似オーディエンスをアップロードします(MMP からエクスポートします)
ステップ 6:MAX のメディエーション・ウォーターフォールを設定する(アプリの収益化のみ)

アプリ内広告でアプリを収益化している場合(ユーザー獲得キャンペーンを実施するだけではない場合)、MAX ダッシュボードでウォーターフォールを設定します。

  1. MAX → Ad Units → Create Ad Unit に移動します
  2. まずアプリ内入札ネットワークを設定します(同時オークション、最高収益):
    • AppLovin Exchange
    • Meta Audience Network
    • Google AdMob
  3. 最低価格を設定して、従来型のウォーターフォールのフォールバックを追加します:
    • $3.00 CPM → Vungle
    • $2.00 CPM → Unity Ads
    • $1.00 CPM → ironSource

アプリでインタースティシャル広告を読み込んで表示します。

class CartViewController: UIViewController {
  var interstitialAd: MAInterstitialAd?

  override func viewDidLoad() {
    super.viewDidLoad()
    interstitialAd = MAInterstitialAd(adUnitIdentifier: "YOUR_AD_UNIT_ID")
    interstitialAd?.delegate = self
    interstitialAd?.load()
  }
}

extension CartViewController: MAAdDelegate {
  func didLoad(_ ad: MAAd) { /* ready to show */ }
  func didHide(_ ad: MAAd) {
    interstitialAd?.load() // preload immediately after hide
  }
}
ステップ 7:iOS 14 以降のアトリビューション用に SKAdNetwork を設定する

AppLovin のダッシュボードとアプリのコードの両方で、購入額の範囲を SKAdNetwork のコンバージョン値(0~63)にマッピングします。

func updateSKANConversionValue(orderValue: Double) {
  let conversionValue: Int
  switch orderValue {
  case 0..<25:    conversionValue = 10
  case 25..<50:   conversionValue = 20
  case 50..<100:  conversionValue = 30
  case 100..<200: conversionValue = 40
  default:         conversionValue = 63
  }

  if #available(iOS 16.1, *) {
    SKAdNetwork.updatePostbackConversionValue(conversionValue, coarseValue: .high, lockWindow: false) { _ in }
  } else {
    SKAdNetwork.updateConversionValue(conversionValue)
  }
}

AppLovin の SKAN 設定パネル(MAX → SKAN Configuration)で同一のスキーマを設定し、プラットフォームがポストバックをデコードできるようにします。

ベストプラクティス

  • 常に MMP を使用する — 直接ポストバックではデバイスをまたぐアトリビューションと SKAdNetwork のデコードができません。MMP を使えば、これらを自動的に処理できます
  • 収益のポストバックはサーバー側で設定する — クライアント側のイベントは偽装される可能性があります。サーバー側のポストバックを使えば、AppLovin に信頼性の高い ROAS シグナルを提供できます
  • 必要になる前に広告をプリロードする — 次のインプレッションに備えて広告を用意できるよう、didHide の直後に load() を呼び出します
  • すべての広告枠でアプリ内入札を使用する — 同時オークションは、順次処理するウォーターフォールよりも eCPM が 15~30%高くなります
  • クリエイティブを 2 週間ごとに更新する — AppLovin のアルゴリズムはクリエイティブの効果がすぐに薄れるため、新しい動画形式やプレイアブル形式を追加します
  • リターゲティングの頻度に上限を設定する — 1 ユーザーあたり 1 日 3 インプレッションまでに制限します

よくある問題

問題解決策
購入のポストバックが記録されないポストバックトークンが正しいことを確認します。revenue が整数ではなく小数形式であることを確認します
iOS で SDK の初期化に失敗するInfo.plist に NSUserTrackingUsageDescription を追加し、SDK の初期化前に ATT プロンプトを実装します
ROAS キャンペーンの消化額が少ないtROAS の目標を下げます。アルゴリズムが最適化できるよう、1 日あたり 50 件以上の購入イベントがあることを確認します
SKAN のコンバージョン値がすべて 0 と表示される支払い意思の確認後ではなく、最終購入の確認後に updateConversionValue が呼び出されていることを確認します
1 回目の表示後にリワード広告が読み込まれないdidDisplay ではなく、didHide コールバックで load() を呼び出します
ポストバックに Android の GAID がないAndroid 13 以降では AD_ID 権限を要求します。デバイスの設定でユーザーが広告トラッキングを制限している可能性があります

関連スキル

  • @tiktok-ads-integration
  • @meta-ads-integration
  • @marketing-attribution-dashboard
  • @push-notifications
  • @customer-retention-engine

コメント