跳轉至

Android

Adiz Android

Adiz Android 是由 Hive 提供的 Android 广告模块,旨在简化使用 AdMob 提供的广告曝光功能。Adiz Android 提供的广告类型如下:

  • 插頁廣告
  • 橫幅廣告
  • 原生廣告
  • 獎勵廣告
  • 獎勵插頁廣告
  • 應用開啟廣告

要安裝和使用 Adiz Android,請參考以下指南。

安裝

將 Adiz 庫項目添加到您的模塊的應用級 Gradle 文件 (app/build.gradle)。

dependencies {
    implementation 'com.com2us.android.adiz:hive-adiz:2.0.1'
}

要支持 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時,AdizProguard規則已經包含在Adiz模組中。因此,無需將Proguard規則添加到您的項目中。  

要顯示視頻廣告,必須啟用硬體加速。請在AndroidManifest.xml文件中添加以下硬體加速設置。將其添加到application標籤將對整個應用程序使用硬體加速。將其添加到activity標籤將僅對您希望顯示廣告的特定Activity使用硬體加速。

<application android:hardwareAccelerated="true">
    <!-- For activities that use ads, hardwareAcceleration should be true. -->
    <activity android:hardwareAccelerated="true" />
</application> 

設定 test ads

Adiz 允許您以兩種方式顯示測試廣告。

  1. 啟用測試模式:僅顯示由AdMob發佈的測試廣告。
  2. 註冊測試設備並顯示廣告:為測試目的顯示真實廣告。註冊設備以顯示測試廣告,以確保在測試期間不會發生無效流量。

啟用測試模式

在開發階段,啟用測試模式,以便點擊測試廣告不會對廣告主產生費用。當測試模式啟用時,只會顯示測試廣告。在測試模式下,您不需要在 Hive 控制台中輸入 AdMob 廣告金鑰即可顯示測試廣告。商業發行時請禁用測試模式。

Note

如果您在开发阶段的测试模式下过多点击广告,可能会被视为无效流量,您的AdMob帐户可能会被举报,从而阻止您展示广告。

import com.hive.Adiz
import com.hive.adiz.AdizError

import org.json.JSONException
import org.json.JSONObject

// 啟用測試模式。將以下行註釋掉以進行商業發行。
Adiz.setTestMode(true)

// 啟用 Adiz 模組的日誌記錄。日誌記錄應僅在測試模式下使用。對於商業發行,請註釋掉下面的行。
Adiz.setLogEnable(true)
import com.hive.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);

// 啟用 Adiz 模組的日誌記錄。日誌記錄應僅在測試模式下使用。對於商業發行,請註釋掉以下行。
Adiz.setLogEnable(true);

設定測試設備以顯示廣告

您應該在以下情況下註冊測試設備以顯示測試廣告:

  • 當測試在 Hive 控制台中註冊的 AdMob 廣告金鑰是否正常運作時
  • 當您想確保 GDPR 同意彈出窗口在您撰寫了 GDPR 消息 後正常工作時
  • 當您需要運行 Ad Inspector 來分析和調試廣告請求時

在未註冊測試設備的情況下測試真實廣告可能會被視為無效流量,導致您的AdMob帳戶被封鎖,並且無法再顯示廣告。當您註冊測試設備時,廣告顯示期間將顯示“測試 模式”或“測試 廣告”(針對原生廣告)。測試設備應在生產部署時禁用。

 

Banner, Interstitial, or Rewarded Ad

 

Native Ad

 

要註冊測試設備,首先,識別您的測試設備 ID。您可以使用以下兩種方法找到測試設備 ID(例如,33BE2250B43518CCDA7DE426D04EE231):

  1. 在調用 Adiz.Initialize() 後,檢查 Logcat 日誌:
    使用 new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") 將其設置為調試設備。
  2. 在調用 Adiz.Initialize() 後,無論廣告類型如何,調用 initialize()load(),然後檢查 Logcat 日誌:
    I/Ads: 使用 RequestConfiguration.Builder.setTestDeviceIds(Arrays.asList("33BE2250B43518CCDA7DE426D04EE231")) 以在此設備上獲取測試廣告。

 

