> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adrop.io/llms.txt
> Use this file to discover all available pages before exploring further.

# リファレンス

> Adrop Android SDKのすべてのクラス、インターフェース、列挙型の詳細なリファレンスです。

## Adrop

Adrop SDKのメインクラスです。SDK初期化とグローバル設定を担当します。

### 静的メソッド

| メソッド                                                                                                       | 説明                                                                            |
| ---------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- |
| `initialize(context: Application, production: Boolean)`                                                    | SDKを初期化します。                                                                   |
| `initialize(context: Application, production: Boolean, targetCountries: Array<String>)`                    | ターゲット国を指定してSDKを初期化します。                                                        |
| `initialize(context: Application, production: Boolean, targetCountries: Array<String>, tokenKey: String?)` | ターゲット国とトークンキーを指定してSDKを初期化します。                                                 |
| `setUID(uid: String)`                                                                                      | ユーザー識別子を設定します。（SHA-256でハッシュ化）                                                 |
| `setTheme(theme: AdropTheme)`                                                                              | 広告テーマを設定します。                                                                  |
| `setTokenKey(tokenKey: String)`                                                                            | アプリトークンキーを設定します。                                                              |
| `handleDeepLink(intent: Intent): Boolean`                                                                  | Adropディープリンクを処理します。                                                           |
| `openQuest(context: Context, channel: String, path: String?)`                                              | Adrop Questページを開きます。                                                          |
| `registerWebView(webView: WebView)`                                                                        | バックフィル広告サポート用にWebViewを登録します。`adrop-ads-backfill`モジュールが必要です。メインスレッドで呼び出してください。 |

### 静的プロパティ

| プロパティ            | 型                      | 説明                                               |
| ---------------- | ---------------------- | ------------------------------------------------ |
| `isProduction`   | `Boolean`              | プロダクションモードかどうか                                   |
| `sdkVersion`     | `String`               | SDKバージョン                                         |
| `consentManager` | `AdropConsentManager?` | 同意マネージャーインスタンス（`adrop-ads-backfill`インストール時に自動設定） |

### 使用例

```kotlin theme={null}
// 初期化
Adrop.initialize(application, production = true)

// ユーザーID設定
Adrop.setUID("user123")

// テーマ設定
Adrop.setTheme(AdropTheme.DARK)

// ディープリンク処理
override fun onNewIntent(intent: Intent?) {
    super.onNewIntent(intent)
    intent?.let { Adrop.handleDeepLink(it) }
}
```

***

## AdropTheme

広告のダークモード設定のための列挙型です。

### 値

| 値       | 説明                 |
| ------- | ------------------ |
| `LIGHT` | ライトモード             |
| `DARK`  | ダークモード             |
| `AUTO`  | システム設定に自動追従（デフォルト） |

### 使用例

```kotlin theme={null}
Adrop.setTheme(AdropTheme.DARK)
```

***

## AdropErrorCode

広告の読み込みと表示時に発生する可能性のあるエラーコードです。

### 値

| エラーコード                                    | 説明              |
| ----------------------------------------- | --------------- |
| `ERROR_CODE_NETWORK`                      | ネットワークエラー       |
| `ERROR_CODE_INTERNAL`                     | 内部エラー           |
| `ERROR_CODE_INITIALIZE`                   | SDK初期化エラー       |
| `ERROR_CODE_INVALID_UNIT`                 | 無効な広告ユニットID     |
| `ERROR_CODE_NOT_TARGET_COUNTRY`           | ターゲット国ではない      |
| `ERROR_CODE_AD_INACTIVE`                  | 非アクティブな広告       |
| `ERROR_CODE_AD_NO_FILL`                   | 表示可能な広告がない      |
| `ERROR_CODE_AD_BACKFILL_NO_FILL`          | バックフィル広告なし      |
| `ERROR_CODE_AD_LOAD_DUPLICATED`           | 重複した広告読み込みリクエスト |
| `ERROR_CODE_AD_LOADING`                   | 広告読み込み中         |
| `ERROR_CODE_AD_EMPTY`                     | 広告が空            |
| `ERROR_CODE_AD_SHOWN`                     | 広告がすでに表示済み      |
| `ERROR_CODE_AD_HIDE_FOR_TODAY`            | 「今日は表示しない」が設定済み |
| `ERROR_CODE_ACCOUNT_USAGE_LIMIT_EXCEEDED` | アカウント使用量制限超過    |
| `ERROR_CODE_LANDSCAPE_UNSUPPORTED`        | 横向きモード非対応       |

***

## AdropAdChoicesPosition

バックフィルネイティブ広告のAdChoicesマーク表示位置を設定するenumです。

### Values

| Value          | Description |
| -------------- | ----------- |
| `TOP_LEFT`     | 左上          |
| `TOP_RIGHT`    | 右上（デフォルト）   |
| `BOTTOM_LEFT`  | 左下          |
| `BOTTOM_RIGHT` | 右下          |

### Usage Example

```kotlin theme={null}
val nativeAd = AdropNativeAd(this, "YOUR_UNIT_ID")
nativeAd.preferredAdChoicesPosition = AdropAdChoicesPosition.BOTTOM_RIGHT
nativeAd.load()
```

***

## AdropBanner

バナー広告を表示するビュークラスです。

### コンストラクタ

```kotlin theme={null}
// XMLで使用
AdropBanner(context: Context, attrs: AttributeSet?)

// コードで使用
AdropBanner(context: Context, unitId: String, contextId: String? = null)
```

