Android
Adiz Android¶
Adiz Androidは、AdMobが提供する広告露出機能をより簡単に利用できるように、Hiveが提供するAndroid用の広告モジュールです。Adiz Androidが提供する広告の種類は次のとおりです:
- インタースティシャル広告
- バナー広告
- ネイティブ広告
- 報酬型広告
- 報酬型インタースティシャル広告
- アプリオープン広告
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つあります。
- Hiveコンソールにテストデバイスを登録した後、デモ広告で設定してください(推奨):
コンソールガイドのTest Device Managementセクションを参照してください。 - 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つあります。
-
テストデバイスをHiveコンソールに登録した後、広告ユニットIDを使用に設定してください(推奨):
コンソールガイドのTest Device Managementセクションを参照してください。 -
Adizクラスの
setTestDevice()
メソッドを使用します:
以下の例のコードを参照してください。
Note
実際の広告を表示するテストを行う際にテストデバイスを登録せずに行うと、無効なトラフィックと見なされる可能性があり、その結果、あなたのAdMobアカウントがブロックされ、広告が表示されなくなります。テストデバイスを登録すると、広告表示中に「テストモード」または「テスト広告」(ネイティブ広告)が表示されます。商業配信中はテストデバイスを無効にする必要があります。
Adiz.setTestDevice() メソッドの使用¶
テストデバイスを登録するには、まずテストデバイスIDを確認する必要があります。テストデバイスID(例: 33BE2250B43518CCDA7DE426D04EE231
)は、以下の2つの方法で確認できます。
-
Adiz.Initialize()
を呼び出した後にLogcatログを確認してください: -
Adiz.Initialize()
を呼び出した後、広告の種類に関係なく、initialize()
→load()
を呼び出し、Logcatログを確認してください:
テストデバイスIDを確認した後、既存のAdiz初期化コードでAdiz.initialize
を実行する前にAdiz.setTestDevice(DEVICE_ID)
の行を追加します。コピーしたテストデバイスIDをDEVICE_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?) {
// ... omitted
}
})
}
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()) {
// ... omitted
}
}
});
}
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()) {
// ... omitted
}
}
});
}
広告インスペクターの使用¶
広告インスペクターは、テストデバイス上で実際の広告をリクエストして表示するプロセスをリアルタイムで分析するアプリ内オーバーレイツールです。広告の読み込みにかかる時間を通知し、広告が表示されない場合はその理由を提供します。また、特定の広告ネットワークを指定して、広告が正しく表示されているか確認することもでき、問題がある場合はコードレベルでデバッグできます。このプロセス全体は、広告インスペクターUIとともに実施されます。これは、Google Mobile Ads SDK バージョン 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)からの場合にのみ表示されます。Adizは、Google UMP(ユーザーメッセージングプラットフォーム)を通じてGDPR同意ポップアップの表示をサポートしています。AdMobコンソールでGDPRメッセージを作成した後、Adizを初期化して、ヨーロッパおよびイギリスからアクセスするユーザーにGDPRポップアップを表示します。
Warning
ヨーロッパおよび英国以外の地域をターゲットにしている場合、たとえば国内のみでサービスを提供する予定の場合は、GDPR同意ポップアップの表示(ヨーロッパ、英国)ステップをスキップし、Adiz.initializeForNonGDPR()
メソッドを使用して初期化を進めることができます。
Adiz.initialize()
メソッドを使用して初期化する場合は、Adizの初期化が正常に進行するために、AdMobコンソールにGDPRメッセージを書く必要があります。
GDPRメッセージの作成¶
Google AdMobコンソールにアクセスして、GDPRメッセージを作成します。GDPRメッセージを書く前に、GDPRメッセージ作成ガイドを参照してください。
GDPRメッセージを作成した場合、Adizが初期化されるとGDPR同意ポップアップが自動的に表示されます。
GDPR同意/撤回機能の実装¶
GDPR同意ポップアップの項目は、ユーザーがいつでも同意状況を変更できるように修正機能を提供する必要があります。たとえば、ユーザーは最初はGDPRに同意しないかもしれませんが、後でパーソナライズされた広告を見るために再度同意したいと思うかもしれません。または、逆に、ユーザーは最初はGDPRに同意していたが、もはや個人情報を提供したくないために同意を撤回したいと思うかもしれません。これらの状況に対処するために、アプリ開発者は各項目に再同意するか、既存の同意を撤回する機能を実装する必要があります。GDPR同意/撤回機能を実装するには、以下の手順に従ってください。
- アプリにGDPR同意ポップアップを再読み込みできるボタンUIを実装します。
- Adizの初期化を実装する際、
isPrivacyOptionsRequired()
を呼び出して、ヨーロッパおよび英国からアクセスするユーザーにボタンUIを表示し、それ以外のユーザーには表示しないようにします。ヨーロッパまたは英国のユーザーがボタンをクリックした場合、showPrivacyOptionsForm
を呼び出してGDPR同意ポップアップを再読み込みします。これにより、ユーザーはアプリ内の「オプションを管理」などのボタンを押すことで、いつでも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) {
// ... omitted
// 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) {
// アプリにボタンを表示します。(ボタンがクリックされるとGDPR同意ポップアップを表示するためにshowPrivacyOptionsForm()を呼び出します)
showGDPRConsentPopupButton();
} else {
// アプリにボタンを表示しません。
// アプリが望む他の処理。
}
}
}
});
}
public void showPrivacyOptionsForm(Activity activity) {
// Call GDPR consent options form
if(AdizConsentManager.isPrivacyOptionsRequired()) {
AdizConsentManager.showPrivacyOptionsForm(activity, new AdizConsentManager.ConsentListener() {
@Override
public void onResult(@NonNull AdizError error) {
// No need to do any error handling.
}
});
}
}
GDPR同意年齢未満のユーザーのためのタグ設定 (TFUA)¶
同意年齢未満のタグ(TFUA)を使用して、広告リクエストを行う際に、欧州経済領域(EEA)、英国、スイスに居住するユーザーを限定的なデータ処理の対象として扱うことができます。子供を対象としたアプリの場合、AdizConsentManager.setUserPrivacySettings
を使用してユーザーを同意年齢未満として設定できます。欧州各国にはいくつかの違いがありますが、GDPRでは親の同意が必要な年齢を16歳未満と定義しています。同意年齢未満の設定は、Adiz.initialize
を実行する前に構成する必要があります。
Warning
setTagForUnderAgeOfConsent
タグをGDPR同意年齢のために、setTagForChildDirectedTreatment
設定をCOPPAの子供たちのために同時に 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?) {
// ... omitted
}
})
}
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()) {
// ... omitted
}
}
});
}
GDPRテストデバイスの設定¶
GDPR同意ポップアップは、デバイスのIPアドレスがヨーロッパまたは英国からの場合にのみ表示されます。開発段階では、GDPR同意ポップアップをIPアドレスに関係なく強制的に表示させることができ、ポップアップの表示をテストすることができます。これを行うには、GDPRテストデバイスを設定する必要があります。Hiveコンソールでテストデバイスを設定すると、テストが簡単になります。 setTestDevice
メソッドを使用して設定する方法は以下の通りで、テストデバイスでの広告表示と同じです。
- Adizを初期化して初期化します。これはテストデバイスIDを確認するための初期化であり、GDPR同意メッセージを書く必要はありません。
デバイスIDを確認するメッセージがあるかどうか、logcatの出力を確認します。以下は例のメッセージです。
- デバイスIDのメッセージを確認します(例:
33BE2250B43518CCDA7DE426D04EE231
)。 - デバイスIDをコピーします。
- 既存のAdiz初期化コード内で
AdizGDPRManager.setTestDevice(DEVICE_ID)
をAdiz.initialize
を実行する前に追加します。 - GDPR同意メッセージを書くと、GDPR同意ポップアップが正しく表示されることを確認するためにAdizを再初期化します。
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?) {
// ... omitted
}
})
}
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()) {
// ... omitted
}
}
});
}
COPPA子供ターゲティングタグ設定¶
子供のオンラインプライバシー保護法(COPPA)に従い、アプリ開発者は広告リクエストを行う際に、Googleがコンテンツを子供向けとして扱うべきかどうかを、子供ターゲティングタグ(tagForChildDirectedTreatment、TFCD)を設定することで指定できます。子供向けとして扱われることを希望する場合は、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?) {
// ... omitted
}
})
}
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()) {
// ... omitted
}
}
});
}
広告仲介を追加¶
AdizはAdMob仲介を使用して広告を表示できます。AdMob仲介を追加するには、以下の手順に従ってください。
AdMobメディエーションの追加¶
AdMobコンソールで広告ソースの統合を進めます。以下の表に従って進んでください。
AppLovin | Liftoff Monetize | Meta Audience Network | Pangle | Unity Ads | |
---|---|---|---|---|---|
ステップ 1 | AppLovinの設定を行う | Pangleの設定を行う | Unity Adsの設定を行う | Liftoff Monetizeの設定を行う | Meta Audience Networkの設定を行う |
ステップ 2 | AdMobにAppLovin広告ソースを追加する | AdMobにLiftoff Monetize広告ソースを追加する | AdMobにMeta Audience Network広告ソースを追加する | AdMobにPangle広告ソースを追加する | AdMobにUnity Ads広告ソースを追加する |
ステップ 3 | Adizアダプターを追加する |
Adizアダプターの追加¶
アプリレベルのbuild.gradleにライブラリ依存関係を追加します。
dependencies {
// ... (생략)
implementation 'com.com2us.android.adiz:hive-adiz:2.1.1' // Common (required addition)
implementation 'com.com2us.android.adiz:hive-adiz-adapter-applovin:2.1.1' // Add when integrating AppLovin
implementation 'com.com2us.android.adiz:hive-adiz-adapter-pangle:2.1.1' // Add when integrating Pangle
implementation 'com.com2us.android.adiz:hive-adiz-adapter-unityads:2.1.1' // Add when integrating Unity Ads
implementation 'com.com2us.android.adiz:hive-adiz-adapter-meta:2.1.1' // Add when integrating Meta
}
Pangleを統合する際は、以下の設定を追加してください。Gradle 7.0以上を使用している場合は、プロジェクトレベルのsettings.gradleのdependencyResolutionManagement
セクションにrepository
設定を追加してください。
// When using Gradle 7.0 or higher, configure settings.gradle
dependencyResolutionManagement {
repositories {
maven { url 'https://artifact.bytedance.com/repository/pangle/' } // Add when integrating Pangle
}
}
Gradleのバージョンが7.0未満の場合、プロジェクトレベルのbuild.gradleファイルのallprojects
セクションにrepository
設定を追加してください。
// Configuration for build.gradle when using Gradle below 7.0
allprojects {
repositories {
maven {
url 'https://artifact.bytedance.com/repository/pangle' // Add when integrating Pangle
}
}
}
Adizアダプターの設定が正しく適用されていることを確認するには、アプリを実行し、Ad Inspector画面の設定リストを確認してください。
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>();
試してみてください {
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"
}
]
}
テストモードで初期化すると、Hive コンソールにAdMob広告キーを登録していなくても、テスト広告キーのリストが受け取れます。プロダクションモードで初期化すると、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) | 広告表示後に有料イベントを受信した時点で、広告収益情報が伝達されます | 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() {
// 広告がクリックされたときに呼ばれます。
}
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) {
// 広告の読み込みが失敗した場合、または他の理由で広告の表示が失敗した場合に呼び出されます。
}
@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 | 無効なユニットID |
-107 | MediationNoFill | 仲介アダプタが広告リクエストを処理できませんでした |
-108 | AlreadyLoaded | すでに読み込み状態です |
-109 | CannotRequestAds | 広告をリクエストできません |
-201 | GdprConsentError | GDPR同意エラー |
-202 | IsNotPrivacyOptionsRequired | GDPR同意ポップアップを表示できないか、表示する必要がない状態です |
広告の表示と広告の終了¶
広告を表示し、終了するには、次の手順に従ってください。
- 表示したい広告の種類ごとに広告クラスで広告インスタンスを作成します。表示したい広告がデフォルト広告でない場合は、初期化から取得した広告キーまたは配置IDを入力する必要があります。
広告キー(hiveAdKey
)または配置ID(placementId
)を入力しない場合、デフォルト広告インスタンスが作成されます。配置IDはHiveコンソールで設定でき、詳細についてはコンソールガイドの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() // error code
var message = loadError.getMessage() // error message
}
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(); // error code
String message = loadError.getMessage(); // error message
}
@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();
}
}
バナー広告¶
これは特定のサイズのバナーを表示するバナー広告です。バナー広告は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() // error code
var message = loadError.getMessage() // error message
}
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()) {
// バナー広告のインスタンスを作成します。
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(); // revenue when ad is exposed
String currency = adRevenueData.getCurrency(); // currency code for revenue when ad is exposed
}
};
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();
}
}
ネイティブ広告¶
これは特定のサイズのネイティブテンプレートを表示するネイティブ広告です。ネイティブ広告は縦型画面に最適化されているため、縦型ゲーム(ポートレート画面ゲーム)での使用が推奨されます。ネイティブ広告はonClose()
コールバックを受け取りません。したがって、広告を閉じるには別の場所からdestroy()
を呼び出す必要があります。
現在のテンプレートはsmall
またはmedium
サイズをサポートしています。
テンプレート | 整列 | バナーサイズ定数 |
---|---|---|
小サイズ | 上 / 下 | BannerSize.NORMAL |
中サイズ | 中央(固定) | 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)) {
// 基本キーがis_default=trueに設定された状態でHive Adiz初期化中に受信された基本キーでインスタンスが生成されます。(HiveAdKeyが入力されていない場合、基本キーでインスタンスが生成されます。)
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();
}
}
報酬広告¶
これは、ユーザーが一定の時間広告を視聴することで報酬を受け取る報酬広告です。報酬が付与されると、報酬アイテム情報は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();
}
}
報酬付きインタースティシャル¶
これは、ユーザーが一定の時間広告を視聴することで報酬を受け取る報酬付きインタースティシャル広告です。報酬が付与されると、報酬アイテムの情報が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()) {
// Creates an app opening ad instance.
appOpen = AdizAppOpen.initialize(activity, adizListener)
} else {
// You can create an app opening ad instance by entering the 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() {
// アプリオープニング広告を読み込みます。読み込みが完了すると、アプリがバックグラウンドからフォアグラウンドに移動したときに広告が自動的に表示されます。
// 広告が少なくとも1回表示されると、再表示されることはないため、広告を表示し続けたい場合は、onClose() コールバック内で再度 appOpen.load() を呼び出す必要があります。
appOpen?.let {
if(it.isInitialized()) it.load()
}
}
fun requestDestroyAd() {
// Removes the app opening ad.
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();
}
}