在識別測試設備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?) {
                        // ... skipped
                }
        })
}
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()) {
                                // ... skipped
                        }
                }
        });
}


使用廣告檢查器

廣告檢查器是一個應用內的覆蓋工具,實時分析在測試設備上請求和顯示真實廣告的過程。它告知您加載廣告所需的時間,如果顯示失敗,則提供失敗的原因。此外,您可以指定某個廣告網絡以檢查廣告是否正確顯示,如果存在問題,您可以在代碼層面進行調試。所有這些過程都是通過廣告檢查器UI進行的。它包含在Google Mobile Ads SDK Android 20.0.0及以上版本中,並且可以通過調用AdizDeveloperTool.openAdInspector來使用。

 

要使用Ad檢查器,必須滿足以下兩個條件:

  • 按照設置測試設備的說明,使用Adiz.setTestDevice設置測試設備
  • 按照初始化的說明,使用Adiz.Initialize完成初始化
import com.hive.adiz.utils.AdizDeveloperTool

AdizDeveloperTool.openAdInspector(activity)
import com.hive.adiz.utils.AdizDeveloperTool;

AdizDeveloperTool.openAdInspector(activity);

設定 Adiz AppID

設定您在 Hive 控制台 AppCenter 中註冊的 Adiz AppID。如果未設定,則使用 AndroidManifest.xml 包名。

Adiz.setAppId("YOUR_APPID")
Adiz.setAppId("YOUR_APPID");

設定 Hive 控制台伺服器

設定您想要使用的 Hive 控制台伺服器。預設為 REAL。即使您使用商業伺服器,如果啟用了測試模式,仍會顯示測試廣告。

  • Hive 測試控制台伺服器: ZoneType.TEST
  • Hive 沙盒控制台伺服器: ZoneType.SANDBOX
  • Hive 商業控制台伺服器: ZoneType.REAL
Adiz.setZone(AdizConfiguration.ZoneType.REAL)
Adiz.setZone(AdizConfiguration.ZoneType.REAL);

如果您的遊戲針對歐洲和英國EEA英國),則必須顯示GDPR(一般數據保護條例)同意彈出窗口。只有當用戶的設備IP地址來自歐洲或英國EEA英國)時,才會顯示GDPR同意彈出窗口。 Adiz 支持GoogleUMP用戶 消息 平台)來顯示GDPR同意彈出窗口。

AdMob控制台中创建GDPR消息后,当您初始化Adiz时,GDPR弹出窗口将显示给来自欧洲和英国的用户。

Warning

即使您瞄準的是歐洲和英國以外的地區,您仍然必須在AdMob 控制台中創建GDPR 消息,以便Adiz 的初始化能夠正確執行。

創建 GDPR 訊息

訪問 Google AdMob 控制台以創建 GDPR 訊息。在創建 GDPR 訊息之前,請參考 GDPR 訊息創建指南

在創建GDPR消息後,GDPR同意彈出窗口將在Adiz的初始化期間自動顯示。

實施GDPR同意/撤回的選項

GDPR 同意彈出窗口應允許用戶隨時修改他們的同意。例如,最初不願意同意 GDPR 的用戶如果希望接收個性化廣告,可能會想要同意,反之亦然。為了適應這些情況,開發人員必須實現用戶再次同意或撤回先前同意的功能。要實現 GDPR 同意/撤回功能,請遵循以下步驟:

  1. 在您的應用中實現一個按鈕 UI 來重新加載 GDPR 同意彈出窗口。
  2. 在實現 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) {
                                // ... 跳过
                                // 确定是否在应用程序 UI 上显示按钮以再次显示 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;
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()) {
                                // ... 跳過
                                // 確定是否在應用程式 UI 上顯示按鈕以再次顯示 GDPR 同意彈出窗口
                                boolean isPrivacyOptionsRequired = AdizConsentManager.isPrivacyOptionsRequired();
                                if(isPrivacyOptionsRequired) {
                                        // 在應用程式中顯示按鈕。 (當按鈕被點擊時,調用 showPrivacyOptionsForm() 來顯示 GDPR 同意彈出窗口)
                                        showGDPRConsentPopupButton()
                                } else {
                                        // 不會在應用程式中顯示按鈕。
                                        // 在應用程式中執行其他所需的操作。
                                }
                        }
                }
        });
}


