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する前に広告リクエストをおこなっていた場合、類似した事象が発生することが確認されております。
解決方法:
- 広告Viewの初期化とレイアウトへの追加を適切な順序で行う
- 広告リクエストの成功コールバック内で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: 以下の項目を確認してください:
- ネットワーク接続の確認
- インターネット接続が有効か確認
- AndroidManifest.xmlに必要な権限が追加されているか確認
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-
広告枠IDの確認
- 正しい広告枠IDが設定されているか確認
- テスト用と本番用のIDが適切に使い分けられているか確認
-
レイアウトの確認
- 広告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: 以下をリリース前に必ず確認してください:
- 本番用広告枠IDの設定
- デバッグ機能の無効化
- ProGuard設定の確認
- 権限設定の確認
- パフォーマンステスト
その他の質問
ご不明な点がございましたら、お問い合わせよりお問い合わせください。