メインコンテンツまでスキップ

FAQ(Android)

よくある質問

SDKの導入について

Q: Gradleでリポジトリが見つからないエラーが出ます

A: build.gradleにAd Generation SDKのリポジトリを正しく追加してください。

allprojects {
repositories {
google()
mavenCentral()
// Ad Generation SDKリポジトリを追加
maven {
url "https://adgeneration.github.io/ADG-Android-SDK/repository"
}
}
}

Q: LAP連携時にアプリがクラッシュするのですが?

エラー: java.lang.IllegalArgumentException: Cannot add a null child view to a ViewGroup

A: 広告を表示するViewをActivityにaddViewする前に広告リクエストをおこなっていた場合、類似した事象が発生することが確認されております。

解決方法:

  1. 広告Viewの初期化とレイアウトへの追加を適切な順序で行う
  2. 広告リクエストの成功コールバック内でViewの追加を行う
// 正しい実装例
class MainActivity : AppCompatActivity() {
private lateinit var adView: ADG

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

// 1. 広告Viewの初期化
adView = ADG(this)
adView.setLocationId("YOUR_LOCATION_ID")
adView.setAdFrameSize(ADG.AdFrameSize.BANNER)

// 2. リスナー設定
adView.setAdListener(object : ADGListener() {
override fun onReceiveAd() {
// 3. 広告取得成功時にレイアウトに追加
val container = findViewById<ViewGroup>(R.id.ad_container)
if (adView.parent == null) {
container.addView(adView)
}
}

override fun onFailedToReceiveAd(error: ADGConsts.ADGErrorCode) {
Log.e("ADG", "Failed to load ad: $error")
}
})

// 4. 広告リクエスト開始
adView.start()
}
}

Q: ProGuardを使用するとアプリがクラッシュします

A: Ad Generation SDKに必要なProGuard設定を追加してください。

# Ad Generation SDK
-keep class jp.supership.adgeneration.** { *; }
-keep interface jp.supership.adgeneration.** { *; }

# Google Play Services(広告ID取得用)
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.google.android.gms.ads.identifier.**

広告表示について

Q: 広告が表示されません

A: 以下の項目を確認してください:

  1. ネットワーク接続の確認
    • インターネット接続が有効か確認
    • AndroidManifest.xmlに必要な権限が追加されているか確認
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  1. 広告枠IDの確認

    • 正しい広告枠IDが設定されているか確認
    • テスト用と本番用のIDが適切に使い分けられているか確認
  2. レイアウトの確認

    • 広告Viewがレイアウトに適切に追加されているか確認
    • 広告Viewのサイズが適切に設定されているか確認

Q: テスト広告が表示されません

A: テスト環境の設定を確認してください:

// デバッグビルドでテストモードを有効化
if (BuildConfig.DEBUG) {
ADG.setDebugMode(true)
}

// テスト用広告枠IDを使用
adView.setLocationId("TEST_LOCATION_ID")

Q: 広告のクリックが反応しません

A: ADGListenerのonClickAdメソッドが正しく実装されているか確認してください:

adView.setAdListener(object : ADGListener() {
override fun onClickAd() {
Log.d("ADG", "広告がクリックされました")
// クリック処理をここに記述
}
})

パフォーマンスについて

Q: アプリの起動が遅くなりました

A: 広告SDKの初期化を最適化してください:

// Application クラスで初期化
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()

// バックグラウンドスレッドで初期化
Thread {
// SDKの事前初期化処理
}.start()
}
}

Q: メモリリークが発生します

A: 適切なライフサイクル管理を実装してください:

class MainActivity : AppCompatActivity() {
private var adView: ADG? = null

override fun onDestroy() {
super.onDestroy()
// 広告リソースの解放
adView?.stop()
adView = null
}

override fun onPause() {
super.onPause()
adView?.pause()
}

override fun onResume() {
super.onResume()
adView?.resume()
}
}

エラーハンドリング

Q: エラーコードの意味を教えてください

A: 主要なエラーコードと対処法:

エラーコード意味対処法
NO_AD配信する広告がない正常な状態、リトライ不要
NEED_CONNECTIONネットワークエラーネットワーク接続を確認
EXCEED_LIMITリクエスト上限超過時間をおいてリトライ
AD_SIZE_ERROR広告サイズエラーサイズ設定を確認

Q: リトライ処理はどう実装すべきですか?

A: エラーコードに応じて適切なリトライ処理を実装してください:

override fun onFailedToReceiveAd(errorCode: ADGConsts.ADGErrorCode) {
when (errorCode) {
ADGConsts.ADGErrorCode.EXCEED_LIMIT,
ADGConsts.ADGErrorCode.NEED_CONNECTION,
ADGConsts.ADGErrorCode.NO_AD -> {
// リトライしない
Log.d("ADG", "リトライ不要なエラー: $errorCode")
}
else -> {
// その他のエラーはリトライ
Log.d("ADG", "リトライ実行: $errorCode")
Handler(Looper.getMainLooper()).postDelayed({
adView?.start()
}, 5000) // 5秒後にリトライ
}
}
}

開発・デバッグ

Q: デバッグログを有効にする方法は?

A: デバッグビルドでのみログを有効化してください:

if (BuildConfig.DEBUG) {
ADG.setDebugMode(true)
ADG.setLogLevel(ADG.LogLevel.VERBOSE)
}

Q: 本番リリース前の確認事項は?

A: 以下をリリース前に必ず確認してください:

  1. 本番用広告枠IDの設定
  2. デバッグ機能の無効化
  3. ProGuard設定の確認
  4. 権限設定の確認
  5. パフォーマンステスト

その他の質問

ご不明な点がございましたら、お問い合わせよりお問い合わせください。