public void showPrivacyOptionsForm(Activity activity) {
        // Call the GDPR consent popup
        if(AdizConsentManager.isPrivacyOptionsRequired()) {
                AdizConsentManager.showPrivacyOptionsForm(activity, new AdizConsentManager.ConsentListener() {
                        @Override
                        public void onResult(@NonNull AdizError error) {
                                // No need to do any error handling.
                        }
                });
        }
}

設定 tag 針對 under age of consent

使用未成年人同意TFUA)标签,您可以配置广告请求,将居住在欧洲经济区(EEA)、英国和瑞士的用户视为有限数据处理的对象。对于服务儿童的应用程序,您可以使用AdizConsentManager.setUserPrivacySettings设置用户为未满同意年龄。虽然欧洲各国之间存在一些差异,GDPR将需要父母同意的年龄定义为16岁以下。必须在执行Adiz.initialize之前配置同意年龄设置。

Warning

如果未滿同意年齡的用戶的GDPR標籤setTagForUnderAgeOfConsent和針對兒童的COPPA標籤setTagForChildDirectedTreatment都設置為true,則COPPA標籤將優先。因此,請不要同時將它們設置為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 // change this to true if the user is a child

        val settings = PrivacySettings.Builder()
                .setTagForUnderAgeOfConsent(isUnderAgeForGDPR)
                .build()
        AdizConsentManager.setUserPrivacySettings(settings)

        Adiz.initialize(activity, object : Adiz.SdkInitializationListener {
                override fun onComplete(error: AdizError, jsonData: JSONObject?) {
                        // ... skipped
                }
        })
}
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; // change this to true if the user is a child

        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()) {
                                // ... skipped
                        }
                }
        });
}

設定 GDPR 測試設備

GDPR 同意彈出窗口僅在設備的 IP 地址來自歐洲或英國時顯示。在開發過程中,您可以通過設置 GDPR 測試設備,強制顯示 GDPR 同意彈出窗口,而不管設備的 IP 地址,以便進行測試。請按照以下步驟設置 GDPR 測試設備:

  1. 初始化 Adiz。此初始化的目的是检查测试设备ID,因此您无需提前创建GDPR同意消息。
  2. 在Logcat日志输出中找到设备ID。以下是一个示例消息: 使用新的 ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") 将其设置为调试设备。
    获取设备ID(示例:33BE2250B43518CCDA7DE426D04EE231)。
  3. 复制设备ID。
  4. 在现有的 Adiz 初始化代码中执行Adiz.setTestDevice(DEVICE_ID),然后再执行Adiz.initialize
  5. 创建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?) {
                        // ... Skipped
                }
        })
}
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()) {
                                // ... Skipped
                        }
                }
        });
}

設定 tag 以進行兒童導向的處理

根據《兒童在線隱私保護法》(COPPA),應用程序開發者可以指定在廣告請求中,Google 是否應將內容視為兒童導向,方法是設置 tagForChildDirectedTreatmentTFCD)。如果您希望內容被視為針對兒童,則必須在執行 Adiz.initialize 之前調用 AdizConsentManager.setUserPrivacySettings。在使用 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 // set true if the user is a child

        val settings = PrivacySettings.Builder()
                .setTagForChildDirectedTreatment(isChildDirectedTreatmentForCOPPA)
                .build()
        AdizConsentManager.setUserPrivacySettings(settings)

        Adiz.initialize(activity, object : Adiz.SdkInitializationListener {
                override fun onComplete(error: AdizError, jsonData: JSONObject?) {
                        // ... skipped
                }
        })
}
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; // set true if the user is a child

        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()) {
                                // ... skipped
                        }
                }
        });
}

添加廣告的調解

