跳转至

安卓

Adiz 安卓

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 Inspector,必须满足以下两个条件:

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

如果您的游戏面向欧洲和英国欧洲经济区 & 英国),则需要显示GDPR(通用数据保护条例)同意弹窗。只有当用户的设备IP地址来自欧洲或英国欧洲经济区 & 英国)时,才会显示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.
                        }
                });
        }
}

未满同意年龄的标签设置

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

Warning

如果同时将GDPR标签(用于未达到同意年龄的用户)setTagForUnderAgeOfConsentCOPPA标签(用于儿童导向处理)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

        隐私设置 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测试设备

只有当设备的 IP 地址来自欧洲或英国时,才会显示 GDPR 同意弹窗。在开发过程中,您可以通过设置 GDPR 测试设备强制显示 GDPR 同意弹窗,而不管设备 IP 地址。请按照以下步骤设置 GDPR 测试设备:

  1. 初始化 Adiz。此初始化的目的是检查测试设备ID,因此您无需提前创建GDPR同意消息。
  2. 在Logcat日志输出中找到设备ID。以下是示例消息: 使用新的 ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") 将其设置为调试设备。
    获取设备ID(示例:33BE2250B43518CCDA7DE426D04EE231)。
  3. 复制设备ID。
  4. 在现有的 Adiz 初始化代码中,在执行 Adiz.initialize 之前添加 Adiz.setTestDevice(DEVICE_ID)
  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),应用程序开发者可以通过设置tagForChildDirectedTreatmentTFCD)来指定Google在广告请求中是否应将内容视为儿童导向。如果您希望内容被视为面向儿童,您必须在执行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

        隐私设置 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' // 通用(必须添加)

    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

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

    }
}

 

要验证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() {
        // 当广告显示时调用。
        }

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

错误代码

当收到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 无效的Unit 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 // 广告曝光时的收入
                                var currency = adRevenueData.currency // 广告曝光时的收入的货币代码
                        }

                        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(); // 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(); // 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() {
                // 加载插页广告。
                if(interstitialAd != null) interstitialAd.load();
        }

        private void  requestShowAd() {
                // Expose the interstitial ad.
                if(interstitialAd != null) 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
468x60 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)
        }

        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() {
                // 加载横幅广告。
                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(); // error code
                                String message = loadError.getMessage(); // error message
                        }

                        @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)) {
                        // 创建一个横幅广告实例。
                        banner = AdizBanner.initialize(activity, bannerSize, adizListener);
                } else {
                        // 您可以通过输入hiveAdKey来创建一个横幅广告实例。
                        banner = AdizBanner.initialize(activity, hiveAdKey, bannerSize, adizListener);
                }

                // requestLoadAd();
        }

        private void requestLoadAd() {
                // 加载横幅广告。
                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() {
                // 加载原生广告。
                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(); // Revenue when ad is shown
                                String currency = adRevenueData.getCurrency(); // Currency code for revenue when ad is shown
                        }
                };

                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() {
                // 加载原生广告。
                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();
        }
}

奖励广告 (奖励)

这些是奖励广告,用户观看广告一定时间后会获得奖励。当奖励成功提供时,奖励项目的信息会通过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() {
                // 加载奖励广告。
                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,则使用默认密钥(is_default=true)创建实例,该密钥在 Adiz 初始化期间接收。)
                        rewardedAd = AdizRewarded.initialize(activity, adizListener);
                } else {
                        // 您可以通过输入 hiveAdKey 来创建一个奖励广告实例。
                        rewardedAd = AdizRewarded.initialize(activity, hiveAdKey, adizListener);
                }

                // requestLoadAd();
        }

        private void requestLoadAd() {
                // 加载奖励广告。
                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(); // 广告展示时的收入
                                String currency = adRevenueData.getCurrency(); // 广告展示时的收入货币代码
                        }

                        @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() {
                // 移除应用打开广告。
                if(appOpen != null) appOpen.destroy();
        }
}