Android
Adiz Android¶
Adiz Androidは、AdMobが提供する広告表示機能をより便利に使用できるようにHiveが提供するAndroid用広告モジュールです。Adiz Androidが提供する広告の形態は次のとおりです。
- インタースティシャル広告(Interstitial)
- バナー広告(Banner)
- ネイティブ広告(Native)
- 報酬型広告(Rewarded)
- 報酬型インタースティシャル広告(Rewarded Interstitial)
- アプリオープニング広告(AppOpen)
Adiz Androidをインストールして使用するには、以下のガイドを順番に参照してください。
インストール¶
モジュールのアプリレベルのGradleファイル(app/build.gradle)にAdizライブラリ項目を追加します。
Java 8機能サポートのために、モジュールのアプリレベルのGradleファイルにandroid
設定で以下のように追加します。
android {
// ...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
AndroidManifest.xml ファイルに AdMobId
(ca-app-pub-XXXXX~YYYYY 形式) を入力します。
<manifest>
<application>
<!-- Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713 -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
</application>
</manifest>
Proguardを使用する際、AdizモジュールにProGuardルールが含まれています。したがって、プロジェクトにProGuardルールを追加する必要はありません。
動画広告を表示するには、ハードウェアアクセラレーションを有効にする必要があります。 AndroidManifest.xml ファイルにハードウェアアクセラレーションの設定を追加します。 application
タグに追加すると、アプリケーション全体でハードウェアアクセラレーションが使用されます。 activity
タグに追加すると、広告を表示したい特定の Activity
のみでハードウェアアクセラレーションが使用されます。
<application android:hardwareAccelerated="true">
<!-- For activities that use ads, hardwareAcceleration should be true. -->
<activity android:hardwareAccelerated="true" />
</application>
テスト広告設定¶
Adizは2つの方法でテスト広告を表示できます。
- テストモードを有効化: AdMobから発行されたテスト用広告のみ表示
- テストデバイス登録後の広告表示: 実際の広告をテストするために表示し、無効なトラフィックが発生しないようにテストし、テスト広告を表示するデバイスを登録して進める
テストモードを有効にする¶
開発段階では、テスト広告をクリックしても広告主に費用が請求されないようにテストモードを有効にします。テストモードを有効にすると、テスト広告のみが表示されます。テストモードでは、コンソールにAdMob広告キーを入力しなくてもテスト広告が表示されます。商用配布時には、テストモードを無効にします。
テストモードを有効にする方法は2つあります。
- ハイブコンソールにテストデバイスを登録した後、デモ広告に設定することをお勧めします:
コンソールガイドのテストデバイス管理の内容を参照してください。 - Adizクラスの
setTestMode()
メソッドを使用する:
以下の例コードを参照してください。
Note
開発段階でテストモードでないときに広告を過剰にクリックすると、無効なトラフィックと見なされ、AdMobアカウントが報告されて広告が表示されなくなる可能性があります。
Adiz.setTestMode() メソッドの使用¶
import com.hive.adiz.Adiz;
import com.hive.adiz.AdizError;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
// テストモードを有効にします。商業配布の場合は以下の行をコメントアウトしてください。
Adiz.setTestMode(true);
// Hive Adizモジュールのログを有効にします。ログはテストモードでのみ使用する必要があります。商業配布の場合は、以下の行をコメントアウトしてください。
Adiz.setLogEnable(true);
テストデバイスに広告を表示¶
以下の状況では、テストデバイスを登録してテスト広告を表示する必要があります。
- コンソールに登録したAdMob広告キーが正常に動作するかテストする場合
- GDPRメッセージを作成し、GDPR同意ポップアップが正常に動作するか確認する場合
- 広告インスペクターを実行して広告リクエストを分析し、デバッグする場合
<
テスト機器に広告を表示する方法は2つあります。
-
ハイブコンソールにテストデバイスを登録後、広告ユニットIDを使用に設定すること (推奨):
コンソールガイドのテストデバイス管理の内容を参照してください。 -
Adiz クラスの
setTestDevice()
メソッドを使用する:
以下の 例コード を参照してください。
Note
テストデバイスを登録せずに実際の広告を表示するテストを行うと、無効なトラフィックと見なされ、AbMobアカウントがブロックされ、広告が表示されなくなる可能性があります。テストデバイスを登録すると、広告表示時に「Test Mode」または「Test Ad」(ネイティブ広告)が表示されます。商用配布時にはテストデバイスを無効にする必要があります。
Adiz.setTestDevice() メソッドの使用¶
テストデバイスを登録するには、まずテストデバイスIDを確認します。テストデバイスID(例:33BE2250B43518CCDA7DE426D04EE231
)は以下の2つの方法で確認できます。
-
Adiz.Initialize()
を呼び出した後、Logcat ログを確認してください: -
Adiz.Initialize()
を呼び出した後、広告タイプに関係なくinitialize()
→load()
を呼び出し、Logcat ログを確認してください:
テストデバイスIDを確認後、既存のAdiz初期化コードでAdiz.initialize
を実行する前にAdiz.setTestDevice(DEVICE_ID)
の行を追加します。DEVICE_ID
にはコピーしたテストデバイスIDを入力します。
import com.hive.Adiz
import com.hive.adiz.AdizError
import org.json.JSONObject
fun initialize() {
Adiz.setTestDevice("33BE2250B43518CCDA7DE426D04EE231")
Adiz.initialize(activity, object : Adiz.SdkInitializationListener {
override fun onComplete(error: AdizError, jsonData: JSONObject?) {
// ... 省略
}
})
}
import com.hive.Adiz;
import com.hive.adiz.AdizError;
import org.json.JSONObject;
public void initialize() {
Adiz.setTestDevice("33BE2250B43518CCDA7DE426D04EE231");
Adiz.initialize(activity, new Adiz.SdkInitializationListener() {
@Override
public void onComplete(@NonNull AdizError error, @Nullable JSONObject jsonData) {
if(error.isSuccess()) {
// ... 生略
}
}
});
}
import com.hive.Adiz;
import com.hive.adiz.AdizError;
import org.json.JSONObject;
public void initialize() {
Adiz.setTestDevice("33BE2250B43518CCDA7DE426D04EE231");
Adiz.initialize(activity, new Adiz.SdkInitializationListener() {
@Override
public void onComplete(@NonNull AdizError error, @Nullable JSONObject jsonData) {
if(error.isSuccess()) {
// ... 省略
}
}
});
}
広告インスペクターの活用¶
広告インスペクターは、テストデバイス上で実際の広告をリクエストし、表示するプロセスをリアルタイムで分析するインアプリオーバーレイツールです。広告をロードするのにかかった時間を知らせ、表示に失敗した場合はその理由を教えてくれます。また、特定の広告ネットワークを指定して広告が適切に表示されているか確認でき、問題があればコードレベルでデバッグを行うことができます。このすべてのプロセスは広告インスペクターUIと共に進行します。Google Mobile Ads SDK Android 20.0.0以上に含まれており、AdizDeveloperTool.openAdInspector
を呼び出して使用できます。
広告検査ツールを使用するには、テストデバイスに広告表示が設定されている必要があります。
Adiz AppID 設定¶
コンソール AppCenterに登録した Adiz AppID を設定します。未設定の場合は AndroidManifest.xml パッケージ名を使用します。
Hive コンソールサーバー設定¶
使用する Hive コンソールサーバーを設定します。デフォルトは REAL
です。商用サーバーを使用しても、テストモードを有効にするとテスト広告のみが表示されます。
- Hive テストコンソールサーバー:
ZoneType.TEST
- Hive サンドボックスコンソールサーバー:
ZoneType.SANDBOX
- Hive 商用コンソールサーバー:
ZoneType.REAL
GDPR同意ポップアップの表示(ヨーロッパ、イギリス)¶
ゲームがヨーロッパおよびイギリス(EEA & UK)をターゲットにしている場合、GDPR(欧州連合一般データ保護規則)同意ポップアップを表示する必要があります。GDPR同意ポップアップは、ユーザーのデバイスのIPアドレスがヨーロッパおよびイギリス(EEA & UK)のIPアドレスである場合にのみ表示されます。AdizはGDPR同意ポップアップの表示のためにGoogle UMP(ユーザーメッセージングプラットフォーム)をサポートしています。AdMobコンソールでGDPRメッセージを作成した後に Adizを初期化すると、ヨーロッパおよびイギリス地域からアクセスしたユーザーにGDPRポップアップが表示されます。
Warning
ヨーロッパおよびイギリス以外の地域をターゲットにする場合、例えば国内でのみサービスを計画している場合は GDPR同意ポップアップの表示(ヨーロッパ、イギリス) ステップをスキップし、Adiz.initializeForNonGDPR()
メソッドを使用して初期化を進めることができます。
Adiz.initialize()
メソッドを使用して初期化を進める場合、AdMobコンソールでGDPRメッセージを作成する必要があり、そうしないとAdizの初期化は正常に進行しません。
GDPRメッセージ作成¶
Google AdMobコンソールにアクセスしてGDPRメッセージを作成します。GDPRメッセージを作成する前に、まずGDPRメッセージ作成ガイドを参照してください。
GDPRメッセージを作成した場合、Adiz初期化時に自動的にGDPR同意ポップアップが表示されます。
GDPR同意/撤回機能の実装¶
GDPR同意ポップアップにある項目は、ユーザーが同意の有無をいつでも修正できるように修正機能を提供する必要があります。例えば、ユーザーが最初はGDPRに同意しなかったが、カスタマイズ広告を見るために再度同意を希望する場合や、逆に最初はGDPRに同意したが、もう個人情報を提供したくないために同意を撤回したい場合があります。このような状況に対応するために、アプリ開発者は各項目に再度同意するか、既存の同意を撤回する機能を実装する必要があります。GDPR同意/撤回機能を実装するには、次のステップに従います。
- GDPR同意ポップアップを再表示するボタンUIをアプリに実装します。
- Adiz初期化を実装する際に
isPrivacyOptionsRequired()
を呼び出し、ヨーロッパおよびイギリスからアクセスするユーザーには上記のボタンUIを表示し、それ以外の場合は表示しないように実装します。ヨーロッパおよびイギリスからアクセスするユーザーが上記のボタンを押すとshowPrivacyOptionsForm
を呼び出してGDPR同意ポップアップを再表示します。これにより、ユーザーはアプリ内でいつでも「Manage Options」のようなボタンを押してGDPRの詳細項目の同意状況を修正できます。以下のshowPrivacyOptionsForm
は例示のために任意に実装したメソッドであり、開発者が望む形に実装を変更することができます。
import com.hive.Adiz
import com.hive.adiz.AdizError
import com.hive.AdizConsentManager
import org.json.JSONObject
fun initialize() {
// ...
Adiz.initialize(activity, object : Adiz.SdkInitializationListener {
override fun onComplete(error: AdizError, jsonData: JSONObject?) {
if(error.isSuccess) {
// ... 省略
// GDPR同意ポップアップを再表示するボタンをアプリに表示するかどうかを決定
var isPrivacyOptionsRequired = AdizConsentManager.isPrivacyOptionsRequired()
if(isPrivacyOptionsRequired) {
// ボタンをアプリに表示する。(ボタンクリック時にshowPrivacyOptionsForm()を呼び出してGDPR同意ポップアップを表示する)
showGDPRConsentPopupButton()
} else {
// ボタンをアプリに表示しない。
// その他アプリで希望する処理。
}
}
}
})
}
fun showPrivacyOptionsForm(activity: Activity) {
// GDPR同意オプションフォーム呼び出し
if(AdizConsentManager.isPrivacyOptionsRequired()) {
AdizConsentManager.showPrivacyOptionsForm(activity, object : AdizConsentManager.ConsentListener {
override fun onResult(error: AdizError) {
addLog("AdizConsentManager.showPrivacyOptionsForm() errorCode : ${error.getCode()}, errorMessage : ${error.getMessage()}}\n")
// エラーハンドリングは必要ありません。
}
})
}
}
import com.hive.adiz.Adiz;
import com.hive.adiz.AdizError;
import com.hive.AdizConsentManager;
import org.json.JSONObject;
public void initialize() {
Adiz.initialize(activity, new Adiz.SdkInitializationListener() {
@Override
public void onComplete(@NonNull AdizError error, @Nullable JSONObject jsonData) {
if(error.isSuccess()) {
// ... 省略
// GDPR同意ポップアップを再表示するボタンをアプリに表示するかどうかを決定
boolean isPrivacyOptionsRequired = AdizConsentManager.isPrivacyOptionsRequired();
if(isPrivacyOptionsRequired) {
// ボタンをアプリに表示します。(ボタンをクリックするとshowPrivacyOptionsForm()を呼び出してGDPR同意ポップアップを表示します)
showGDPRConsentPopupButton();
} else {
// ボタンをアプリに表示しません。
// その他アプリで希望する処理。
}
}
}
});
}
public void showPrivacyOptionsForm(Activity activity) {
// GDPR同意オプションフォームを呼び出す
if(AdizConsentManager.isPrivacyOptionsRequired()) {
AdizConsentManager.showPrivacyOptionsForm(activity, new AdizConsentManager.ConsentListener() {
@Override
public void onResult(@NonNull AdizError error) {
// エラーハンドリングは必要ありません。
}
});
}
}
GDPR同意年齢未満のユーザーのためのタグ(TFUA)設定¶
GDPR同意年齢未満のユーザーのためのタグ(Tag For Under the Age of Consent, TFUA)を使用して、ヨーロッパ経済地域(EEA)、イギリス、スイスに居住するユーザーを制限的なデータ処理対象として扱うように広告リクエスト時に設定できます。子供を対象としたサービスを提供するアプリの場合、AdizConsentManager.setUserPrivacySettings
を使用してユーザーが同意年齢未満であることを設定できます。ヨーロッパの国ごとにいくつかの違いがありますが、GDPRは16歳未満を親の同意が必要な年齢として定義しています。同意年齢未満設定はAdiz.initialize
実行前に設定する必要があります。
Warning
GDPR同意年齢未満タグ設定のsetTagForUnderAgeOfConsent
とCOPPA子供対象設定のsetTagForChildDirectedTreatment
を同時にtrue
に設定すると、COPPA子供対象設定setTagForChildDirectedTreatment
設定が優先的に適用されるため、これらを同時にtrue
に設定して使用しないでください。
Note
Hive SDK v4 24.2.0以上とAdiz 2.0.1以上を一緒に使用する場合、Hive SDKで設定した同意年齢未満ユーザーの有無が自動的に適用されるため、AdizConsentManager.setUserPrivacySettings
を呼び出す必要はありません。
import com.hive.Adiz
import com.hive.adiz.AdizError
import com.hive.adiz.consent.PrivacySettings
import org.json.JSONObject
fun initialize() {
val isUnderAgeForGDPR = false // 子供の場合はtrueに変更
val settings = PrivacySettings.Builder()
.setTagForUnderAgeOfConsent(isUnderAgeForGDPR)
.build()
AdizConsentManager.setUserPrivacySettings(settings)
Adiz.initialize(activity, object : Adiz.SdkInitializationListener {
override fun onComplete(error: AdizError, jsonData: JSONObject?) {
// ... 省略
}
})
}
import com.hive.Adiz;
import com.hive.adiz.AdizError;
import com.hive.adiz.consent.PrivacySettings;
import org.json.JSONObject;
public void initialize() {
boolean isUnderAgeForGDPR = false; // 子供の場合はtrueに変更
PrivacySettings settings = new PrivacySettings.Builder()
.setTagForUnderAgeOfConsent(isUnderAgeForGDPR)
.build();
AdizConsentManager.setUserPrivacySettings(settings);
Adiz.initialize(activity, new Adiz.SdkInitializationListener() {
@Override
public void onComplete(@NonNull AdizError error, @Nullable JSONObject jsonData) {
if(error.isSuccess()) {
// ... 省略
}
}
});
}
GDPRテストデバイス設定¶
GDPR同意ポップアップは、デバイスのIPアドレスがヨーロッパおよびイギリスのIPアドレスの場合にのみ表示されます。開発段階では、IPアドレスに関係なくGDPR同意ポップアップを強制的に表示させてポップアップの表示をテストすることができ、そのためにはGDPRテストデバイスを設定する必要があります。ハイブコンソールでテストデバイスを設定すると、簡単にテストを行うことができます。 setTestDevice
メソッドを使用して設定する方法は以下の通りで、テストデバイスに広告を表示する方法と同じです。
- Adizを初期化します。テストデバイスIDを確認するための初期化であり、GDPR同意メッセージを作成する必要はありません。
Logcatログ出力でデバイスIDを確認できるメッセージを確認します。以下は例示メッセージです。
- メッセージからデバイスID(例:
33BE2250B43518CCDA7DE426D04EE231
)を確認します。 - デバイスIDをコピーします。
- 既存のAdiz初期化コードで
Adiz.initialize
を実行する前にAdizGDPRManager.setTestDevice(DEVICE_ID)
を追加します。 - GDPR同意メッセージを作成し、Adizを再初期化してGDPR同意ポップアップが正しく表示されるか確認します。
import com.hive.Adiz
import com.hive.adiz.AdizError
import org.json.JSONObject
fun initialize() {
Adiz.setTestDevice("33BE2250B43518CCDA7DE426D04EE231")
Adiz.initialize(activity, object : Adiz.SdkInitializationListener {
override fun onComplete(error: AdizError, jsonData: JSONObject?) {
// ... 省略
}
})
}
import com.hive.Adiz;
import com.hive.adiz.AdizError;
import org.json.JSONObject;
public void initialize() {
Adiz.setTestDevice("33BE2250B43518CCDA7DE426D04EE231");
Adiz.initialize(activity, new Adiz.SdkInitializationListener() {
@Override
public void onComplete(@NonNull AdizError error, @Nullable JSONObject jsonData) {
if(error.isSuccess()) {
// ... 省略
}
}
});
}
COPPA 子供向け取り扱いタグ設定¶
子供オンラインプライバシー保護法(COPPA)の目的に従い、アプリ開発者は子供向け取り扱いタグ設定(tagForChildDirectedTreatment, TFCD)を使用して、広告リクエスト時にGoogleがコンテンツを子供向けコンテンツとして処理するかどうかを指定できます。子供向けとして処理したい場合は、AdizConsentManager.setUserPrivacySettings
をAdiz.initialize
の実行前に呼び出す必要があります。AdizとHive SDKを一緒に使用する場合、子供向け取り扱いタグは自動的に適用されるため、別途設定は必要ありません。
import com.hive.Adiz
import com.hive.adiz.AdizError
import com.hive.adiz.consent.PrivacySettings
import org.json.JSONObject
fun initialize() {
val isChildDirectedTreatmentForCOPPA = false // 子供の場合はtrueに変更
val settings = PrivacySettings.Builder()
.setTagForChildDirectedTreatment(isChildDirectedTreatmentForCOPPA)
.build()
AdizConsentManager.setUserPrivacySettings(settings)
Adiz.initialize(activity, object : Adiz.SdkInitializationListener {
override fun onComplete(error: AdizError, jsonData: JSONObject?) {
// ... 生략
}
})
}
import com.hive.Adiz;
import com.hive.adiz.AdizError;
import com.hive.adiz.consent.PrivacySettings;
import org.json.JSONObject;
public void initialize() {
boolean isChildDirectedTreatmentForCOPPA = false; // 子供の場合はtrueに変更
PrivacySettings settings = new PrivacySettings.Builder()
.setTagForChildDirectedTreatment(isChildDirectedTreatmentForCOPPA)
.build();
AdizConsentManager.setUserPrivacySettings(settings);
Adiz.initialize(activity, new Adiz.SdkInitializationListener() {
@Override
public void onComplete(@NonNull AdizError error, @Nullable JSONObject jsonData) {
if(error.isSuccess()) {
// ... 省略
}
}
});
}
広告メディエーションの追加¶
AdizはAdMobメディエーションを使用して広告を表示できます。AdMobメディエーションを追加するには、以下の手順に従ってください。
AdMobのメディエーション追加¶
AdMobコンソールで広告ソースの連携作業を進めます。以下の表に従って進めます。
AppLovin | Pangle | Unity Ads | Meta | |
---|---|---|---|---|
ステップ 1 | AppLovinの設定を行う | Pangleの設定を行う | Unity Adsの設定を行う | Metaの設定を行う |
ステップ 2 | AdMobにAppLovin広告ソースを追加する | AdMobにPangle広告ソースを追加する | AdMobにUnity Ads広告ソースを追加する | AdMobにMeta広告ソースを追加する |
ステップ 3 | Adizアダプターを追加する |
Adiz アダプターの追加¶
アプリレベルのbuild.gradleにライブラリの依存関係を追加します。
dependencies {
// ... (생략)
implementation 'com.com2us.android.adiz:hive-adiz:2.0.1' // 共通 (必須追加)
implementation 'com.com2us.android.adiz:hive-adiz-adapter-applovin:2.0.1' // AppLovin 連携時追加
implementation 'com.com2us.android.adiz:hive-adiz-adapter-pangle:2.0.1' // Pangle 連携時追加
implementation 'com.com2us.android.adiz:hive-adiz-adapter-unityads:2.0.1' // Unity Ads 連携時追加
implementation 'com.com2us.android.adiz:hive-adiz-adapter-meta:2.0.1' // Meta 連携時追加
}
Pangleを統合する際には、次の設定を追加します。Gradle 7.0以上を使用している場合、プロジェクトレベルのsettings.gradleのdependencyResolutionManagement
部分にrepository
設定を追加します。
// Gradle 7.0 以上使用時の settings.gradle 設定
dependencyResolutionManagement {
repositories {
maven { url 'https://artifact.bytedance.com/repository/pangle/' } // Pangle連携時に追加
}
}
Gradle 7.0未満を使用している場合、プロジェクトレベルのbuild.gradle allprojects
部分にrepository
設定を追加します。
// Gradle 7.0未満使用時のbuild.gradle設定
allprojects {
repositories {
maven {
url 'https://artifact.bytedance.com/repository/pangle' // Pangleとの連携時に追加
}
}
}
Adizアダプターの構成が正しく適用されているか確認するために、アプリを実行後、広告検査機画面で構成リストを確認します。
Adiz初期化¶
すべてのタイプの広告を表示する前に必ず実行する必要があるステップです。Adiz初期化を行うと、広告を表示するために必要な広告キーを受け取ることができます。テストモードを有効にしている場合は、テストキーを受け取ります。Hive SDKを使用している場合は、AuthV4.setup
を呼び出した後にAdiz初期化を進めます。
val sdkInitializationListener = object : Adiz.SdkInitializationListener {
override fun onComplete(error: AdizError, jsonData: JSONObject?) {
Log.d(TAG, "Adiz initialize complete. error code : ${error.getCode()}, message : ${error.getMessage()}, data : $jsonData")
if(error.isSuccess) {
if(jsonData != null) {
var interstitialKeyList = ArrayList<String>()
var bannerKeyList = ArrayList<String>()
var nativeKeyList = ArrayList<String>()
var rewardedKeyList = ArrayList<String>()
var rewardedInterstitialKeyList = ArrayList<String>()
var appOpenKeyList = ArrayList<String>()
try {
var keysArr = jsonData.getJSONArray("keys")
for (i in 0 until keysArr.length()) {
var unit = keysArr.optJSONObject(i)
// ゲーム内で広告キーを直接入力した場合、is_defaultがfalseであるキーのリストを構築する例です。
if (unit.optBoolean("is_default").not()) {
var hiveAdKey = unit.optString("key")
when (unit.optString("form")) {
"interstitial" -> interstitialKeyList.add(hiveAdKey)
"banner" -> bannerKeyList.add(hiveAdKey)
"native" -> nativeKeyList.add(hiveAdKey)
"rewarded" -> rewardedKeyList.add(hiveAdKey)
"rewarded_interstitial" -> rewardedInterstitialKeyList.add(hiveAdKey)
"app_open" -> appOpenKeyList.add(hiveAdKey)
}
}
}
println("interstitialKeyList $interstitialKeyList")
println("bannerKeyList $bannerKeyList")
println("nativeKeyList $nativeKeyList")
println("rewardedKeyList $rewardedKeyList")
println("rewardedInterstitialKeyList $rewardedInterstitialKeyList")
println("appOpenKeyList $appOpenKeyList")
} catch (e: JSONException) {
//...
}
}
}
}
}
fun initAdiz() {
// 一般的な初期化
Adiz.initialize(activity, sdkInitializationListener)
}
fun initAdizForNonGDPR() {
// GDPRに対応しない場合
Adiz.initializeForNonGDPR(activity, sdkInitializationListener)
}
Adiz.SdkInitializationListener sdkInitializationListener = new Adiz.SdkInitializationListener() {
@Override
public void onComplete(@NonNull AdizError error, @Nullable JSONObject jsonData) {
if(error.isSuccess()) {
if(jsonData != null) {
ArrayList interstitialKeyList = new ArrayList<String>();
ArrayList bannerKeyList = new ArrayList<String>();
ArrayList nativeKeyList = new ArrayList<String>();
ArrayList rewardedKeyList = new ArrayList<String>();
ArrayList rewardedInterstitialKeyList = new ArrayList<String>();
ArrayList appOpenKeyList = new ArrayList<String>();
try {
JSONArray keysArr = jsonData.optJSONArray("keys");
for(int i = 0; i < keysArr.length(); i++) {
JSONObject unit = keysArr.optJSONObject(i);
if(unit.optBoolean("is_default") == false) {
String hiveAdKey = unit.optString("key");
String form = unit.optString("form");
switch (form) {
case "interstitial":
interstitialKeyList.add(hiveAdKey);
break;
case "banner":
bannerKeyList.add(hiveAdKey);
break;
case "native":
nativeKeyList.add(hiveAdKey);
break;
case "rewarded":
rewardedKeyList.add(hiveAdKey);
break;
case "rewarded_interstitial":
rewardedInterstitialKeyList.add(hiveAdKey);
break;
case "app_open":
appOpenKeyList.add(hiveAdKey);
break;
}
}
}
System.out.println("interstitialKeyList " + interstitialKeyList);
System.out.println("bannerKeyList " + bannerKeyList);
System.out.println("nativeKeyList " + nativeKeyList);
System.out.println("rewardedKeyList " + rewardedKeyList);
System.out.println("rewardedInterstitialKeyList " + rewardedInterstitialKeyList);
System.out.println("appOpenKeyList " + appOpenKeyList);
} catch (Exception e) {
}
}
}
}
};
void initAdiz() {
// 一般的な初期化
Adiz.initialize(activity, sdkInitializationListener);
}
void initAdizForNonGDPR() {
// GDPRに対応していない場合
Adiz.initializeForNonGDPR(activity, sdkInitializationListener);
}
初期化実行時にコールバックとして受け取るJSONファイルには広告キーのリストがあります。広告キーのリストは次のような形式になります。
{
"keys":[
{
"mediation_id":5,
"key":"ca-app-pub-3940256099942544/5354046379",
"form":"rewarded_interstitial",
"is_default":true,
"placement_id":"lobby01"
},
{
"mediation_id":4,
"key":"ca-app-pub-3940256099942544/5224354917",
"form":"rewarded",
"is_default":true,
"placement_id":"game02"
},
{
"mediation_id":3,
"key":"ca-app-pub-3940256099942544/2247696110",
"form":"native",
"is_default":true,
"placement_id":"event01"
},
{
"mediation_id":1,
"key":"ca-app-pub-3940256099942544/1033173712",
"form":"interstitial",
"is_default":true,
"placement_id":"mission01"
},
{
"mediation_id":2,
"key":"ca-app-pub-3940256099942544/6300978111",
"form":"banner",
"is_default":true,
"placement_id":"main01"
},
{
"mediation_id":6,
"key":"ca-app-pub-3940256099942544/9257395921",
"form":"app_open",
"is_default":true,
"placement_id":"appopen01"
}
]
}
テストモードで初期化を行うと、AdMob広告キーをHiveコンソールに登録していなくても、テスト用広告キーのリストを受け取ります。商用モードで初期化を行うと、Hiveコンソールに登録したAdMob広告キーのリストを受け取ります。
広告の形態(form
)ごとに1つの広告は基本広告("is_default":true
の広告)として使用されます。どの広告形態を最初に登録した場合、その最初に登録した広告が基本広告になります。基本広告は、広告インスタンスを生成(initialize()
)する際に広告キー(hiveAdKey
)を入力する必要はありません。基本広告を変更するには、Hive コンソールで既存の基本広告を削除し、新しい広告を登録する必要があります。
広告コールバックリスナーの設定¶
各広告インスタンスを生成する際にAdizListener
を実装すると、広告の状態変化に応じてコールバックを受け取ることができます。
名称 | 説明 | 必須実装 |
---|---|---|
onLoad() | 広告のロード成功 | O |
onFail(error: AdizError) | 失敗(error.getCode() とerror.getMessage() で失敗理由を知ることができる) | O |
onShow() | 広告の表示成功 | O |
onClick() | 広告クリック | O |
onPaidEvent(adRevenueData: AdRevenueData) | 広告表示後にpaid eventを受け取るタイミングで、広告収益情報が伝達される | O |
onClose() | 広告終了
| X |
onRewarded(rewardItem: RewardItem) | 報酬型広告(rewarded , rewarded interstitial )で広告表示後にユーザーが報酬を受け取るタイミング | X |
var adizListener = object : AdizListener() {
override fun onLoad() {
// 広告が読み込まれたときに呼び出されます。
// 広告の読み込みが成功した場合、広告インスタンスの.show()を表示したいポイントで呼び出す必要があります。
}
override fun onFail(loadError: AdizError) {
// 広告の読み込みに失敗した場合や、他の理由で広告の表示に失敗した場合に呼び出されます。
}
override fun onShow() {
// 広告が表示されたときに呼び出されます。
}
override fun onClick() {
// Called when the ad is clicked.
}
override fun onPaidEvent(adRevenueData: AdRevenueData) {
// 広告の収益が生成されたときに呼び出されます。
var revenue = adRevenueData.revenue // 広告表示時の収益
var currency = adRevenueData.currency // 広告表示時の収益の通貨コード
}
override fun onClose() {
// 広告が閉じられたときに呼び出されます。
// バナー、ネイティブ広告にはonCloseコールバックがありません。
}
override fun onRewarded(rewardItem: RewardItem) {
// 広告を視聴した際に報酬が作成されたときに呼び出されます。
var itemType = rewardItem.itemType // 報酬アイテムの種類
var itemAmount = rewardItem.itemAmount // 報酬アイテムの数量
}
}
AdizListener adizListener = new AdizListener() {
@Override
public void onLoad() {
// 広告が読み込まれたときに呼び出されます。
// 広告の読み込みが成功した場合、広告を表示するために必要なポイントで広告インスタンスの.show()を呼び出す必要があります。
}
@Override
public void onFail(@NonNull AdizError loadError) {
// Called if the ad load failed or the ad display failed for some other reason.
}
@Override
public void onShow() {
// 広告が表示されたときに呼び出されます。
}
@Override
public void onClick() {
// 広告がクリックされたときに呼ばれます。
}
@Override
public void onPaidEvent(@NonNull AdRevenueData adRevenueData) {
double revenue = adRevenueData.getRevenue(); // 広告表示時の収益
String currency = adRevenueData.getCurrency(); // 広告表示時の収益の通貨コード
}
@Override
public void onClose() {
// 広告が閉じられたときに呼び出されます。
// バナー広告やネイティブ広告には閉じるボタンがないため、onCloseコールバックはありません。
}
@Override
public void onRewarded(@NonNull RewardItem rewardItem) {
// 広告を視聴した際に報酬が発生したときに呼び出されます。
String rewardType = rewardItem.getItemType(); // 報酬アイテムの種類
int rewardAmount = rewardItem.getItemAmount(); // 報酬アイテムの数量
}
};
エラーコード¶
Adiz.Initialize
とAdizListener
でonFail()
を受け取ったときのAdizError
エラーコードとエラーメッセージは次のとおりです。
共通コード¶
番号 | ケース | 説明 |
---|---|---|
0 | 成功 | 成功 |
Adiz エラーコード¶
番号 | ケース | 説明 |
---|---|---|
-1 | InvalidParam | 無効なパラメータ |
-2 | NotSupported | サポートされていません |
-3 | InProgress | プロセス進行中 |
-4 | Network | ネットワークエラー |
-5 | NeedInitialize | 初期化が必要 |
-6 | ResponseFail | 応答失敗 |
-7 | Timeout | ネットワークタイムアウト |
-99 | Unknown | 不明なエラー |
広告プラットフォームエラーコード¶
番号 | ケース | 説明 |
---|---|---|
-101 | NeedLoad | 広告がロードされていません |
-102 | NeedReload | 広告表示時間の期限切れによる再ロードが必要 |
-103 | NotEnoughInventory | メディエーションの応答は成功しましたが、在庫不足のため充填された広告がありません |
-104 | MissingAppId | メディエーションリクエスト用のAppIDエラー |
-105 | InternalNetworkError | メディエーションネットワーク関連のエラー |
-106 | InvalidUnitId | 無効なUnit Id |
-107 | MediationNoFill | メディエーションアダプターが広告リクエストを処理できませんでした |
-108 | AlreadyLoaded | すでにロードされた状態 |
-109 | CannotRequestAds | 広告をリクエストできません |
-201 | GdprConsentError | GDPR同意エラー |
-202 | IsNotPrivacyOptionsRequired | GDPR同意ポップアップを表示できないか、表示しなくてもよい状態です |
広告の表示と広告の終了¶
広告を表示し、終了するには、次の手順に従ってください。
- 表示したい広告の形式ごとに広告クラスで広告インスタンスを生成します。表示したい広告が 基本広告 でない場合は、 初期化 で取得した広告キーまたは位置IDを入力する必要があります。
広告キー(hiveAdKey
)または位置ID(placementId
)を入力しないと、基本広告インスタンスが生成されます。位置IDはハイブコンソールで設定でき、詳細はコンソールガイドの Admob設定 ページを参照してください。 - 表示したい広告をロード(
load()
)します。 - ロードした広告を表示(
show()
)します。広告を再表示するにはload()
を再度呼び出した後、show()
を呼び出します。 - 広告を終了するには
destroy()
を呼び出します。
インタースティシャル広告¶
画面全体を占めるインタースティシャル広告です。
import android.app.Activity
import android.os.Bundle
import com.hive.adiz.AdizError
import com.hive.adiz.AdizListener
import com.hive.adiz.base.AdizInterstitial
import com.hive.adiz.common.AdRevenueData
class InterstitialExample : Activity() {
var interstitialAd: AdizInterstitial? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// requestInitAd(this)
}
val adizListener = object : AdizListener() {
override fun onLoad() {
// requestShowAd()
}
override fun onFail(loadError: AdizError) {
var code = loadError.getCode() // エラーコード
var message = loadError.getMessage() // エラーメッセージ
}
override fun onShow() {
//
}
override fun onClick() {
//
}
override fun onPaidEvent(adRevenueData: AdRevenueData) {
var revenue = adRevenueData.revenue // 広告が表示されたときの収益
var currency = adRevenueData.currency // 広告が表示されたときの収益の通貨コード
}
override fun onClose() {
// requestDestroyAd()
}
}
fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
if(hiveAdKey.isNullOrEmpty()) {
// インタースティシャル広告インスタンスを作成します。
interstitialAd = AdizInterstitial.initialize(activity, adizListener)
} else {
// hiveAdKeyを入力してインタースティシャル広告インスタンスを作成できます。
interstitialAd = AdizInterstitial.initialize(activity, hiveAdKey, adizListener)
}
// requestLoadAd()
}
fun requestInitAdWithPlacementid(activity: Activity, placementId: String? = null) {
if(placementId.isNullOrEmpty()) {
// インタースティシャル広告インスタンスを作成します。
interstitialAd = AdizInterstitial.initialize(activity, adizListener)
} else {
// placementIdを入力することでインタースティシャル広告インスタンスを作成できます。
interstitialAd = AdizInterstitial.initializeWithPlacementId(activity, placementId, adizListener)
}
// requestLoadAd()
}
fun requestLoadAd() {
// インタースティシャル広告を読み込む。
interstitialAd?.let {
if(it.isInitialized()) it.load()
}
}
fun requestShowAd() {
// インタースティシャル広告を表示します。
interstitialAd?.let {
if(it.isLoaded()) it.show()
}
}
fun requestDestroyAd() {
// インタースティシャル広告を削除します。
interstitialAd?.destroy()
}
}
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hive.adiz.AdizError;
import com.hive.adiz.AdizListener;
import com.hive.adiz.base.AdizInterstitial;
import com.hive.adiz.common.AdRevenueData;
public class InterstitialExample extends Activity {
AdizInterstitial interstitialAd = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
// requestInitAd(this, null);
}
AdizListener adizListener = new AdizListener() {
@Override
public void onLoad() {
// requestShowAd();
}
@Override
public void onFail(@NonNull AdizError loadError) {
int code = loadError.getCode(); // エラーコード
String message = loadError.getMessage(); // エラーメッセージ
}
@Override
public void onShow() {
}
@Override
public void onClick() {
//
}
@Override
public void onClose() {
// requestDestroyAd();
}
@Override
public void onPaidEvent(@NonNull AdRevenueData adRevenueData) {
double revenue = adRevenueData.getRevenue(); // 広告が表示されたときの収益
String currency = adRevenueData.getCurrency(); // 広告が表示されたときの収益の通貨コード
}
};
public void requestInitAd(Activity activity, String hiveAdKey) {
if(TextUtils.isEmpty(hiveAdKey)) {
// インタースティシャル広告インスタンスを作成します。
interstitialAd = AdizInterstitial.initialize(activity, adizListener);
} else {
// hiveAdKeyを入力することでインタースティシャル広告インスタンスを作成できます。
interstitialAd = AdizInterstitial.initialize(activity, hiveAdKey, adizListener);
}
// requestLoadAd();
}
public void requestInitAdWithPlacementId(Activity activity, String placementId) {
if(TextUtils.isEmpty(placementId)) {
// インタースティシャル広告インスタンスを作成します。
interstitialAd = AdizInterstitial.initialize(activity, adizListener);
} else {
// placementIdを入力してインタースティシャル広告インスタンスを作成できます。
interstitialAd = AdizInterstitial.initializeWithPlacementId(activity, placementId, adizListener);
}
// requestLoadAd();
}
private void requestLoadAd() {
// インタースティシャル広告を読み込みます。
if(interstitialAd != null && interstitialAd.isInitialized()) interstitialAd.load();
}
private void requestShowAd() {
// インタースティシャル広告を表示します。
if(interstitialAd != null && interstitialAd.isLoaded()) interstitialAd.show();
}
private void requestDestroyAd() {
// インタースティシャル広告を削除します。
if(interstitialAd != null) interstitialAd.destroy();
}
}
バナー広告 (Banner)¶
特定のサイズのバナーを表示するバナー広告です。バナー広告は onClose()
コールバックを受け取りません。したがって、他の場所で destroy()
を呼び出して広告を終了する必要があります。
BannerSize
は標準バナーサイズに従います。
サイズポイント (幅x高さ) | 説明 | 対象 | BannerSize 定数 |
---|---|---|---|
320x50 | バナー | 携帯電話およびタブレット | BannerSize.NORMAL |
320x100 | 大バナー | 携帯電話およびタブレット | BannerSize.MEDIUM |
300x250 | IAB 中間長方形 | 携帯電話およびタブレット | BannerSize.LARGE |
468 x 60 | IAB フルサイズバナー | タブレット | BannerSize.FULL |
PositionType
は最上部または最下部です。デフォルト値は最下部です。
整列 | 説明 | PositionType 定数 |
---|---|---|
最上部整列 | 画面最上部整列指定 | PositionType.TOP |
最下部整列 (デフォルト) | 画面最下部整列指定 | PositionType.BOTTOM |
import android.app.Activity
import android.os.Bundle
import com.hive.adiz.AdizError
import com.hive.adiz.AdizListener
import com.hive.adiz.base.AdizBanner
import com.hive.adiz.common.AdRevenueData
import com.hive.adiz.common.BannerSize
import com.hive.adiz.common.PositionType
class BannerExample : Activity() {
var banner: AdizBanner? = null
// バナーサイズを設定します。
var bannerSize = BannerSize.NORMAL
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// requestInitAd(this)
}
val adizListener = object : AdizListener() {
override fun onLoad() {
// requestShowAd()
}
override fun onFail(loadError: AdizError) {
var code = loadError.getCode() // エラーコード
var message = loadError.getMessage() // エラーメッセージ
}
override fun onShow() {
//
}
override fun onClick() {
//
}
override fun onPaidEvent(adRevenueData: AdRevenueData) {
var revenue = adRevenueData.revenue // revenue when ad is exposed
var currency = adRevenueData.currency // currency code for revenue when ad is exposed
}
}
fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
if(hiveAdKey.isNullOrEmpty()) {
// バナー広告インスタンスを作成します。
banner = AdizBanner.initialize(activity, bannerSize, adizListener)
} else {
// hiveAdKeyを入力してバナー広告インスタンスを作成できます。
banner = AdizBanner.initialize(activity, hiveAdKey, bannerSize, adizListener)
}
// requestLoadAd()
}
fun requestInitAdWithPlacementId(activity: Activity, placementId: String? = null) {
if(placementId.isNullOrEmpty()) {
// バナー広告インスタンスを作成します。
banner = AdizBanner.initialize(activity, bannerSize, adizListener)
} else {
// placementIdを入力することでバナー広告インスタンスを作成できます。
banner = AdizBanner.initializeWithPlacementId(activity, placementId, bannerSize, adizListener)
}
// requestLoadAd()
}
fun requestLoadAd() {
// バナー広告を読み込みます。
banner?.let {
if(it.isInitialized()) it.load()
}
}
fun requestShowAd() {
// バナー広告を表示します。
banner?.let {
if(it.isLoaded()) it.show()
}
// バナーの位置を設定
/*
var position = PositionType.TOP
banner?.let {
if(it.isLoaded()) it.show(position)
}
*/
}
fun requestDestroyAd() {
// バナー広告を削除します。
banner?.destroy()
}
}
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hive.adiz.AdizError;
import com.hive.adiz.AdizListener;
import com.hive.adiz.base.AdizBanner;
import com.hive.adiz.common.AdRevenueData;
import com.hive.adiz.common.BannerSize;
import com.hive.adiz.common.PositionType;
public class BannerExample extends Activity {
// バナーサイズを設定します。
BannerSize bannerSize = BannerSize.NORMAL;
AdizBanner banner = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
// requestInitAd(this, null);
}
AdizListener adizListener = new AdizListener() {
@Override
public void onLoad() {
// requestShowAd();
}
@Override
public void onFail(@NonNull AdizError loadError) {
int code = loadError.getCode(); // エラーコード
String message = loadError.getMessage(); // エラーメッセージ
}
@Override
public void onShow() {
}
@Override
public void onClick() {
//
}
@Override
public void onPaidEvent(@NonNull AdRevenueData adRevenueData) {
double revenue = adRevenueData.getRevenue(); // 広告が表示されたときの収益
String currency = adRevenueData.getCurrency(); // 広告が表示されたときの収益の通貨コード
}
};
public void requestInitAd(Activity activity, String hiveAdKey) {
if(TextUtils.isEmpty(hiveAdKey)) {
// バナー広告インスタンスを作成します。
banner = AdizBanner.initialize(activity, bannerSize, adizListener);
} else {
// hiveAdKeyを入力してバナー広告インスタンスを作成できます。
banner = AdizBanner.initialize(activity, hiveAdKey, bannerSize, adizListener);
}
// requestLoadAd();
}
public void requestInitAdWithPlacementId(Activity activity, String placementId) {
if(TextUtils.isEmpty(placementId)) {
// バナー広告インスタンスを作成します。
banner = AdizBanner.initialize(activity, bannerSize, adizListener);
} else {
// placementIdを入力してバナー広告インスタンスを作成できます。
banner = AdizBanner.initializeWithPlacementId(activity, placementId, bannerSize, adizListener);
}
// requestLoadAd();
}
private void requestLoadAd() {
// バナー広告を読み込みます。
if(banner != null && banner.isInitialized()) banner.load();
}
private void requestShowAd() {
// バナー広告を表示します。
if(banner != null && banner.isLoaded()) banner.show();
// バナーの位置を設定
// PositionType position = PositionType.TOP;
// if(banner != null) banner.show(position);
}
private void requestDestroyAd() {
// バナー広告を削除します。
if(banner != null) banner.destroy();
}
}
ネイティブ広告 (Native)¶
特定のサイズのNativeテンプレートを表示するネイティブ広告です。ネイティブ広告は縦画面に最適化されているため、縦型ゲーム(縦画面ゲーム)での使用を推奨します。ネイティブ広告は onClose()
コールバックを受け取りません。したがって、他の場所で destroy()
を呼び出して広告を終了する必要があります。
現在のテンプレートはsmall
またはmedium
サイズをサポートしています。
テンプレート | 配置 | BannerSize 定数 |
---|---|---|
small サイズ | Top / Bottom | BannerSize.NORMAL |
medium サイズ | Center (固定) | BannerSize.MEDIUM |
small
テンプレートでの PositionType
は最上部または最下部であり、デフォルトは最下部です。
整列 | 説明 | PositionType 定数 |
---|---|---|
最上部整列 | 画面の最上部に整列指定 | PositionType.TOP |
最下部整列 (デフォルト) | 画面の最下部に整列指定 | PositionType.BOTTOM |
medium
テンプレートは整列を選択できず、デフォルトで中央揃えを使用します。
import android.app.Activity
import android.os.Bundle
import com.hive.adiz.AdizError
import com.hive.adiz.AdizListener
import com.hive.adiz.base.AdizNative
import com.hive.adiz.common.AdRevenueData
import com.hive.adiz.common.BannerSize
class NativeAdExampleKT : Activity() {
var nativeAd: AdizNative? = null
// バナーサイズを設定します。
var bannerSize = BannerSize.NORMAL
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// requestInitAd(this)
}
val adizListener = object : AdizListener() {
override fun onLoad() {
// requestShowAd()
}
override fun onFail(loadError: AdizError) {
var code = loadError.getCode() // エラーコード
var message = loadError.getMessage() // エラーメッセージ
}
override fun onShow() {
//
}
override fun onClick() {
//
}
override fun onPaidEvent(adRevenueData: AdRevenueData) {
var revenue = adRevenueData.revenue // 広告が表示されたときの収益
var currency = adRevenueData.currency // 広告が表示されたときの収益の通貨コード
}
}
fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
if(hiveAdKey.isNullOrEmpty()) {
// ネイティブ広告インスタンスを作成します。
nativeAd = AdizNative.initialize(activity, bannerSize, adizListener)
} else {
// hiveAdKeyを入力してネイティブ広告インスタンスを作成できます。
nativeAd = AdizNative.initialize(activity, hiveAdKey, bannerSize, adizListener)
}
// requestLoadAd()
}
fun requestInitAdWithPlacementId(activity: Activity, placementId: String? = null) {
if(placementId.isNullOrEmpty()) {
// ネイティブ広告インスタンスを作成します。
nativeAd = AdizNative.initialize(activity, bannerSize, adizListener)
} else {
// placementIdを入力してネイティブ広告インスタンスを作成できます。
nativeAd = AdizNative.initializeWithPlacementId(activity, placementId, bannerSize, adizListener)
}
// requestLoadAd()
}
fun requestLoadAd() {
// ネイティブ広告を読み込む。
nativeAd?.let {
if(it.isInitialized()) it.load()
}
}
fun requestShowAd() {
// ネイティブ広告を公開します。
nativeAd?.let {
if(it.isLoaded()) it.show()
}
// バナーの位置を設定
/*
var position = PositionType.TOP
nativeAd?.let {
if(it.isLoaded()) it.show(position)
}
*/
}
fun requestDestroyAd() {
// ネイティブ広告を削除します。
nativeAd?.destroy()
}
}
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hive.adiz.AdizError;
import com.hive.adiz.AdizListener;
import com.hive.adiz.base.AdizNative;
import com.hive.adiz.common.AdRevenueData;
import com.hive.adiz.common.BannerSize;
import com.hive.adiz.common.PositionType;
public class NativeAdExample extends Activity {
// バナーサイズを設定します。
BannerSize bannerSize = BannerSize.NORMAL;
AdizNative nativeAd = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
// requestInitAd(this, null);
}
AdizListener adizListener = new AdizListener() {
@Override
public void onLoad() {
// requestShowAd();
}
@Override
public void onFail(@NonNull AdizError loadError) {
int code = loadError.getCode(); // エラーコード
String message = loadError.getMessage(); // エラーメッセージ
}
@Override
public void onShow() {
}
@Override
public void onClick() {
//
}
@Override
public void onPaidEvent(@NonNull AdRevenueData adRevenueData) {
double revenue = adRevenueData.getRevenue(); // 広告が表示されたときの収益
String currency = adRevenueData.getCurrency(); // 広告が表示されたときの収益の通貨コード
}
};
public void requestInitAd(Activity activity, String hiveAdKey) {
if(TextUtils.isEmpty(hiveAdKey)) {
// ネイティブ広告インスタンスを作成します。(HiveAdKeyが入力されていない場合、インスタンスはデフォルトキーがis_default=trueに設定されて作成されます。これはHive Adizの初期化中に受け取ったものです。)
nativeAd = AdizNative.initialize(activity, bannerSize, adizListener);
} else {
// hiveAdKeyを入力することでネイティブ広告インスタンスを作成できます。
nativeAd = AdizNative.initialize(activity, hiveAdKey, bannerSize, adizListener);
}
// requestLoadAd();
}
public void requestInitAdWithPlacementId(Activity activity, String placementId) {
if(TextUtils.isEmpty(placementId)) {
// ネイティブ広告インスタンスを作成します。(HiveAdKeyが入力されていない場合、インスタンスはデフォルトキーがis_default=trueに設定された状態で作成され、これはHive Adizの初期化中に受信されました。)
nativeAd = AdizNative.initialize(activity, bannerSize, adizListener);
} else {
// placementIdを入力することでネイティブ広告インスタンスを作成できます。
nativeAd = AdizNative.initializeWithPlacementId(activity, placementId, bannerSize, adizListener);
}
// requestLoadAd();
}
private void requestLoadAd() {
// ネイティブ広告を読み込みます。
if(nativeAd != null && nativeAd.isInitialized()) nativeAd.load();
}
private void requestShowAd() {
// ネイティブ広告を表示します。
if(nativeAd != null && nativeAd.isLoaded()) nativeAd.show();
// バナーの位置を設定
// PositionType position = PositionType.TOP;
// if(nativeAd != null && nativeAd.isLoaded()) nativeAd.show(position);
}
private void requestDestroyAd() {
// ネイティブ広告を削除します。
if(nativeAd != null) nativeAd.destroy();
}
}
報酬型広告 (Rewarded)¶
ユーザーが広告を一定時間以上視聴すると報酬を受け取る報酬型広告です。報酬の支払いが完了すると、onRewarded()
コールバックで報酬アイテムの情報を受け取ります。
import android.app.Activity
import android.os.Bundle
import com.hive.adiz.AdizError
import com.hive.adiz.AdizListener
import com.hive.adiz.base.AdizRewarded
import com.hive.adiz.common.AdRevenueData
class RewardedExample : Activity() {
var rewardedAd: AdizRewarded? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// requestInitAd(this)
}
val adizListener = object : AdizListener() {
override fun onLoad() {
// requestShowAd()
}
override fun onFail(loadError: AdizError) {
var code = loadError.getCode() // エラーコード
var message = loadError.getMessage() // エラーメッセージ
}
override fun onShow() {
//
}
override fun onClick() {
//
}
override fun onPaidEvent(adRevenueData: AdRevenueData) {
var revenue = adRevenueData.revenue // 広告が表示されたときの収益
var currency = adRevenueData.currency // 広告が表示されたときの収益の通貨コード
}
override fun onClose() {
// requestDestroyAd()
}
override fun onRewarded(rewardItem: RewardItem) {
var itemType = rewardItem.itemType // 報酬アイテムの種類
var itemAmount = rewardItem.itemAmount // 報酬アイテムの数量
}
}
fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
if(hiveAdKey.isNullOrEmpty()) {
// 報酬広告インスタンスを作成します。
rewardedAd = AdizRewarded.initialize(activity, adizListener)
} else {
// hiveAdKeyを入力することで報酬広告インスタンスを作成できます。
rewardedAd = AdizRewarded.initialize(activity, hiveAdKey, adizListener)
}
// requestLoadAd()
}
fun requestInitAdWithPlacementId(activity: Activity, placementId: String? = null) {
if(placementId.isNullOrEmpty()) {
// 報酬広告インスタンスを作成します。
rewardedAd = AdizRewarded.initialize(activity, adizListener)
} else {
// placementIdを入力して報酬広告インスタンスを作成できます。
rewardedAd = AdizRewarded.initializeWithPlacementId(activity, placementId, adizListener)
}
// requestLoadAd()
}
fun requestLoadAd() {
// 報酬広告を読み込みます。
rewardedAd?.let {
if(it.isInitialized()) it.load()
}
}
fun requestShowAd() {
// 報酬広告を表示します。
rewardedAd?.let {
if(it.isLoaded()) it.show()
}
}
fun requestDestroyAd() {
// 報酬広告を削除します。
rewardedAd?.destroy()
}
}
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hive.adiz.AdizError;
import com.hive.adiz.AdizListener;
import com.hive.adiz.base.AdizRewarded;
import com.hive.adiz.common.AdRevenueData;
public class RewardedExample extends Activity {
AdizRewarded rewardedAd = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
// requestInitAd(this, null);
}
AdizListener adizListener = new AdizListener() {
@Override
public void onLoad() {
// requestShowAd();
}
@Override
public void onFail(@NonNull AdizError loadError) {
int code = loadError.getCode(); // エラーコード
String message = loadError.getMessage(); // エラーメッセージ
}
@Override
public void onShow() {
//
}
@Override
public void onClick() {
//
}
@Override
public void onPaidEvent(@NonNull AdRevenueData adRevenueData) {
double revenue = adRevenueData.getRevenue(); // 広告が表示されたときの収益
String currency = adRevenueData.getCurrency(); // 広告が表示されたときの収益の通貨コード
}
@Override
public void onClose() {
// requestDestroyAd();
}
@Override
public void onRewarded(@NonNull RewardItem rewardItem) {
String rewardType = rewardItem.getItemType(); // 報酬アイテムの種類
int rewardAmount = rewardItem.getItemAmount(); // 報酬アイテムの数量
}
};
public void requestInitAd(Activity activity, String hiveAdKey) {
if(TextUtils.isEmpty(hiveAdKey)) {
// 報酬広告インスタンスを作成します。(HiveAdKeyが入力されていない場合、インスタンスはデフォルトキー(is_default=true)で作成され、Hive Adizの初期化中に受け取ったものです。)
rewardedAd = AdizRewarded.initialize(activity, adizListener);
} else {
// hiveAdKeyを入力することで報酬広告インスタンスを作成できます。
rewardedAd = AdizRewarded.initialize(activity, hiveAdKey, adizListener);
}
// requestLoadAd();
}
public void requestInitAdWithPlacementId(Activity activity, String placementId) {
if(TextUtils.isEmpty(placementId)) {
// 報酬広告インスタンスを作成します。(HiveAdKeyが入力されていない場合、インスタンスはデフォルトキー(is_default=true)で作成され、これはHive Adizの初期化中に受け取ったものです。)
rewardedAd = AdizRewarded.initialize(activity, adizListener);
} else {
// placementIdを入力することで報酬広告インスタンスを作成できます。
rewardedAd = AdizRewarded.initializeWithPlacementId(activity, placementId, adizListener);
}
// requestLoadAd();
}
private void requestLoadAd() {
// 報酬広告を読み込みます。
if(rewardedAd != null && rewardedAd.isInitialized()) rewardedAd.load();
}
private void requestShowAd() {
// 報酬広告を表示します。
if(rewardedAd != null && rewardedAd.isLoaded()) rewardedAd.show();
}
private void requestDestroyAd() {
// 報酬広告を削除します。
if(rewardedAd != null) rewardedAd.destroy();
}
}
報酬型インタースティシャル広告 (Rewarded Interstitial)¶
ユーザーが広告を一定時間以上視聴すると報酬を受け取る報酬型インタースティシャル広告です。報酬の支払いが完了すると、onRewarded()
コールバックで報酬アイテムの情報を受け取ります。
import android.app.Activity
import android.os.Bundle
import com.hive.adiz.AdizError
import com.hive.adiz.AdizListener
import com.hive.adiz.base.AdizRewardedInterstitial
import com.hive.adiz.common.AdRevenueData
import com.hive.adiz.rewarded.RewardItem
class RewardedInterstitialExample : Activity() {
var rewardedInterstitialAd: AdizRewardedInterstitial? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// requestInitAd(this)
}
val adizListener = object : AdizListener() {
override fun onLoad() {
// requestShowAd()
}
override fun onFail(loadError: AdizError) {
var code = loadError.getCode() // エラーコード
var message = loadError.getMessage() // エラーメッセージ
}
override fun onShow() {
//
}
override fun onClick() {
//
}
override fun onPaidEvent(adRevenueData: AdRevenueData) {
var revenue = adRevenueData.revenue // 広告が表示されたときに生成された収益
var currency = adRevenueData.currency // 広告が表示されたときの収益の通貨コード
}
override fun onClose() {
// requestDestroyAd()
}
override fun onRewarded(rewardItem: RewardItem) {
var itemType = rewardItem.itemType // 報酬アイテムの種類
var itemAmount = rewardItem.itemAmount // 報酬アイテムの数量
}
}
fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
if(hiveAdKey.isNullOrEmpty()) {
// 報酬付きインタースティシャル広告のインスタンスを作成します。
rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, adizListener)
} else {
// hiveAdKeyを入力することで報酬付きインタースティシャル広告のインスタンスを作成できます。
rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, hiveAdKey, adizListener)
}
// requestLoadAd()
}
fun requestInitAdWithPlacementId(activity: Activity, placementId: String? = null) {
if(placementId.isNullOrEmpty()) {
// 報酬付きインタースティシャル広告のインスタンスを作成します。
rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, adizListener)
} else {
// placementIdを入力することで報酬付きインタースティシャル広告のインスタンスを作成できます。
rewardedInterstitialAd = AdizRewardedInterstitial.initializeWithPlacementId(activity, placementId, adizListener)
}
// requestLoadAd()
}
fun requestLoadAd() {
// 報酬付きインタースティシャル広告を読み込みます。
rewardedInterstitialAd?.let {
if(it.isInitialized()) it.load()
}
}
fun requestShowAd() {
// 報酬付きインタースティシャル広告を表示します。
rewardedInterstitialAd?.let {
if(it.isLoaded()) it.show()
}
}
fun requestDestroyAd() {
// 報酬付きインタースティシャル広告を削除します。
rewardedInterstitialAd?.destroy()
}
}
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hive.adiz.AdizError;
import com.hive.adiz.AdizListener;
import com.hive.adiz.base.AdizRewardedInterstitial;
import com.hive.adiz.common.AdRevenueData;
import com.hive.adiz.rewarded.RewardItem;
public class RewardedInterstitialExample extends Activity {
AdizRewardedInterstitial rewardedInterstitialAd = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
// requestInitAd(this, null);
}
AdizListener adizListener = new AdizListener() {
@Override
public void onLoad() {
// requestShowAd();
}
@Override
public void onFail(@NonNull AdizError loadError) {
int code = loadError.getCode(); // エラーコード
String message = loadError.getMessage(); // エラーメッセージ
}
@Override
public void onShow() {
//
}
@Override
public void onClick() {
//
}
@Override
public void onPaidEvent(@NonNull AdRevenueData adRevenueData) {
double revenue = adRevenueData.getRevenue(); // 広告が表示されたときに生成された収益
String currency = adRevenueData.getCurrency(); // 広告が表示されたときの通貨コード
}
@Override
public void onClose() {
// requestDestroyAd();
}
@Override
public void onRewarded(@NonNull RewardItem rewardItem) {
String rewardType = rewardItem.getItemType(); // リワードアイテムのタイプ
int rewardAmount = rewardItem.getItemAmount(); // リワードアイテムの数量
}
};
public void requestInitAd(Activity activity, String hiveAdKey) {
if(TextUtils.isEmpty(hiveAdKey)) {
// 報酬型インタースティシャル広告のインスタンスを作成します(広告キー(HiveAdKey)が入力されていない場合、Hive Adizの初期化中にデフォルトキー(is_default=true)でインスタンスが作成されます。)
rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, adizListener);
} else {
// hiveAdKeyを入力することで報酬型インタースティシャル広告のインスタンスを作成できます。
rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, hiveAdKey, adizListener);
}
// requestLoadAd();
}
public void requestInitAdWithPlacementId(Activity activity, String placementId) {
if(TextUtils.isEmpty(placementId)) {
// 報酬付きインタースティシャル広告のインスタンスを作成します(広告キー(HiveAdKey)が入力されていない場合、Hive Adizの初期化中にデフォルトキー(is_default=true)でインスタンスが作成されます。)
rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, adizListener);
} else {
// placementIdを入力することで報酬付きインタースティシャル広告のインスタンスを作成できます。
rewardedInterstitialAd = AdizRewardedInterstitial.initializeWithPlacementId(activity, placementId, adizListener);
}
// requestLoadAd();
}
private void requestLoadAd() {
// 報酬付きインタースティシャル広告を読み込みます。
if(rewardedInterstitialAd != null && rewardedInterstitialAd.isInitialized()) rewardedInterstitialAd.load();
}
private void requestShowAd() {
// 報酬付きインタースティシャル広告を表示します。
if(rewardedInterstitialAd != null && rewardedInterstitialAd.isLoaded()) rewardedInterstitialAd.show();
}
private void requestDestroyAd() {
// 報酬付きインタースティシャル広告を削除します。
if(rewardedInterstitialAd != null) rewardedInterstitialAd.destroy();
}
}
アプリオープニング広告 (AppOpen)¶
アプリの状態がバックグラウンドからフォアグラウンドに変更されるときに、事前にロードしておいた(load()
)広告を表示するアプリオープニング広告です。広告をロードしてから3時間が経過した後にshow()
を呼び出すと、広告が自動的に再ロードされ、その後広告が表示されます。一度でも広告を表示した後は、広告は自動的にロードされません。
import android.app.Activity
import android.os.Bundle
import com.hive.adiz.AdizError
import com.hive.adiz.AdizListener
import com.hive.adiz.base.AdizAppOpen
import com.hive.adiz.common.AdRevenueData
class AppOpenExample : Activity() {
var appOpen: AdizAppOpen? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// requestInitAd(this)
}
val adizListener = object : AdizListener() {
override fun onLoad() {
//
}
override fun onFail(loadError: AdizError) {
var code = loadError.getCode() // エラーコード
var message = loadError.getMessage() // エラーメッセージ
}
override fun onShow() {
//
}
override fun onClick() {
//
}
override fun onPaidEvent(adRevenueData: AdRevenueData) {
var revenue = adRevenueData.revenue // 広告が表示されたときの収益
var currency = adRevenueData.currency // 広告が表示されたときの収益の通貨コード
}
override fun onClose() {
// requestDestroyAd()
}
}
fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
if(hiveAdKey.isNullOrEmpty()) {
// アプリオープニング広告インスタンスを作成します。
appOpen = AdizAppOpen.initialize(activity, adizListener)
} else {
// hiveAdKeyを入力することでアプリオープニング広告インスタンスを作成できます。
appOpen = AdizAppOpen.initialize(activity, hiveAdKey, adizListener)
}
// requestLoadAd()
}
fun requestInitAdWithPlacementId(activity: Activity, placementId: String? = null) {
if(placementId.isNullOrEmpty()) {
// アプリオープニング広告インスタンスを作成します。
appOpen = AdizAppOpen.initialize(activity, adizListener)
} else {
// placementIdを入力することでアプリオープニング広告インスタンスを作成できます。
appOpen = AdizAppOpen.initializeWithPlacementId(activity, placementId, adizListener)
}
// requestLoadAd()
}
fun requestLoadAd() {
// アプリオープニング広告を読み込みます。読み込みが完了すると、アプリがバックグラウンドからフォアグラウンドに移動したときに広告が自動的に表示されます。
// 広告が少なくとも一度表示されると、再表示されることはないため、広告を表示し続けたい場合は、onClose() コールバック内で再度 appOpen.load() を呼び出す必要があります。
appOpen?.let {
if(it.isInitialized()) it.load()
}
}
fun requestDestroyAd() {
// アプリオープニング広告を削除します。
appOpen?.destroy()
}
}
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.hive.adiz.AdizError;
import com.hive.adiz.AdizListener;
import com.hive.adiz.base.AdizAppOpen;
import com.hive.adiz.common.AdRevenueData;
public class AppOpenExample extends Activity {
AdizAppOpen appOpen = null;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//...
// requestInitAd(this, null);
}
AdizListener adizListener = new AdizListener() {
@Override
public void onLoad() {
//
}
@Override
public void onFail(@NonNull AdizError loadError) {
int code = loadError.getCode(); // エラーコード
String message = loadError.getMessage(); // エラーメッセージ
}
@Override
public void onShow() {
//
}
@Override
public void onClick() {
//
}
@Override
public void onPaidEvent(@NonNull AdRevenueData adRevenueData) {
double revenue = adRevenueData.getRevenue(); // 広告が表示されたときの収益
String currency = adRevenueData.getCurrency(); // 広告が表示されたときの収益の通貨コード
}
@Override
public void onClose() {
// requestDestroyAd();
}
};
public void requestInitAd(Activity activity, String hiveAdKey) {
if(TextUtils.isEmpty(hiveAdKey)) {
// アプリオープニング広告インスタンスを作成します。(広告キー(HiveAdKey)が入力されていない場合、Hive Adizの初期化中にデフォルトキー(is_default=true)でインスタンスが作成されます。)
appOpen = AdizAppOpen.initialize(activity, adizListener);
} else {
// hiveAdKeyを入力することでアプリオープニング広告インスタンスを作成できます。
appOpen = AdizAppOpen.initialize(activity, hiveAdKey, adizListener);
}
// requestLoadAd();
}
public void requestInitAdWithPlacementId(Activity activity, String placementId) {
if(TextUtils.isEmpty(placementId)) {
// アプリオープニング広告インスタンスを作成します。(広告キー(HiveAdKey)が入力されていない場合、インスタンスはHive Adizの初期化中にデフォルトキー(is_default=true)で作成されます。)
appOpen = AdizAppOpen.initialize(activity, adizListener);
} else {
// placementIdを入力することでアプリオープニング広告インスタンスを作成できます。
appOpen = AdizAppOpen.initializeWithPlacementId(activity, placementId, adizListener);
}
// requestLoadAd();
}
private void requestLoadAd() {
// アプリオープニング広告を読み込みます。
if(appOpen != null && appOpen.isInitialized()) appOpen.load();
}
private void requestDestroyAd() {
// アプリオープニング広告を削除します。
if(appOpen != null) appOpen.destroy();
}
}