Adiz 允許使用 AdMob 調解顯示廣告。要添加 AdMob 調解,請按照以下步驟進行。

添加AdMob 中介

继续在AdMob 控制台中集成广告来源。请遵循下表。

AppLovin Pangle Unity Ads Meta
步骤 1 设置 AppLovin 配置 设置 Pangle 配置 设置 Unity Ads 配置 设置 Meta 配置
步骤 2 将 AppLovin 广告源添加到 AdMob 将 Pangle 广告源添加到 AdMob 将 Unity Ads 广告源添加到 AdMob 将 Meta 广告源添加到 AdMob
步骤 3 添加 Adiz 适配器

添加 adiz 适配器

将库依赖项添加到您的应用级 build.gradle


dependencies {
    // ... (omitted)

    implementation 'com.com2us.android.adiz:hive-adiz:2.0.0' // Common (must be added)

    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.gradledependencyResolutionManagement部分中添加repository設置。


// Settings for Gradle 7.0 or above in settings.gradle

dependencyResolutionManagement {
    repositories {
        maven { url 'https://artifact.bytedance.com/repository/pangle/' } // Add for Pangle integration
    }
}

 

如果您使用的是Gradle版本低于7.0,请在项目级build.gradleallprojects部分中添加repository设置。


// Settings for Gradle version less than 7.0 in build.gradle

所有项目 {
    存储库 {
        maven {
            url 'https://artifact.bytedance.com/repository/pangle' // 添加用于 Pangle 集成
        }

    }
}

 

要驗證Adiz適配器配置是否已正確應用,請運行您的應用程序並檢查Ad Inspector螢幕上的配置列表。

初始化 adiz

Adiz 的初始化是展示任何類型廣告之前的必要步驟。當您初始化 Adiz 時,您可以接收顯示廣告所需的廣告密鑰。如果啟用了測試模式,您將收到一個測試密鑰。如果您使用的是 Hive SDK,請在調用 AuthV4.setup 後繼續進行 Adiz 初始化。

Adiz.initialize(activity, 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>()

                                尝试 {
                                        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) {
                                        //...
                                }
                        }
                }
        }
})

Adiz.initialize(activity, 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);

                                                // 一個構建鍵列表的示例,其中 is_default 為 false,如果您直接在遊戲中輸入廣告鍵。
                                                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) {

                                }
                        }
                }
        }
});

在初始化时,作为回调接收的 JSON 文件包含广告键的列表。广告键列表的格式如下:

    {
        "keys":[
            {
                "mediation_id":5,
                "key":"ca-app-pub-3940256099942544/5354046379",
                "form":"rewarded_interstitial",
                "is_default":true
            },
            {
                "mediation_id":4,
                "key":"ca-app-pub-3940256099942544/5224354917",
                "form":"rewarded",
                "is_default":true
            },
            {
                "mediation_id":3,
                "key":"ca-app-pub-3940256099942544/2247696110",
                "form":"native",
                "is_default":true
            },
            {
                "mediation_id":1,
                "key":"ca-app-pub-3940256099942544/1033173712",
                "form":"interstitial",
                "is_default":true
            },
            {
                "mediation_id":2,
                "key":"ca-app-pub-3940256099942544/6300978111",
                "form":"banner",
                "is_default":true
            },
            {
                "mediation_id":6,
                "key":"ca-app-pub-3940256099942544/9257395921",
                "form":"app_open",
                "is_default":true
            }
        ]
    }

如果您在測試模式下初始化,即使您尚未在 Hive 控制台中註冊 AdMob 廣告鍵,您仍會收到測試廣告鍵的列表。如果您在商業模式下初始化,您將收到在 Hive 控制台中註冊的 AdMob 廣告鍵的列表。

