スプラッシュ広告(Splash Ad)は、アプリ起動時にスプラッシュ画面に表示される広告です。アプリのロゴと一緒に広告が表示され、自然なユーザー体験を提供します。
アプリ起動時の自然な広告露出
アプリロゴと共にブランドイメージを維持
360dp × 270dpの広告領域、288dp × 288dpのロゴ領域
画像広告サポート
Android 12+システムスプラッシュスクリーンサポート
開発環境ではテストユニットIDを使用してください:PUBLIC_TEST_UNIT_ID_SPLASH
広告とロゴのサイズ
スプラッシュ広告は決まった領域を使用します:
ロゴ領域 :288dp × 288dp(画面中央)
広告領域 :360dp × 270dp(画面下部)
広告は画面下部に表示され、上部にはアプリロゴが配置されます
実装方法
スプラッシュ広告は、アプリの要件に応じて2つの方法で実装できます:
AdropSplashAdを使用 - システムスプラッシュスクリーンと統合(Android 12+)
AdropSplashAdViewを使用 - カスタムスプラッシュ画面構成
方法1:AdropSplashAdを使用(システムスプラッシュ統合)
Android 12(API 31)以上でシステムスプラッシュスクリーンと統合する方法です。AdropSplashAdActivityがスプラッシュ画面を自動的に管理します。
ステップ1:strings.xmlの設定
app/src/main/res/values/strings.xmlファイルに以下の設定を追加します。
< resources >
<!-- アプリ名 -->
< string name = "app_name" > My App </ string >
<!-- スプラッシュ広告ユニットID -->
< string name = "adrop_splash_ad_unit_id" translatable = "false" > YOUR_SPLASH_UNIT_ID </ string >
<!-- スプラッシュ終了後に移動するActivity -->
< string name = "adrop_splash_ad_next_activity" translatable = "false" > com.yourcompany.yourapp.MainActivity </ string >
</ resources >
テスト時にはYOUR_SPLASH_UNIT_IDの代わりにPUBLIC_TEST_UNIT_ID_SPLASHを使用してください。
ステップ2:スプラッシュロゴ画像の追加
アプリロゴをres/drawable/フォルダに追加します。
app/src/main/res/drawable/splash_logo.png
推奨サイズ:288dp × 288dp(@2x:576px、@3x:864px)
ステップ3:AndroidManifest.xmlの設定
AdropSplashAdActivityをランチャーアクティビティとして設定します。
< manifest xmlns:android = "http://schemas.android.com/apk/res/android" >
< application
android:name = ".MyApplication"
android:theme = "@style/Theme.App" >
<!-- スプラッシュ広告Activity -->
< activity
android:name = "io.adrop.ads.splash.AdropSplashAdActivity"
android:theme = "@style/Theme.App.Splash"
android:exported = "true" >
< intent-filter >
< action android:name = "android.intent.action.MAIN" />
< category android:name = "android.intent.category.LAUNCHER" />
</ intent-filter >
</ activity >
<!-- メインActivity(スプラッシュ終了後に移動) -->
< activity
android:name = ".MainActivity"
android:exported = "false" />
</ application >
</ manifest >
AdropSplashAdActivityのandroid:exported="true"設定が必要です。
ステップ4:スプラッシュテーマの設定
res/values/themes.xmlファイルにスプラッシュテーマを追加します。
< resources >
<!-- アプリデフォルトテーマ -->
< style name = "Theme.App" parent = "Theme.Material3.DayNight.NoActionBar" >
<!-- アプリテーマ設定 -->
</ style >
<!-- スプラッシュテーマ(Android 12+) -->
< style name = "Theme.App.Splash" parent = "Theme.SplashScreen" >
< item name = "windowSplashScreenBackground" > @color/white </ item >
< item name = "windowSplashScreenAnimatedIcon" > @drawable/splash_logo </ item >
< item name = "postSplashScreenTheme" > @style/Theme.App </ item >
</ style >
</ resources >
Android 12未満の端末ではシステムスプラッシュが表示されず、直接AdropSplashAdActivityが表示されます。
ステップ5:レイアウトのカスタマイズ(オプション)
デフォルトレイアウトを使用せずカスタムレイアウトを希望する場合、アプリのres/layout/フォルダにactivity_adrop_splash_ad.xmlファイルを作成します。
res/layout/activity_adrop_splash_ad.xml
<? xml version = "1.0" encoding = "utf-8" ?>
< RelativeLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "#ffffff"
android:paddingHorizontal = "24dp"
android:fitsSystemWindows = "true" >
<!-- アプリロゴ(中央) -->
< ImageView
android:src = "@drawable/splash_logo"
android:layout_width = "288dp"
android:layout_height = "288dp"
android:scaleType = "fitXY"
android:layout_centerInParent = "true" />
<!-- 広告領域(下部) - 必須 -->
< ImageView
android:id = "@+id/adrop_splash_ad_image"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_centerHorizontal = "true"
android:layout_alignParentBottom = "true" />
</ RelativeLayout >
android:id="@+id/adrop_splash_ad_image"を持つImageViewは必須です。このビューに広告が表示されます。
ステップ6:ApplicationでSDKを初期化
import android.app.Application
import io.adrop.ads.Adrop
class MyApplication : Application () {
override fun onCreate () {
super . onCreate ()
// SDK初期化
Adrop. initialize ( this , production = false )
}
}
ステップ7:AdropSplashAdリスナーの実装(オプション)
スプラッシュ広告イベントを受信するには、Applicationクラスでリスナーを設定します。
import android.app.Application
import io.adrop.ads.Adrop
import io.adrop.ads.splash.AdropSplashAd
import io.adrop.ads.splash.AdropSplashAdListener
import io.adrop.ads.model.AdropErrorCode
class MyApplication : Application () {
private lateinit var splashAd: AdropSplashAd
override fun onCreate () {
super . onCreate ()
// SDK初期化
Adrop. initialize ( this , production = false )
// スプラッシュ広告設定
splashAd = AdropSplashAd ( this ) { splashAd ->
// shouldSkip:スプラッシュ広告をスキップするかどうかを決定
// trueを返すと広告を表示せずに直接メイン画面に移動
checkShouldSkipSplash ()
}
splashAd.splashAdListener = object : AdropSplashAdListener {
override fun onAdReceived (ad: AdropSplashAd ) {
println ( "スプラッシュ広告受信成功" )
}
override fun onAdFailedToReceive (ad: AdropSplashAd , errorCode: AdropErrorCode ) {
println ( "スプラッシュ広告受信失敗: $errorCode " )
}
override fun onAdImpression (ad: AdropSplashAd ) {
println ( "スプラッシュ広告インプレッション" )
}
override fun onAdClose (ad: AdropSplashAd , impressed: Boolean ) {
println ( "スプラッシュ広告終了 - インプレッション: $impressed " )
}
}
}
private fun checkShouldSkipSplash (): Boolean {
// 例:ディープリンクで進入した場合や特定の条件でスプラッシュをスキップ
// プッシュ通知でアプリが起動された場合など
return false
}
}
AdropSplashAdプロパティ
プロパティ タイプ 説明 unitIdString広告ユニットID(読み取り専用) creativeIdString広告クリエイティブID(読み取り専用) isClosedBooleanスプラッシュ広告終了状態(読み取り専用)
AdropSplashAdメソッド
メソッド 説明 close()スプラッシュ広告を即座に終了し次の画面に移動
shouldSkipコールバック
AdropSplashAdコンストラクタのshouldSkipコールバックを使用して、特定の条件でスプラッシュ広告をスキップできます。
val splashAd = AdropSplashAd (application) { splashAd ->
// プッシュ通知でアプリが起動された場合スプラッシュをスキップ
val isPushNotification = intent?.extras?. containsKey ( "push_notification" ) == true
// ディープリンクで進入した場合スプラッシュをスキップ
val hasDeepLink = intent?. data != null
isPushNotification || hasDeepLink
}
shouldSkipがtrueを返すと、広告をロードせずに即座に次の画面に移動します。
スプラッシュ表示時間の設定(オプション)
デフォルト表示時間(2秒)を変更するには、res/values/integers.xmlファイルを作成して設定します。
< resources >
<!-- 広告リクエストタイムアウト(ミリ秒、500〜3000) -->
< integer name = "adrop_splash_ad_request_timeout" > 1000 </ integer >
<!-- 広告表示時間(ミリ秒、500〜3000) -->
< integer name = "adrop_splash_ad_max_timeout" > 2000 </ integer >
</ resources >
設定可能な範囲は500ms〜3000msです。範囲外の値は自動的に補正されます。
プッシュ通知ディープリンク時のスプラッシュスキップ(オプション)
プッシュ通知を通じてアプリが起動された時にディープリンクがあればスプラッシュ広告をスキップするよう設定できます。
< resources >
<!-- プッシュ通知ディープリンク時のスプラッシュスキップ -->
< bool name = "adrop_splash_ad_skip_push_notification_clicked" > true </ bool >
</ resources >
方法2:AdropSplashAdViewを使用(カスタムスプラッシュ)
カスタムスプラッシュ画面を直接構成したい場合に使用します。独自のスプラッシュActivityを作成し、AdropSplashAdViewを配置します。
ステップ1:レイアウトの作成
<? xml version = "1.0" encoding = "utf-8" ?>
< RelativeLayout
xmlns:android = "http://schemas.android.com/apk/res/android"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
android:background = "#ffffff"
android:padding = "24dp" >
<!-- アプリロゴ -->
< ImageView
android:id = "@+id/logo"
android:layout_width = "288dp"
android:layout_height = "288dp"
android:layout_centerInParent = "true"
android:src = "@drawable/splash_logo"
android:scaleType = "fitXY" />
<!-- スプラッシュ広告ビュー -->
< io.adrop.ads.splash.AdropSplashAdView
android:id = "@+id/splash_ad_view"
android:layout_width = "match_parent"
android:layout_height = "270dp"
android:layout_alignParentBottom = "true" />
</ RelativeLayout >
ステップ2:SplashActivityの実装
import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import io.adrop.ads.splash.AdropSplashAdView
import io.adrop.ads.splash.AdropSplashAdViewListener
import io.adrop.ads.model.AdropErrorCode
class SplashActivity : AppCompatActivity () {
private lateinit var splashAdView: AdropSplashAdView
override fun onCreate (savedInstanceState: Bundle ?) {
super . onCreate (savedInstanceState)
setContentView (R.layout.activity_splash)
// スプラッシュ広告ビューの初期化
splashAdView = AdropSplashAdView (
context = this ,
unitId = "YOUR_SPLASH_UNIT_ID" ,
adRequestTimeout = 1000L // 広告リクエストタイムアウト(ミリ秒)
)
// リスナーの設定
splashAdView.listener = object : AdropSplashAdViewListener {
override fun onAdReceived (ad: AdropSplashAdView ) {
println ( "スプラッシュ広告受信成功" )
}
override fun onAdFailedToReceive (ad: AdropSplashAdView , errorCode: AdropErrorCode ) {
println ( "スプラッシュ広告受信失敗: $errorCode " )
}
override fun onAdImpression (ad: AdropSplashAdView ) {
println ( "スプラッシュ広告インプレッション" )
}
override fun onAdClose (ad: AdropSplashAdView , impressed: Boolean ) {
println ( "スプラッシュ広告終了 - インプレッション: $impressed " )
goToMainActivity ()
}
}
// 広告のロードと表示
findViewById < ViewGroup >(android.R.id.content). addView (splashAdView)
splashAdView. load ()
}
private fun goToMainActivity () {
startActivity ( Intent ( this , MainActivity:: class .java))
finish ()
}
}
ステップ3:AndroidManifest.xmlの設定
< manifest xmlns:android = "http://schemas.android.com/apk/res/android" >
< application >
<!-- カスタムスプラッシュActivity -->
< activity
android:name = ".SplashActivity"
android:theme = "@style/Theme.App.Splash"
android:exported = "true" >
< intent-filter >
< action android:name = "android.intent.action.MAIN" />
< category android:name = "android.intent.category.LAUNCHER" />
</ intent-filter >
</ activity >
<!-- メインActivity -->
< activity
android:name = ".MainActivity"
android:exported = "false" />
</ application >
</ manifest >
AdropSplashAdViewプロパティ
プロパティ タイプ 説明 unitIdString広告ユニットID(読み取り専用) creativeIdString広告クリエイティブID(読み取り専用) isClosedBooleanスプラッシュ広告終了状態(読み取り専用) txIdStringトランザクションID(読み取り専用) campaignIdStringキャンペーンID(読み取り専用)
AdropSplashAdViewメソッド
リスナー
AdropSplashAdListener
AdropSplashAdを使用する際のリスナーです。
メソッド 必須 説明 onAdReceived(ad)任意 広告受信成功時に呼び出し onAdFailedToReceive(ad, errorCode)任意 広告受信失敗時に呼び出し onAdImpression(ad)任意 広告インプレッションが記録された時に呼び出し onAdClose(ad, impressed)任意 スプラッシュ広告終了時に呼び出し
AdropSplashAdViewListener
AdropSplashAdViewを使用する際のリスナーです。
メソッド 必須 説明 onAdReceived(ad)任意 広告受信成功時に呼び出し onAdFailedToReceive(ad, errorCode)任意 広告受信失敗時に呼び出し onAdImpression(ad)任意 広告インプレッションが記録された時に呼び出し onAdClose(ad, impressed)必須 スプラッシュ広告終了時に呼び出し。メイン画面遷移処理が必要
AdropSplashAdViewを使用する場合、onAdCloseメソッドを必ず実装してメイン画面への遷移処理を行う必要があります。
impressedパラメータ
onAdClose(ad, impressed)メソッドのimpressedパラメータは、広告が実際に表示されたかどうかを示します。
override fun onAdClose (ad: AdropSplashAdView , impressed: Boolean ) {
if (impressed) {
println ( "広告がユーザーに表示されました" )
// 広告表示後の処理ロジック
} else {
println ( "広告が表示されませんでした(ロード失敗またはスキップ)" )
// 広告未表示時の処理ロジック
}
// メイン画面へ遷移
goToMainActivity ()
}
impressedがfalseの場合
広告ロード失敗
ネットワークエラー
ユーザーが広告を見る前にスキップ
広告インベントリ不足
ベストプラクティス
1. 適切なタイマー設定
スプラッシュ広告は短すぎず長すぎないように表示する必要があります。
<!-- 推奨設定 -->
< integer name = "adrop_splash_ad_request_timeout" > 1000 </ integer > <!-- 1秒 -->
< integer name = "adrop_splash_ad_max_timeout" > 2000 </ integer > <!-- 2秒 -->
2. ロゴ画像の最適化
アプリロゴを適切なサイズで準備し、ロード時間を最小化してください。
drawable-mdpi/splash_logo.png (192px × 192px)
drawable-hdpi/splash_logo.png (288px × 288px)
drawable-xhdpi/splash_logo.png (384px × 384px)
drawable-xxhdpi/splash_logo.png (576px × 576px)
drawable-xxxhdpi/splash_logo.png (768px × 768px)
3. 失敗処理
広告ロード失敗時もアプリが正常に起動するよう処理してください。
override fun onAdFailedToReceive (ad: AdropSplashAdView , errorCode: AdropErrorCode ) {
println ( "広告ロード失敗: $errorCode " )
// 失敗してもメイン画面へ遷移
goToMainActivity ()
}
4. テスト環境の区別
開発と本番環境を区別してテストしてください。
val splashUnitId = if (BuildConfig.DEBUG) {
"PUBLIC_TEST_UNIT_ID_SPLASH"
} else {
"YOUR_PRODUCTION_SPLASH_UNIT_ID"
}
// SDK初期化
Adrop. initialize (application, production = ! BuildConfig.DEBUG)
5. メモリリーク防止
Activity終了時にリスナーをクリーンアップしてください。
override fun onDestroy () {
splashAdView.listener = null
super . onDestroy ()
}
テスト
テストユニットID
開発中はテストユニットIDを使用してください。
// テストユニットID
val testUnitId = "PUBLIC_TEST_UNIT_ID_SPLASH"
実際のリリース時には必ずAdropコンソールで作成した実際のユニットIDを使用してください。テストユニットIDでリリースすると広告収益が発生しません。
デバッグ
広告イベントをログで確認してください。
splashAdView.listener = object : AdropSplashAdViewListener {
override fun onAdReceived (ad: AdropSplashAdView ) {
Log. d ( "AdropSplash" , "広告受信成功" )
Log. d ( "AdropSplash" , " - unitId: ${ ad.unitId } " )
Log. d ( "AdropSplash" , " - creativeId: ${ ad.creativeId } " )
}
override fun onAdFailedToReceive (ad: AdropSplashAdView , errorCode: AdropErrorCode ) {
Log. e ( "AdropSplash" , "広告受信失敗: $errorCode " )
Log. e ( "AdropSplash" , " - ネットワーク状態を確認" )
Log. e ( "AdropSplash" , " - ユニットIDを確認: ${ ad.unitId } " )
}
override fun onAdImpression (ad: AdropSplashAdView ) {
Log. d ( "AdropSplash" , "広告インプレッション" )
Log. d ( "AdropSplash" , " - txId: ${ ad.txId } " )
Log. d ( "AdropSplash" , " - campaignId: ${ ad.campaignId } " )
}
override fun onAdClose (ad: AdropSplashAdView , impressed: Boolean ) {
Log. d ( "AdropSplash" , "広告終了" )
Log. d ( "AdropSplash" , " - impressed: $impressed " )
Log. d ( "AdropSplash" , " - isClosed: ${ ad.isClosed } " )
}
}
トラブルシューティング
AndroidManifest.xmlでAdropSplashAdActivityまたはカスタムSplashActivityがLAUNCHERとして設定されているか確認
android:exported="true"設定を確認
SDK初期化が完了しているか確認(Applicationクラス)
adrop_service.jsonファイルがassetsフォルダにあるか確認
ネットワーク接続状態を確認
ユニットIDが正しいか確認(strings.xmlまたはコード)
テスト環境ではproduction = false設定を確認
onAdFailedToReceiveエラーコードを確認
adrop_service.jsonファイルの内容が正しいか確認
adrop_splash_ad_next_activity設定が正しいか確認(完全なパッケージパス)
AdropSplashAdView使用時はonAdClose実装を確認
Activityの完全修飾名を確認(例:com.myapp.MainActivity)
ファイル名が正確にactivity_adrop_splash_ad.xmlであるか確認
android:id="@+id/adrop_splash_ad_image" IDを持つImageViewがあるか確認
アプリをクリーンビルド後に再実行(Build > Clean Project > Rebuild Project)
Android 12未満でシステムスプラッシュが表示されない
これは正常です。Android 12未満の端末ではシステムスプラッシュスクリーンがサポートされておらず、直接AdropSplashAdActivityが表示されます。
次のステップ