applovin-ads-integration について
ネイティブのiOSまたはAndroidショッピングアプリで、AppLovinによるユーザー獲得、購入計測、アプリ内広告収益化を行うチーム向けのスキルです。MAX SDK、モバイル計測パートナー、SKAdNetworkの設定を扱います。
主な機能
- 01iOS・Android向けMAX SDKの導入
- 02モバイル計測パートナーの設定
- 03購入イベントとポストバックの送信
- 04ユーザー獲得キャンペーンの設定
- 05MAX収益化ウォーターフォールの設定
- 06SKAdNetworkコンバージョン値の割り当て
活用シーン
- 01ショッピングアプリのユーザー獲得
- 02購入計測と広告ROASの最適化
- 03アプリ内広告による収益化
- 04iOSのプライバシー計測設定
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill applovin-ads-integrationインストール後、Claude Code で/applovin-ads-integrationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
tile.jsonevals/ios-sdk-setup-and-max-ad-loading/criteria.jsontask.mdevals/purchase-event-postback-integration/criteria.jsontask.mdevals/skadnetwork-attribution-and-retargeting/criteria.jsontask.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 のダッシュボードで次の操作を行います。
- Partner Configuration → AppLovin に移動します
- AppLovin SDK キーを入力します
- 「In-App Purchase」ポストバックを有効にします
- 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 広告ダッシュボードで、次の操作を行います。
- Campaigns → Create Campaign に移動します
- 次の項目を設定します。
- 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 歳に設定します
- クリエイティブ素材として、15 秒と 30 秒の動画広告、プレイアブル広告、静止画バナーをアップロードします
- Audience Signals で、上位購入者を基にした類似オーディエンスをアップロードします(MMP からエクスポートします)
ステップ 6:MAX のメディエーション・ウォーターフォールを設定する(アプリの収益化のみ)
アプリ内広告でアプリを収益化している場合(ユーザー獲得キャンペーンを実施するだけではない場合)、MAX ダッシュボードでウォーターフォールを設定します。
- MAX → Ad Units → Create Ad Unit に移動します
- まずアプリ内入札ネットワークを設定します(同時オークション、最高収益):
- AppLovin Exchange
- Meta Audience Network
- Google AdMob
- 最低価格を設定して、従来型のウォーターフォールのフォールバックを追加します:
- $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