每種廣告格式都有一個廣告作為預設廣告(具有 "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() 廣告關閉 在廣告關閉後,要再次顯示相同的廣告實例,您需要調用 load() 然後調用 show() 如果您不再希望顯示廣告,請調用 destroy() 以移除廣告實例。 X
onRewarded(rewardItem: RewardItem) 用戶在顯示獎勵廣告(rewardedrewarded interstitial)後獲得獎勵的時刻 X
var adizListener = object : AdizListener() {
        override fun onLoad() {
                // Called when the ad is loaded.
                // If the ad load is successful, you need to call the ad instance's .show() at the desired point to display the ad.
        }

        override fun onFail(loadError: AdizError) {
                // 如果廣告加載失敗或因其他原因廣告顯示失敗時調用。
        }

        override fun onShow() {
                // Called when the ad is displayed.
        }

        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) {
        // 如果廣告加載失敗或因其他原因顯示廣告失敗,則會調用此方法。
        }

        @Override
        public void onShow() {
        // Called when the ad is displayed.
        }

        @Override
        public void onClick() {
        // 當廣告被點擊時調用。
        }

        @Override
        public void onPaidEvent(@NonNull AdRevenueData adRevenueData) {         
        double revenue = adRevenueData.getRevenue(); // Revenue at the time of ad display
        String currency = adRevenueData.getCurrency(); // Currency code for the revenue at the time of ad display      
    }

        @Override
        public void onClose() {
        // 當廣告關閉時調用。
        // 橫幅廣告和原生廣告沒有關閉按鈕,因此沒有 onClose 回調。
        }

    @Override
    public void onRewarded(@NonNull RewardItem rewardItem) {
        // 當觀看廣告時,獲得獎勵時會被調用,適用於獎勵型和獎勵插播廣告。
            String rewardType = rewardItem.getItemType(); // 獎勵項目類型
        int rewardAmount = rewardItem.getItemAmount(); // 獎勵項目數量
    }
};

錯誤代碼

當收到 onFail() 時,Adiz.InitializeAdizListener 的錯誤代碼和錯誤消息如下:

常用代碼

編號 案例 說明
0 成功 成功的

Adiz 錯誤代碼

編號 案例 說明
-1 InvalidParam 無效的參數
-2 NotSupported 不支援
-3 InProgress 處理中
-4 Network 網路錯誤
-5 NeedInitialize 需要初始化
-6 ResponseFail 回應失敗
-7 Timeout 網路逾時
-99 Unknown 未知錯誤

廣告平台錯誤代碼

編號 案例 解釋
-101 需要加載 廣告未加載
-102 需要重新加載 由於廣告顯示時間到期,需要重新加載
-103 庫存不足 介面回應成功,但由於庫存不足而沒有填充的廣告
-104 缺少 AppID 介面請求的 AppID 錯誤
-105 內部網絡錯誤 介面網絡相關錯誤
-106 無效的單元 ID 無效的單元 ID
-107 介面無填充 介面適配器無法處理廣告請求
-108 已經加載 已經加載
-109 無法請求廣告 無法請求廣告
-201 GDPR 同意錯誤 GDPR 同意錯誤
-202 不需要隱私選項 不需要顯示或無法顯示 GDPR 同意彈出窗口

廣告曝光與終止