### プロパティ

| プロパティ                   | 型                      | 説明                                |
| ----------------------- | ---------------------- | --------------------------------- |
| `listener`              | `AdropBannerListener?` | バナーイベントリスナー                       |
| `shouldAdjustHtmlStyle` | `Boolean`              | HTMLスタイル自動調整するかどうか（デフォルト: false）  |
| `useCustomClick`        | `Boolean`              | カスタムクリック処理を使用するかどうか（デフォルト: false） |
| `adSize`                | `CreativeSize?`        | バックフィル広告用バナーサイズ（dp）               |
| `contextId`             | `String`               | コンテキストID                          |
| `creativeId`            | `String`               | クリエイティブID                         |
| `txId`                  | `String`               | トランザクションID                        |
| `campaignId`            | `String`               | キャンペーンID                          |
| `destinationURL`        | `String`               | 遷移先URL                            |
| `creativeSize`          | `CreativeSize`         | クリエイティブサイズ                        |
| `isBackfilled`          | `Boolean`              | バックフィル広告かどうか                      |
| `browserTarget`         | `Int`                  | 目的地URLを開くブラウザターゲット                |

### メソッド

| メソッド                        | 説明             |
| --------------------------- | -------------- |
| `setUnitId(unitId: String)` | 広告ユニットID設定     |
| `getUnitId(): String`       | 広告ユニットID取得     |
| `load()`                    | 広告を読み込む        |
| `open(url: String?)`        | 広告ランディングページを開く |
| `destroy()`                 | バナー広告を削除       |

### Companionメソッド

