メインコンテンツへスキップ

概要

バックフィル広告は、直接広告がない場合に代替広告を自動的に表示し、収益を最大化します。AdropはAdMobやPangleなどの主要広告ネットワークをバックフィル広告ソースとしてサポートしています。
バックフィル広告には追加のプラットフォーム固有のネイティブ設定が必要です。

Android設定

1. Gradle設定

settings.gradle.kts

Pangle広告ネットワークリポジトリを追加します:
settings.gradle.kts
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
        maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
    }
}

build.gradle.kts

バックフィル広告の依存関係を追加します:
dependencies {
    implementation("io.adrop:adrop-ads:1.7.2")
    implementation("io.adrop:adrop-ads-backfill:1.7.2")
}

2. AndroidManifest.xml設定

AdMobをバックフィルとして使用する場合、AndroidManifest.xmlにAdMobアプリIDを追加します:
AndroidManifest.xml
<manifest>
    <application>
        <!-- AdMob App ID -->
        <meta-data
            android:name="com.google.android.gms.ads.APPLICATION_ID"
            android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
    </application>
</manifest>
ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyyを実際のAdMobアプリIDに置き換えてください。

3. ProGuard設定

ProGuardを使用する場合、以下のルールを追加します:
proguard-rules.pro
-keep class io.adrop.** { *; }
-dontwarn io.adrop.**

iOS設定

1. Podfileの修正

Podfileにバックフィル広告の依存関係を追加します:
Podfile
target 'YourApp' do
  # Adrop SDK
  pod 'adrop-ads'

  # バックフィル広告SDK
  pod 'adrop-ads-backfill'

  # ... その他の依存関係
end
依存関係を追加した後、以下のコマンドを実行します:
cd ios
pod install

2. Info.plist設定

AdMobをバックフィルとして使用する場合、Info.plistにAdMobアプリIDを追加します:
Info.plist
<key>GADApplicationIdentifier</key>
<string>ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy</string>
ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyyを実際のAdMobアプリIDに置き換えてください。

コンソール設定

Adropコンソールでバックフィル広告を有効にします:
  1. Adropコンソールにログイン
  2. 広告ユニットメニューに移動
  3. バックフィルを有効にする広告ユニットを選択
  4. バックフィル設定セクションでバックフィル広告を有効化
  5. バックフィル広告ネットワーク(AdMob、Pangleなど)を選択
  6. ネットワーク固有の設定を入力(例:AdMob広告ユニットID)

React Nativeでの使用

バックフィル広告の確認

isBackfilledプロパティを使用して、広告がバックフィル広告かどうかを確認できます。

バナー広告

import { AdropBanner } from 'adrop-ads-react-native'

<AdropBanner
  unitId="YOUR_UNIT_ID"
  style={{ width: 320, height: 100 }}
  onAdReceived={(unitId, metadata) => {
    if (metadata?.isBackfilled) {
      console.log('バックフィル広告がロードされました')
    } else {
      console.log('直接広告がロードされました')
    }
  }}
/>

インタースティシャル広告

import { AdropInterstitialAd } from 'adrop-ads-react-native'

const interstitialAd = new AdropInterstitialAd('YOUR_UNIT_ID')

interstitialAd.listener = {
  onAdReceived: (ad) => {
    if (ad.isBackfilled) {
      console.log('バックフィル広告がロードされました')
    } else {
      console.log('直接広告がロードされました')
    }
  }
}

リワード広告

import { AdropRewardedAd } from 'adrop-ads-react-native'

const rewardedAd = new AdropRewardedAd('YOUR_UNIT_ID')

rewardedAd.listener = {
  onAdReceived: (ad) => {
    if (ad.isBackfilled) {
      console.log('バックフィル広告がロードされました')
    } else {
      console.log('直接広告がロードされました')
    }
  }
}

ネイティブ広告

ネイティブ広告の場合、バックフィル広告かどうかに応じてメディアビューを異なる方法でレンダリングする必要があります。
import {
  AdropNativeAd,
  AdropNativeAdView,
  AdropMediaView,
  AdropHeadLineView,
  AdropBodyView,
} from 'adrop-ads-react-native'
import { WebView } from 'react-native-webview'

const NativeAdExample = () => {
  const [nativeAd, setNativeAd] = useState<AdropNativeAd>()
  const [isLoaded, setIsLoaded] = useState(false)

  useEffect(() => {
    const ad = new AdropNativeAd('YOUR_UNIT_ID')
    ad.listener = {
      onAdReceived: (ad) => {
        console.log('広告を受信:', ad.isBackfilled ? 'バックフィル' : '直接')
        setIsLoaded(true)
      }
    }
    ad.load()
    setNativeAd(ad)

    return () => ad.destroy()
  }, [])

  return (
    <AdropNativeAdView nativeAd={nativeAd}>
      <AdropHeadLineView style={styles.headline} />
      <AdropBodyView style={styles.body} />

      {/* バックフィルステータスに応じて異なるメディアビューを使用 */}
      {nativeAd?.isBackfilled ? (
        // バックフィル広告:AdropMediaViewを使用
        <AdropMediaView style={styles.media} />
      ) : (
        // 直接広告:WebViewでレンダリング
        <WebView
          source={{ html: nativeAd?.properties?.creative ?? '' }}
          style={styles.media}
          javaScriptEnabled={true}
          mediaPlaybackRequiresUserAction={false}
          allowsInlineMediaPlayback={true}
          scrollEnabled={false}
        />
      )}
    </AdropNativeAdView>
  )
}
バックフィルではないネイティブ広告の場合、動画広告はWebViewを使用して直接レンダリングする必要があります。

広告表示フロー

バックフィル広告は以下の順序で表示されます:

対応広告フォーマット

バックフィル広告は以下のフォーマットをサポートしています:
広告フォーマットサポート説明
バナー対応固定サイズのバナー広告
ネイティブ対応カスタマイズ可能なネイティブ広告
インタースティシャル対応フルスクリーン広告
リワード対応リワードベースの広告
ポップアップ対応ポップアップスタイルの広告

ベストプラクティス

バックフィル広告を有効化

すべての広告ユニットでバックフィル広告を有効にして、広告フィル率と収益を最大化してください。

適切なタイムアウト設定

直接広告とバックフィル広告に適切なタイムアウトを設定して、ユーザー体験を向上させてください。

バックフィル広告の分析

isBackfilledプロパティを使用して、直接広告とバックフィル広告の比率を追跡・分析してください。

ネイティブ広告のメディア処理

ネイティブ広告では、バックフィルステータスに応じてAdropMediaViewまたはWebViewを適切に使用してください。

注意事項

  • Android:バックフィル広告を使用するにはio.adrop:adrop-ads-backfill:1.7.2の依存関係を追加する必要があります。
  • iOS:バックフィル広告を使用するにはPodfileにpod 'adrop-ads-backfill'を追加する必要があります。
  • AdMobを使用する場合、各プラットフォームのマニフェストファイルにAdMobアプリIDを追加する必要があります。
  • バックフィルではないネイティブ広告の場合、メディアはWebViewでレンダリングする必要があります。
  • バックフィル広告ネットワークのポリシーに準拠する必要があります。

次のステップ