要曝光和終止廣告,請按照以下步驟操作:

  1. 為您想要展示的每種類型的廣告從廣告類別創建廣告實例。如果您想要展示的廣告不是默認廣告,則需要輸入從初始化中獲得的廣告鍵。如果您不輸入廣告鍵(hiveAdKey),則會創建一個默認廣告實例。
  2. 加載(load())您想要展示的廣告。
  3. 展示(show())已加載的廣告。要重新展示廣告,您必須再次調用load(),然後跟隨show()
  4. 要終止廣告,請調用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)
        }

        fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
                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 // revenue when ad is exposed
                                var currency = adRevenueData.currency // currency code for revenue when ad is exposed
                        }

                        override fun onClose() {
                                // requestDestroyAd()
                        }
                }

                if(hiveAdKey == null) {
                        // 创建一个插页广告实例。
                        interstitialAd = AdizInterstitial.initialize(activity, adizListener)
                } else {
                        // 您可以通过输入hiveAdKey来创建插页广告实例。
                        interstitialAd = AdizInterstitial.initialize(activity, hiveAdKey, adizListener)
                }

                // requestLoadAd()
        }

        fun requestLoadAd() {
                // 加載插頁式廣告。
                interstitialAd?.load()
        }

        fun requestShowAd() {
                // Expose the interstitial ad.
                interstitialAd?.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);
        }

        public void requestInitAd(Activity activity, String hiveAdKey) {

                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(); // revenue when ad is exposed
                                String currency = adRevenueData.getCurrency(); // currency code for revenue when ad is exposed
                        }
                };

                if(TextUtils.isEmpty(hiveAdKey)) {
                        // 創建插頁式廣告實例。
                        interstitialAd = AdizInterstitial.initialize(activity, adizListener);
                } else {
                        // 您可以通過輸入 hiveAdKey 創建插頁式廣告實例。
                        interstitialAd = AdizInterstitial.initialize(activity, hiveAdKey, adizListener);
                }

                // requestLoadAd();
        }

        private void requestLoadAd() {
                // Load the interstitial ad.
                if(interstitialAd != null) interstitialAd.load();
        }

        private void  requestShowAd() {
                // 顯示插頁式廣告。
                if(interstitialAd != null) interstitialAd.show();
        }

        private void  requestDestroyAd() {
                // 移除插页广告。
                if(interstitialAd != null) interstitialAd.destroy();
        }
}

橫幅廣告顯示特定大小的橫幅。橫幅廣告不會接收 onClose() 回調。因此,您必須從其他位置調用 destroy() 來終止廣告。

BannerSize 遵循標準橫幅尺寸。

尺寸點 (寬 x 高) 描述 支援設備 橫幅尺寸常數
320x50 橫幅 手機和平板電腦 BannerSize.NORMAL
320x100 大橫幅 手機和平板電腦 BannerSize.MEDIUM
300x250 IAB 中型矩形 手機和平板電腦 BannerSize.LARGE
468x60 IAB 全尺寸橫幅 平板電腦 BannerSize.FULL

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)
        }

        fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
                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 // revenue when ad is exposed
                                var currency = adRevenueData.currency // currency code for revenue when ad is exposed
                        }
                }

                if(hiveAdKey == null) {
                        // 創建一個橫幅廣告實例。
                        banner = AdizBanner.initialize(activity, bannerSize, adizListener)
                } else {
                        // 您可以通過輸入 hiveAdKey 創建一個橫幅廣告實例。
                        banner = AdizBanner.initialize(activity, hiveAdKey, bannerSize, adizListener)
                }

                // requestLoadAd()
        }

        fun requestLoadAd() {
                // Load the banner ad.
                banner?.load()
        }

        fun requestShowAd() {
                // 顯示橫幅廣告。
                banner?.show()

                // 設定橫幅位置
                // var position = PositionType.TOP
                // banner?.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);
        }

        public void requestInitAd(Activity activity, String hiveAdKey) {

                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
                        }
                };

                if(TextUtils.isEmpty(hiveAdKey)) {
                        // 创建一个横幅广告实例。
                        banner = AdizBanner.initialize(activity, bannerSize, adizListener);
                } else {
                        // 您可以通过输入 hiveAdKey 来创建一个横幅广告实例。
                        banner = AdizBanner.initialize(activity, hiveAdKey, bannerSize, adizListener);
                }

                // requestLoadAd();
        }

        private void requestLoadAd() {
                // Load the banner ad.
                if(banner != null) banner.load();
        }

        private void  requestShowAd() {
                // 顯示橫幅廣告。
                if(banner != null) banner.show();

                // 設定橫幅位置
                // PositionType position = PositionType.TOP;
                // if(banner != null) banner.show(position);
        }

        private void  requestDestroyAd() {
                // 移除橫幅廣告。
                if(banner != null) banner.destroy();
        }
}

原生廣告 (Native)

原生廣告顯示特定大小的原生模板。原生廣告已針對豎屏進行優化,因此建議在豎屏遊戲(垂直屏幕遊戲)中使用它們。原生廣告不會接收 onClose() 回調。因此,您必須從其他位置調用 destroy() 來終止廣告。

目前,模板支持 smallmedium 尺寸。