| メソッド                                           | 説明                                                                |
| ---------------------------------------------- | ----------------------------------------------------------------- |
| `loads(context, unitId, contextId?, listener)` | 最大5個のバナー広告を一括ロード — [一括ロード](/ja/sdk/android/banner#一括ロード-loads) 参照 |

### 使用例

```kotlin theme={null}
val banner = AdropBanner(this, "YOUR_UNIT_ID")
banner.listener = object : AdropBannerListener {
    override fun onAdReceived(banner: AdropBanner) {
        // 広告受信成功
    }

    override fun onAdFailedToReceive(banner: AdropBanner, errorCode: AdropErrorCode) {
        // 広告受信失敗
    }

    override fun onAdClicked(banner: AdropBanner) {
        // 広告クリック
    }
}

// 広告を読み込む
banner.load()
```

***

## AdropBannerListener

バナー広告イベントを処理するインターフェースです。

### メソッド

| メソッド                                                                  | 説明                                |
| --------------------------------------------------------------------- | --------------------------------- |
| `onAdReceived(banner: AdropBanner)`                                   | 広告受信成功                            |
| `onAdClicked(banner: AdropBanner)`                                    | 広告クリック                            |
| `onAdImpression(banner: AdropBanner)`                                 | 広告表示（任意実装）                        |
| `onAdFailedToReceive(banner: AdropBanner, errorCode: AdropErrorCode)` | 広告受信失敗                            |
| `onAdVideoStart(banner: AdropBanner)`                                 | 動画再生開始（任意実装）                      |
| `onAdVideoEnd(banner: AdropBanner)`                                   | 動画再生終了（任意実装）                      |
| `onAdsReceived(banners: List<AdropBanner>)`                           | `AdropBanner.loads()`のバッチ受信（任意実装） |
| `onAdsFailedToReceive(errorCode: AdropErrorCode)`                     | `AdropBanner.loads()`のバッチ失敗（任意実装） |

<Note>
  すべてのコールバックはメインスレッドで呼び出されます（`@UiThread`）。
</Note>

***

## AdropNativeAd

ネイティブ広告を表示するクラスです。

### コンストラクタ

```kotlin theme={null}
AdropNativeAd(context: Context, unitId: String, contextId: String? = null)
```

### プロパティ

| プロパティ                        | 型                        | 説明                                                 |
| ---------------------------- | ------------------------ | -------------------------------------------------- |
| `unitId`                     | `String`                 | 広告ユニットID                                           |
| `contextId`                  | `String?`                | コンテキストID                                           |
| `listener`                   | `AdropNativeAdListener?` | ネイティブ広告イベントリスナー                                    |
| `useCustomClick`             | `Boolean`                | カスタムクリック処理を使用するかどうか                                |
| `preferredAdChoicesPosition` | `AdropAdChoicesPosition` | バックフィルネイティブ広告のAdChoicesマーク表示位置（デフォルト: `TOP_RIGHT`） |
| `context`                    | `Context`                | コンテキスト                                             |
| `isLoaded`                   | `Boolean`                | 広告読み込み完了かどうか                                       |
| `isDestroyed`                | `Boolean`                | 広告が削除されたかどうか                                       |
| `creativeId`                 | `String`                 | クリエイティブID                                          |
| `txId`                       | `String`                 | トランザクションID                                         |
| `campaignId`                 | `String`                 | キャンペーンID                                           |
| `creativeSize`               | `CreativeSize`           | クリエイティブサイズ                                         |
| `icon`                       | `String`                 | アイコン画像URL                                          |
| `cover`                      | `String`                 | カバー画像URL                                           |
| `headline`                   | `String`                 | 見出し                                                |
| `body`                       | `String`                 | 本文                                                 |
| `creative`                   | `String`                 | クリエイティブURL                                         |
| `asset`                      | `String`                 | アセットURL                                            |
| `destinationURL`             | `String`                 | 遷移先URL                                             |
| `advertiser`                 | `String`                 | **非推奨。** `profile.displayName`を使用してください。           |
| `advertiserURL`              | `String`                 | **非推奨。** `profile.link`を使用してください。                  |
| `accountTag`                 | `JSONObject`             | **非推奨。** サポートが終了しました。                              |
| `creativeTag`                | `JSONObject`             | **非推奨。** サポートが終了しました。                              |
| `callToAction`               | `String`                 | コールトゥアクションテキスト                                     |
| `extra`                      | `JSONObject`             | 追加データ                                              |
| `profile`                    | `AdropNativeAdProfile`   | プロフィール情報                                           |
| `isBackfilled`               | `Boolean`                | バックフィル広告かどうか                                       |
| `browserTarget`              | `Int`                    | 目的地URLを開くブラウザターゲット                                 |

### メソッド

| メソッド        | 説明      |
| ----------- | ------- |
| `load()`    | 広告を読み込む |
| `destroy()` | 広告を削除   |

### Companionメソッド

| メソッド                                           | 説明                                                                  |
| ---------------------------------------------- | ------------------------------------------------------------------- |
| `loads(context, unitId, contextId?, listener)` | 最大5個のネイティブ広告を一括ロード — [一括ロード](/ja/sdk/android/native#一括ロード-loads) 参照 |

### 使用例

```kotlin theme={null}
val nativeAd = AdropNativeAd(this, "YOUR_UNIT_ID")
nativeAd.listener = object : AdropNativeAdListener {
    override fun onAdReceived(ad: AdropNativeAd) {
        // 広告データをバインド
        headlineTextView.text = ad.headline
        bodyTextView.text = ad.body
        advertiserTextView.text = ad.advertiser
        ctaButton.text = ad.callToAction

        // ビューに広告を設定
        nativeAdView.setNativeAd(ad)
    }

    override fun onAdFailedToReceive(ad: AdropNativeAd, errorCode: AdropErrorCode) {
        // 広告受信失敗
    }

    override fun onAdClicked(ad: AdropNativeAd) {
        // 広告クリック
    }
}

nativeAd.load()
```

***

## AdropNativeAdView

ネイティブ広告をレンダリングするコンテナビューです。

### コンストラクタ

```kotlin theme={null}
AdropNativeAdView(context: Context, attrs: AttributeSet?)
```

### プロパティ

| プロパティ           | 型         | 説明             |
| --------------- | --------- | -------------- |
| `isEntireClick` | `Boolean` | 全体領域クリック可能かどうか |

### メソッド

| メソッド                                                         | 説明                         |
| ------------------------------------------------------------ | -------------------------- |
| `setIconView(view: View, listener: OnClickListener?)`        | アイコンビュー設定（ImageViewのみ）     |
| `setHeadLineView(view: View, listener: OnClickListener?)`    | 見出しビュー設定（TextViewのみ）       |
| `setBodyView(view: View)`                                    | 本文ビュー設定（TextViewのみ）        |
| `setMediaView(view: AdropMediaView)`                         | メディアビュー設定                  |
| `setAdvertiserView(view: View, listener: OnClickListener?)`  | 広告主ビュー設定（TextViewのみ）       |
| `setCallToActionView(view: View)`                            | コールトゥアクションボタンビュー設定         |
| `setProfileNameView(view: View, listener: OnClickListener?)` | プロフィール名ビュー設定               |
| `setProfileLogoView(view: View, listener: OnClickListener?)` | プロフィールロゴビュー設定（ImageViewのみ） |
| `setNativeAd(ad: AdropNativeAd)`                             | ネイティブ広告を設定                 |
| `destroy()`                                                  | ビューを削除                     |

### 使用例

```kotlin theme={null}
// レイアウトからビューを参照
val nativeAdView = findViewById<AdropNativeAdView>(R.id.native_ad_view)
val iconView = findViewById<ImageView>(R.id.ad_icon)
val headlineView = findViewById<TextView>(R.id.ad_headline)
val bodyView = findViewById<TextView>(R.id.ad_body)
val mediaView = findViewById<AdropMediaView>(R.id.ad_media)
val advertiserView = findViewById<TextView>(R.id.ad_advertiser)
val ctaView = findViewById<Button>(R.id.ad_cta)

// ビューを設定
nativeAdView.setIconView(iconView)
nativeAdView.setHeadLineView(headlineView)
nativeAdView.setBodyView(bodyView)
nativeAdView.setMediaView(mediaView)
nativeAdView.setAdvertiserView(advertiserView)
nativeAdView.setCallToActionView(ctaView)

// 広告読み込み後に設定
nativeAd.listener = object : AdropNativeAdListener {
    override fun onAdReceived(ad: AdropNativeAd) {
        nativeAdView.setNativeAd(ad)
    }
}
```

***

## AdropNativeAdListener

ネイティブ広告イベントを処理するインターフェースです。

### メソッド

| メソッド                                                                | 説明                                  |
| ------------------------------------------------------------------- | ----------------------------------- |
| `onAdReceived(ad: AdropNativeAd)`                                   | 広告受信成功                              |
| `onAdClicked(ad: AdropNativeAd)`                                    | 広告クリック                              |
| `onAdImpression(ad: AdropNativeAd)`                                 | 広告表示（任意実装）                          |
| `onAdFailedToReceive(ad: AdropNativeAd, errorCode: AdropErrorCode)` | 広告受信失敗                              |
| `onAdVideoStart(ad: AdropNativeAd)`                                 | 動画再生開始（任意実装）                        |
| `onAdVideoEnd(ad: AdropNativeAd)`                                   | 動画再生終了（任意実装）                        |
| `onAdsReceived(ads: List<AdropNativeAd>)`                           | `AdropNativeAd.loads()`のバッチ受信（任意実装） |
| `onAdsFailedToReceive(errorCode: AdropErrorCode)`                   | `AdropNativeAd.loads()`のバッチ失敗（任意実装） |

<Note>
  すべてのコールバックはメインスレッドで呼び出されます（`@UiThread`）。
</Note>

***

## AdropNativeAdProfile

ネイティブ広告のプロフィール情報を含むデータクラスです。

### プロパティ

| プロパティ         | 型        | 説明            |
| ------------- | -------- | ------------- |
| `displayLogo` | `String` | プロフィールロゴ画像URL |
| `displayName` | `String` | プロフィール名       |
| `link`        | `String` | プロフィールリンクURL  |

### 使用例

```kotlin theme={null}
val profile = nativeAd.profile
profileNameTextView.text = profile.displayName
// プロフィールロゴをImageViewに読み込む
```

***

## AdropMediaView

ネイティブ広告のメディアコンテンツを表示するビューです。

### コンストラクタ

```kotlin theme={null}
AdropMediaView(context: Context, attrs: AttributeSet?)
```

### 説明

メディアビューはネイティブ広告の画像や動画コンテンツを表示します。`AdropNativeAdView`の`setMediaView()`メソッドを通じて設定する必要があります。

***

## AdropInterstitialAd

インタースティシャル広告を表示するクラスです。

### コンストラクタ

```kotlin theme={null}
AdropInterstitialAd(context: Context, unitId: String)
```

### プロパティ

| プロパティ                    | 型                                   | 説明                      |
| ------------------------ | ----------------------------------- | ----------------------- |
| `interstitialAdListener` | `AdropInterstitialAdListener?`      | インタースティシャル広告イベントリスナー    |
| `closeListener`          | `AdropInterstitialAdCloseListener?` | インタースティシャル広告閉じるイベントリスナー |
| `context`                | `Context?`                          | コンテキスト                  |
| `unitId`                 | `String`                            | 広告ユニットID                |
| `isLoaded`               | `Boolean`                           | 広告読み込み完了かどうか            |
| `creativeId`             | `String`                            | クリエイティブID               |
| `txId`                   | `String`                            | トランザクションID              |
| `campaignId`             | `String`                            | キャンペーンID                |
| `isBackfilled`           | `Boolean`                           | バックフィル広告かどうか            |
| `browserTarget`          | `Int`                               | 目的地URLを開くブラウザターゲット      |

### メソッド

| メソッド                           | 説明                     |
| ------------------------------ | ---------------------- |
| `load()`                       | 広告を読み込む                |
| `show(fromActivity: Activity)` | 広告を表示                  |
| `close()`                      | プログラムでインタースティシャル広告を閉じる |
| `destroy()`                    | 広告を削除                  |

### 使用例

```kotlin theme={null}
val interstitialAd = AdropInterstitialAd(this, "YOUR_UNIT_ID")

interstitialAd.interstitialAdListener = object : AdropInterstitialAdListener {
    override fun onAdReceived(ad: AdropInterstitialAd) {
        // 広告読み込み完了、表示可能
        ad.show(this@MainActivity)
    }

    override fun onAdFailedToReceive(ad: AdropInterstitialAd, errorCode: AdropErrorCode) {
        // 広告受信失敗
    }

    override fun onAdDidDismissFullScreen(ad: AdropInterstitialAd) {
        // 広告が閉じられた
    }
}

// 広告を読み込む
interstitialAd.load()
```

***

## AdropInterstitialAdListener

インタースティシャル広告イベントを処理するインターフェースです。

### メソッド

| メソッド                                                                             | 説明                   |
| -------------------------------------------------------------------------------- | -------------------- |
| `onAdReceived(ad: AdropInterstitialAd)`                                          | 広告受信成功               |
| `onAdFailedToReceive(ad: AdropInterstitialAd, errorCode: AdropErrorCode)`        | 広告受信失敗               |
| `onAdImpression(ad: AdropInterstitialAd)`                                        | 広告表示（任意実装）           |
| `onAdClicked(ad: AdropInterstitialAd)`                                           | 広告クリック（任意実装）         |
| `onAdWillPresentFullScreen(ad: AdropInterstitialAd)`                             | フルスクリーン広告表示開始（任意実装）  |
| `onAdDidPresentFullScreen(ad: AdropInterstitialAd)`                              | フルスクリーン広告表示完了（任意実装）  |
| `onAdWillDismissFullScreen(ad: AdropInterstitialAd)`                             | フルスクリーン広告閉じる開始（任意実装） |
| `onAdDidDismissFullScreen(ad: AdropInterstitialAd)`                              | フルスクリーン広告閉じる完了（任意実装） |
| `onAdFailedToShowFullScreen(ad: AdropInterstitialAd, errorCode: AdropErrorCode)` | 広告表示失敗（任意実装）         |

<Note>
  すべてのコールバックはメインスレッドで呼び出されます（`@UiThread`）。
</Note>

***

## AdropInterstitialAdCloseListener

インタースティシャル広告の閉じるイベントを処理するインターフェースです。

### メソッド

| メソッド                                     | 説明                                        |
| ---------------------------------------- | ----------------------------------------- |
| `onBackPressed(ad: AdropInterstitialAd)` | インタースティシャル広告表示中に戻るボタンが押された時に呼び出されます（任意実装） |

<Note>
  すべてのコールバックはメインスレッドで呼び出されます（`@UiThread`）。
</Note>

***

## AdropRewardedAd

リワード広告を表示するクラスです。

### コンストラクタ

```kotlin theme={null}
AdropRewardedAd(context: Context, unitId: String)
```

### プロパティ

| プロパティ                           | 型                                | 説明                                  |
| ------------------------------- | -------------------------------- | ----------------------------------- |
| `rewardedAdListener`            | `AdropRewardedAdListener?`       | リワード広告イベントリスナー                      |
| `context`                       | `Context?`                       | コンテキスト                              |
| `unitId`                        | `String`                         | 広告ユニットID                            |
| `isLoaded`                      | `Boolean`                        | 広告読み込み完了かどうか                        |
| `creativeId`                    | `String`                         | クリエイティブID                           |
| `txId`                          | `String`                         | トランザクションID                          |
| `campaignId`                    | `String`                         | キャンペーンID                            |
| `isBackfilled`                  | `Boolean`                        | バックフィル広告かどうか                        |
| `serverSideVerificationOptions` | `ServerSideVerificationOptions?` | サーバーサイド検証オプション (userId, customData) |
| `browserTarget`                 | `Int`                            | 目的地URLを開くブラウザターゲット                  |

### メソッド

| メソッド                                                                                    | 説明                  |
| --------------------------------------------------------------------------------------- | ------------------- |
| `load()`                                                                                | 広告を読み込む             |
| `show(fromActivity: Activity, userDidEarnRewardHandler: AdropUserDidEarnRewardHandler)` | 広告を表示してリワードハンドラーを設定 |
| `destroy()`                                                                             | 広告を削除               |

### 使用例

```kotlin theme={null}
val rewardedAd = AdropRewardedAd(this, "YOUR_UNIT_ID")

rewardedAd.rewardedAdListener = object : AdropRewardedAdListener {
    override fun onAdReceived(ad: AdropRewardedAd) {
        // 広告読み込み完了
        ad.show(this@MainActivity) { type, amount ->
            // リワード付与
            Log.d("Reward", "Type: $type, Amount: $amount")
        }
    }

    override fun onAdFailedToReceive(ad: AdropRewardedAd, errorCode: AdropErrorCode) {
        // 広告受信失敗
    }
}

rewardedAd.load()
```

***

## AdropRewardedAdListener

リワード広告イベントを処理するインターフェースです。

### メソッド

| メソッド                                                                         | 説明                   |
| ---------------------------------------------------------------------------- | -------------------- |
| `onAdReceived(ad: AdropRewardedAd)`                                          | 広告受信成功               |
| `onAdFailedToReceive(ad: AdropRewardedAd, errorCode: AdropErrorCode)`        | 広告受信失敗               |
| `onAdImpression(ad: AdropRewardedAd)`                                        | 広告表示（任意実装）           |
| `onAdClicked(ad: AdropRewardedAd)`                                           | 広告クリック（任意実装）         |
| `onAdWillPresentFullScreen(ad: AdropRewardedAd)`                             | フルスクリーン広告表示開始（任意実装）  |
| `onAdDidPresentFullScreen(ad: AdropRewardedAd)`                              | フルスクリーン広告表示完了（任意実装）  |
| `onAdWillDismissFullScreen(ad: AdropRewardedAd)`                             | フルスクリーン広告閉じる開始（任意実装） |
| `onAdDidDismissFullScreen(ad: AdropRewardedAd)`                              | フルスクリーン広告閉じる完了（任意実装） |
| `onAdFailedToShowFullScreen(ad: AdropRewardedAd, errorCode: AdropErrorCode)` | 広告表示失敗（任意実装）         |

<Note>
  すべてのコールバックはメインスレッドで呼び出されます（`@UiThread`）。
</Note>

***

## AdropUserDidEarnRewardHandler

リワード付与時に呼び出される型エイリアスです。

### 定義

```kotlin theme={null}
typealias AdropUserDidEarnRewardHandler = (type: Int, amount: Int) -> Unit
```

### パラメータ

| パラメータ    | 型     | 説明      |
| -------- | ----- | ------- |
| `type`   | `Int` | リワードタイプ |
| `amount` | `Int` | リワード数量  |

### 使用例

```kotlin theme={null}
rewardedAd.show(this) { type, amount ->
    // ユーザーにリワードを付与
    when (type) {
        0 -> grantCoins(amount)
        1 -> grantLives(amount)
    }
}
```

***

## AdropPopupAd

ポップアップ広告を表示するクラスです。

### コンストラクタ

```kotlin theme={null}
AdropPopupAd(context: Context, unitId: String)
```

### プロパティ

| プロパティ                   | 型                            | 説明                  |
| ----------------------- | ---------------------------- | ------------------- |
| `popupAdListener`       | `AdropPopupAdListener?`      | ポップアップ広告イベントリスナー    |
| `closeListener`         | `AdropPopupAdCloseListener?` | ポップアップ閉じるイベントリスナー   |
| `useCustomClick`        | `Boolean`                    | カスタムクリック処理を使用するかどうか |
| `closeTextColor`        | `Int?`                       | 閉じるボタンテキスト色         |
| `hideForTodayTextColor` | `Int?`                       | 「今日は表示しない」テキスト色     |
| `ctaTextColor`          | `Int?`                       | CTAボタンテキスト色         |
| `backgroundColor`       | `Int?`                       | 背景色                 |
| `unitId`                | `String`                     | 広告ユニットID            |
| `creativeIds`           | `List<String>`               | クリエイティブIDリスト        |
| `creativeId`            | `String`                     | 現在のクリエイティブID        |
| `destinationURL`        | `String`                     | 遷移先URL              |
| `isLoaded`              | `Boolean`                    | 広告読み込み完了かどうか        |
| `txId`                  | `String`                     | トランザクションID          |
| `campaignId`            | `String`                     | キャンペーンID            |
| `browserTarget`         | `Int`                        | 目的地URLを開くブラウザターゲット  |

### メソッド

| メソッド                       | 説明             |
| -------------------------- | -------------- |
| `load()`                   | 広告を読み込む        |
| `show(activity: Activity)` | 広告を表示          |
| `open(url: String?)`       | 広告ランディングページを開く |
| `close()`                  | 広告を閉じる         |
| `destroy()`                | 広告を削除          |

### 使用例

```kotlin theme={null}
val popupAd = AdropPopupAd(this, "YOUR_UNIT_ID")

// スタイルをカスタマイズ
popupAd.closeTextColor = Color.WHITE
popupAd.backgroundColor = Color.parseColor("#80000000")

popupAd.popupAdListener = object : AdropPopupAdListener {
    override fun onAdReceived(ad: AdropPopupAd) {
        // 広告読み込み完了
        ad.show(this@MainActivity)
    }

    override fun onAdFailedToReceive(ad: AdropPopupAd, errorCode: AdropErrorCode) {
        // 広告受信失敗
    }
}

popupAd.closeListener = object : AdropPopupAdCloseListener {
    override fun onTodayOffClicked(ad: AdropPopupAd) {
        // 「今日は表示しない」クリック
    }
}

popupAd.load()
```

***

## AdropPopupAdListener

ポップアップ広告イベントを処理するインターフェースです。

### メソッド

| メソッド                                                                      | 説明                   |
| ------------------------------------------------------------------------- | -------------------- |
| `onAdReceived(ad: AdropPopupAd)`                                          | 広告受信成功               |
| `onAdFailedToReceive(ad: AdropPopupAd, errorCode: AdropErrorCode)`        | 広告受信失敗               |
| `onAdImpression(ad: AdropPopupAd)`                                        | 広告表示（任意実装）           |
| `onAdClicked(ad: AdropPopupAd)`                                           | 広告クリック（任意実装）         |
| `onAdWillPresentFullScreen(ad: AdropPopupAd)`                             | フルスクリーン広告表示開始（任意実装）  |
| `onAdDidPresentFullScreen(ad: AdropPopupAd)`                              | フルスクリーン広告表示完了（任意実装）  |
| `onAdWillDismissFullScreen(ad: AdropPopupAd)`                             | フルスクリーン広告閉じる開始（任意実装） |
| `onAdDidDismissFullScreen(ad: AdropPopupAd)`                              | フルスクリーン広告閉じる完了（任意実装） |
| `onAdFailedToShowFullScreen(ad: AdropPopupAd, errorCode: AdropErrorCode)` | 広告表示失敗（任意実装）         |
| `onAdVideoStart(ad: AdropPopupAd)`                                        | 動画再生開始（任意実装）         |
| `onAdVideoEnd(ad: AdropPopupAd)`                                          | 動画再生終了（任意実装）         |

<Note>
  すべてのコールバックはメインスレッドで呼び出されます（`@UiThread`）。
</Note>

***

## AdropPopupAdCloseListener

ポップアップ広告の閉じるイベントを処理するインターフェースです。

### メソッド

| メソッド                                  | 説明                   |
| ------------------------------------- | -------------------- |
| `onClosed(ad: AdropPopupAd)`          | ポップアップを閉じる（任意実装）     |
| `onDimClicked(ad: AdropPopupAd)`      | ディム領域クリック（任意実装）      |
| `onTodayOffClicked(ad: AdropPopupAd)` | 「今日は表示しない」クリック（任意実装） |

<Note>
  すべてのコールバックはメインスレッドで呼び出されます（`@UiThread`）。
</Note>

***

## AdropSplashAd

スプラッシュ広告を表示するクラスです。

### コンストラクタ

```kotlin theme={null}
AdropSplashAd(application: Application, shouldSkip: ((splashAd: AdropSplashAd) -> Boolean)? = null)
```

### パラメータ

| パラメータ         | 型                               | 説明                   |
| ------------- | ------------------------------- | -------------------- |
| `application` | `Application`                   | アプリケーションインスタンス       |
| `shouldSkip`  | `((AdropSplashAd) -> Boolean)?` | スプラッシュ広告スキップ判定関数（任意） |

### プロパティ

| プロパティ              | 型                        | 説明               |
| ------------------ | ------------------------ | ---------------- |
| `splashAdListener` | `AdropSplashAdListener?` | スプラッシュ広告イベントリスナー |
| `creativeId`       | `String`                 | クリエイティブID        |
| `isClosed`         | `Boolean`                | 広告が閉じられたかどうか     |
| `isDestroyed`      | `Boolean`                | 広告が削除されたかどうか     |
| `unitId`           | `String`                 | 広告ユニットID         |

### メソッド

| メソッド        | 説明                        |
| ----------- | ------------------------- |
| `close()`   | 広告を閉じる                    |
| `destroy()` | リソースを解放し、ライフサイクルコールバックを解除 |

### 使用例

```kotlin theme={null}
// AndroidManifest.xmlにAdropSplashAdActivityを追加する必要あり
class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        val splashAd = AdropSplashAd(this) { ad ->
            // 特定の条件でスキップ
            false
        }

        splashAd.splashAdListener = object : AdropSplashAdListener {
            override fun onAdReceived(ad: AdropSplashAd) {
                // 広告受信
            }

            override fun onAdClose(ad: AdropSplashAd, impressed: Boolean) {
                // 広告が閉じられた
            }
        }
    }
}
```

***

## AdropSplashAdListener

スプラッシュ広告イベントを処理するインターフェースです。

### メソッド

| メソッド                                                                | 説明             |
| ------------------------------------------------------------------- | -------------- |
| `onAdReceived(ad: AdropSplashAd)`                                   | 広告受信成功（任意実装）   |
| `onAdFailedToReceive(ad: AdropSplashAd, errorCode: AdropErrorCode)` | 広告受信失敗（任意実装）   |
| `onAdImpression(ad: AdropSplashAd)`                                 | 広告表示（任意実装）     |
| `onAdClose(ad: AdropSplashAd, impressed: Boolean)`                  | 広告が閉じられた（必須実装） |

### パラメータ

| パラメータ       | 型         | 説明              |
| ----------- | --------- | --------------- |
| `impressed` | `Boolean` | 広告が実際に表示されたかどうか |

<Note>
  すべてのコールバックはメインスレッドで呼び出されます（`@UiThread`）。
</Note>

***

## AdropSplashAdView

スプラッシュ広告をビューとして表示するクラスです。

### コンストラクタ

```kotlin theme={null}
AdropSplashAdView(context: Context, unitId: String, adRequestTimeout: Long = 1000L)
AdropSplashAdView(context: Context, attrs: AttributeSet?)
```

### プロパティ

| プロパティ             | 型                            | 説明                  |
| ----------------- | ---------------------------- | ------------------- |
| `listener`        | `AdropSplashAdViewListener?` | スプラッシュ広告ビューイベントリスナー |
| `displayDuration` | `Long`                       | 表示時間（非推奨：コンソールで設定）  |
| `creativeId`      | `String`                     | クリエイティブID           |
| `isClosed`        | `Boolean`                    | 広告が閉じられたかどうか        |
| `unitId`          | `String`                     | 広告ユニットID            |
| `txId`            | `String`                     | トランザクションID          |
| `campaignId`      | `String`                     | キャンペーンID            |

### メソッド

| メソッド        | 説明                          |
| ----------- | --------------------------- |
| `load()`    | 広告を読み込む                     |
| `destroy()` | リソースを解放（タイマー、可視性トラッカー、リスナー） |

### 使用例

```kotlin theme={null}
val splashAdView = AdropSplashAdView(this, "YOUR_UNIT_ID", adRequestTimeout = 2000L)

splashAdView.listener = object : AdropSplashAdViewListener {
    override fun onAdReceived(ad: AdropSplashAdView) {
        // 広告受信
    }

    override fun onAdClose(ad: AdropSplashAdView, impressed: Boolean) {
        // 広告が閉じられた - メイン画面に遷移
        if (impressed) {
            // 広告が表示された
        }
        startMainActivity()
    }
}

// レイアウトに追加
container.addView(splashAdView)
splashAdView.load()
```

***

## AdropSplashAdViewListener

スプラッシュ広告ビューイベントを処理するインターフェースです。

### メソッド

| メソッド                                                                    | 説明             |
| ----------------------------------------------------------------------- | -------------- |
| `onAdReceived(ad: AdropSplashAdView)`                                   | 広告受信成功（任意実装）   |
| `onAdFailedToReceive(ad: AdropSplashAdView, errorCode: AdropErrorCode)` | 広告受信失敗（任意実装）   |
| `onAdImpression(ad: AdropSplashAdView)`                                 | 広告表示（任意実装）     |
| `onAdClose(ad: AdropSplashAdView, impressed: Boolean)`                  | 広告が閉じられた（必須実装） |

<Note>
  すべてのコールバックはメインスレッドで呼び出されます（`@UiThread`）。
</Note>

***

## AdropKey

ユーザープロパティキーを定義するクラスです。

### 定数

| 定数       | 値         | 説明   |
| -------- | --------- | ---- |
| `AGE`    | `"AGE"`   | 年齢   |
| `BIRTH`  | `"BIRTH"` | 生年月日 |
| `GENDER` | `"GDR"`   | 性別   |

### 使用例

```kotlin theme={null}
val params = AdropEventParam.Builder()
    .putInt(AdropKey.AGE, 25)
    .putString(AdropKey.GENDER, AdropValue.AdropGender.MALE)
    .putString(AdropKey.BIRTH, "19990101")
    .build()
```

***

## AdropValue

ユーザープロパティ値を定義するクラスです。

### 共通定数

| 定数        | 値     | 説明 |
| --------- | ----- | -- |
| `UNKNOWN` | `"U"` | 不明 |

### AdropBirth

生年月日フォーマットを定義します。

| 定数                   | 値            | 説明                |
| -------------------- | ------------ | ----------------- |
| `formatYear`         | `"yyyy"`     | 年のみ（例：1999）       |
| `formatYearMonth`    | `"yyyyMM"`   | 年と月（例：199901）     |
| `formatYearMonthDay` | `"yyyyMMdd"` | 年、月、日（例：19990101） |

### AdropGender

性別値を定義します。

| 定数       | 値     | 説明  |
| -------- | ----- | --- |
| `MALE`   | `"M"` | 男性  |
| `FEMALE` | `"F"` | 女性  |
| `OTHER`  | `"O"` | その他 |

### 使用例

```kotlin theme={null}
val params = AdropEventParam.Builder()
    .putString(AdropKey.GENDER, AdropValue.AdropGender.MALE)
    .putString(AdropKey.BIRTH, "19990101") // formatYearMonthDayを使用
    .build()
```

***

## CreativeSize

クリエイティブのサイズを表すデータクラスです。

### プロパティ

| プロパティ    | 型        | 説明     |
| -------- | -------- | ------ |
| `width`  | `Double` | 幅（dp）  |
| `height` | `Double` | 高さ（dp） |

### 使用例

```kotlin theme={null}
val banner = AdropBanner(this, "YOUR_UNIT_ID")
banner.adSize = CreativeSize(320.0, 50.0)
```

***

## AdropEventParam

カスタムイベントパラメータを作成するクラスです。

### Builderメソッド

| メソッド                                      | 説明                             |
| ----------------------------------------- | ------------------------------ |
| `putBoolean(key: String, value: Boolean)` | Boolean値を追加                    |
| `putInt(key: String, value: Int)`         | Int値を追加                        |
| `putFloat(key: String, value: Float)`     | Float値を追加                      |
| `putString(key: String, value: String)`   | String値を追加（最大1024文字）           |
| `putLong(key: String, value: Long)`       | Long値を追加（最大値：9007199254740991） |
| `putItems(items: List<AdropEventParam>)`  | マルチアイテムイベント用のアイテムリストを追加        |
| `build()`                                 | AdropEventParamインスタンスを生成       |

### 使用例

```kotlin theme={null}
val params = AdropEventParam.Builder()
    .putString(AdropKey.GENDER, AdropValue.AdropGender.MALE)
    .putInt(AdropKey.AGE, 25)
    .putString(AdropKey.BIRTH, "19990101")
    .build()
```

<Note>
  * パラメータキーは1〜64文字である必要があります。
  * 文字列値は最大1024文字までです。
  * `putLong()`に渡す値はJavaScriptのMAX\_SAFE\_INTEGER（9007199254740991）を超えることはできません。
</Note>

***

## AdropMetrics

ユーザーイベントとプロパティを管理するシングルトンオブジェクトです。

### 静的プロパティ

| プロパティ             | 型            | 説明                               |
| ----------------- | ------------ | -------------------------------- |
| `userDataConsent` | `Boolean`    | 現在のユーザーデータ同意ステータス（デフォルト: `true`） |
| `properties`      | `JSONObject` | 現在のカスタムユーザープロパティ                 |

### 静的メソッド

| メソッド                                                | 説明                                                                |
| --------------------------------------------------- | ----------------------------------------------------------------- |
| `sendEvent(name: String, params: AdropEventParam?)` | ユーザーイベントを送信                                                       |
| `logEvent(name: String, params: AdropEventParam?)`  | **非推奨。** `sendEvent`を使用してください。                                    |
| `setProperty(key: String, value: Any?)`             | ターゲティング用のユーザープロパティを設定                                             |
| `setUserDataConsent(consent: Boolean)`              | ユーザーデータ収集の同意ステータスを設定します。`false`の場合、サーバー送信がブロックされます（ローカルストレージは許可）。 |

<Warning>
  `logEvent()`は非推奨であり、将来のバージョンで削除されます。`sendEvent()`を使用してください。
</Warning>

### sendEvent

オプションのパラメータと共にユーザーイベントを送信します。

```kotlin theme={null}
// シンプルなイベント（パラメータなし）
AdropMetrics.sendEvent("app_open")

// パラメータ付きイベント
val params = AdropEventParam.Builder()
    .putString("item_id", "SKU-123")
    .putString("item_name", "Widget")
    .putFloat("price", 29.99f)
    .build()
AdropMetrics.sendEvent("view_item", params)

// マルチアイテムイベント（例：購入）
val item1 = AdropEventParam.Builder()
    .putString("item_id", "A")
    .putString("item_name", "Product A")
    .putInt("price", 100)
    .putInt("quantity", 1)
    .build()
val item2 = AdropEventParam.Builder()
    .putString("item_id", "B")
    .putString("item_name", "Product B")
    .putInt("price", 200)
    .putInt("quantity", 2)
    .build()
val purchaseParams = AdropEventParam.Builder()
    .putString("tx_id", "tx_123")
    .putString("currency", "KRW")
    .putItems(listOf(item1, item2))
    .build()
AdropMetrics.sendEvent("purchase", purchaseParams)
```

<Note>
  * イベント名は1〜64文字である必要があります。
  * 同じ名前とパラメータを持つ重複イベントは500ms以内の送信が制限されます。
  * `sendEvent()`を呼び出す前にSDKを初期化する必要があります。
</Note>