模板 對齊 橫幅大小常數
小尺寸 上 / 下 BannerSize.NORMAL
中尺寸 中間 (固定) BannerSize.MEDIUM

對於 small 模板,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)
        }

        fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
                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 // 广告显示时的收入的货币代码
                        }
                }

                if(hiveAdKey == null) {
                        // 创建一个原生广告实例。
                        nativeAd = AdizNative.initialize(activity, bannerSize, adizListener)
                } else {
                        // 您可以通过输入hiveAdKey来创建一个原生广告实例。
                        nativeAd = AdizNative.initialize(activity, hiveAdKey, bannerSize, adizListener)
                }

                // requestLoadAd()
        }

        fun requestLoadAd() {
                // Load the native ad.
                nativeAd?.load()
        }

        fun requestShowAd() {
                // 顯示本地廣告。
                nativeAd?.show()

                // 設定橫幅位置
                // var position = PositionType.TOP
                // nativeAd?.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);
        }

        public void requestInitAd(Activity activity, String hiveAdKey) {

                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(); // 广告展示时的收入货币代码
                        }
                };

                if(TextUtils.isEmpty(hiveAdKey)) {
                        // 创建一个原生广告实例。(如果没有输入 AdKey,则实例将使用默认密钥创建,设置为 is_default=true,这是在 Adiz 初始化期间接收到的。)
                        nativeAd = AdizNative.initialize(activity, bannerSize, adizListener);
                } else {
                        // 您可以通过输入 hiveAdKey 来创建一个原生广告实例。
                        nativeAd = AdizNative.initialize(activity, hiveAdKey, bannerSize, adizListener);
                }

                // requestLoadAd();
        }

        private void requestLoadAd() {
                // Load the native ad.
                if(nativeAd != null) nativeAd.load();
        }

        private void  requestShowAd() {
                // 顯示本地廣告。
                if(nativeAd != null) nativeAd.show();

                // 設定橫幅位置
                // PositionType position = PositionType.TOP;
                // if(nativeAd != null) 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)
        }

        fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
                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 // 獎勵項目數量
                        }
                }

                if(hiveAdKey == null) {
                        // 创建一个奖励广告实例。
                        rewardedAd = AdizRewarded.initialize(activity, adizListener)
                } else {
                        // 您可以通过输入 hiveAdKey 来创建一个奖励广告实例。
                        rewardedAd = AdizRewarded.initialize(activity, hiveAdKey, adizListener)
                }

                // requestLoadAd()
        }

        fun requestLoadAd() {
                // Load the rewarded ad.
                rewardedAd?.load()
        }

        fun requestShowAd() {
                // 顯示獎勵廣告。
                rewardedAd?.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);
        }

        public void requestInitAd(Activity activity, String hiveAdKey) {

                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 shown
                                String currency = adRevenueData.getCurrency(); // Currency code for revenue when ad is shown
                        }

                        @Override
                        public void onClose() {
                                // requestDestroyAd();
                        }

                        @Override
                        public void onRewarded(@NonNull RewardItem rewardItem) {
                                String rewardType = rewardItem.getItemType(); // 獎勵物品類型
                                int rewardAmount = rewardItem.getItemAmount(); // 獎勵物品數量  
                        }
                };

                if(TextUtils.isEmpty(hiveAdKey)) {
                        // 創建一個獎勵廣告實例。(如果未輸入 AdKey,則使用在 Adiz 初始化期間收到的默認鍵 (is_default=true) 創建實例。)
                        rewardedAd = AdizRewarded.initialize(activity, adizListener);
                } else {
                        // 您可以通過輸入 hiveAdKey 創建獎勵廣告實例。
                        rewardedAd = AdizRewarded.initialize(activity, hiveAdKey, adizListener);
                }

                // requestLoadAd();
        }

        private void requestLoadAd() {
                // Load the rewarded ad.
                if(rewardedAd != null) rewardedAd.load();
        }

        private void  requestShowAd() {
                // 顯示獎勵廣告。
                if(rewardedAd != null) 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)
        }

        fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
                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 // 獎勵項目數量
                        }
                }

                if(hiveAdKey == null) {
                        // 創建獎勵插播廣告的實例。
                        rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, adizListener)
                } else {
                        // 您可以通過輸入 hiveAdKey 來創建獎勵插播廣告的實例。
                        rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, hiveAdKey, adizListener)
                }

                // requestLoadAd()
        }

        fun requestLoadAd() {
                // 加載獎勵插頁廣告。
                rewardedInterstitialAd?.load()
        }

        fun requestShowAd() {
                // 顯示獎勵插播廣告。
                rewardedInterstitialAd?.show()
        }

        fun requestDestroyAd() {
                // Removes the rewarded interstitial ad.
                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);
        }

        public void requestInitAd(Activity activity, String hiveAdKey) {

                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(); // 奖励物品数量
                        }
                };

                if(TextUtils.isEmpty(hiveAdKey)) {
                        // 創建獎勵插頁廣告的實例(如果未輸入廣告鍵(HiveAdKey),則在Adiz初始化期間將使用默認鍵(is_default=true)創建實例。)
                        rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, adizListener);
                } else {
                        // 您可以通過輸入hiveAdKey來創建獎勵插頁廣告的實例。
                        rewardedInterstitialAd = AdizRewardedInterstitial.initialize(activity, hiveAdKey, adizListener);
                }

                // requestLoadAd();
        }

        private void requestLoadAd() {
                // 加載獎勵插播廣告。
                if(rewardedInterstitialAd != null) rewardedInterstitialAd.load();
        }

        private void  requestShowAd() {
                // 顯示獎勵插頁廣告。
                if(rewardedInterstitialAd != null) rewardedInterstitialAd.show();
        }

        private void  requestDestroyAd() {
                // Removes the rewarded interstitial ad.
                if(rewardedInterstitialAd != null) rewardedInterstitialAd.destroy();
        }
}

這是翻譯的內容:

應用程式開啟廣告 (應用開啟)

應用程式開啟廣告在應用程式狀態從背景轉換到前景時顯示預加載的 (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)
        }

        fun requestInitAd(activity: Activity, hiveAdKey: String? = null) {
                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()
                        }
                }

                if(hiveAdKey == null) {
                        // 创建一个应用打开广告实例。
                        appOpen = AdizAppOpen.initialize(activity, adizListener)
                } else {
                        // 你可以通过输入 hiveAdKey 创建一个应用打开广告实例。
                        appOpen = AdizAppOpen.initialize(activity, hiveAdKey, adizListener)
                }

                // requestLoadAd()
        }

        fun requestLoadAd() {
                // 加載應用程序開啟廣告。加載完成後,當應用程序從背景移動到前景時,廣告將自動顯示。
                // 一旦廣告至少顯示一次,它將不會再次顯示,因此如果您想繼續顯示廣告,您需要在 onClose() 回調中再次調用 appOpen.load()。
                appOpen?.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);
        }

        public void requestInitAd(Activity activity, String hiveAdKey) {

                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(); // Revenue when ad is shown
                                String currency = adRevenueData.getCurrency(); // Currency code for revenue when ad is shown
                        }

                        @Override
                        public void onClose() {
                                // requestDestroyAd();
                        }
                };

                if(TextUtils.isEmpty(hiveAdKey)) {
                        // 創建一個應用開啟廣告實例。 (如果未輸入廣告金鑰 (HiveAdKey),則在 Adiz 初始化期間將使用默認金鑰 (is_default=true) 創建實例。)
                        appOpen = AdizAppOpen.initialize(activity, adizListener);
                } else {
                        // 您可以通過輸入 hiveAdKey 來創建應用開啟廣告實例。
                        appOpen = AdizAppOpen.initialize(activity, hiveAdKey, adizListener);
                }

                // requestLoadAd();
        }

        private void requestLoadAd() {
                // 加載應用開啟廣告。
                if(appOpen != null) appOpen.load();
        }

        private void  requestDestroyAd() {
                // Removes the app opening ad.
                if(appOpen != null) appOpen.destroy();
        }
}