安卓
Adiz 安卓¶
Adiz Android是Hive提供的一个Android广告模块,旨在简化使用AdMob提供的广告展示功能。Adiz Android提供的广告类型如下:
- 插页广告
- 横幅广告
- 原生广告
- 激励广告
- 激励插页广告
- 应用打开广告
要安装和使用 Adiz Android,请按照下面的指南进行。
安装¶
将 Adiz 库项添加到您模块的应用级 Gradle 文件(app/build.gradle)。
要支持 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>
要显示视频广告,必须启用硬件加速。在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 允许您以两种方式显示测试广告。
- 启用测试模式:仅显示由AdMob发布的测试广告。
- 注册测试设备并显示广告:为了测试目的显示真实广告。注册设备以显示测试广告,以确保在测试期间不会发生无效流量。
启用测试模式¶
在开发阶段,启用测试模式,以便点击测试广告不会对广告主产生费用。当启用测试模式时,仅显示测试广告。在测试模式下,您无需在 Hive 控制台中输入 AdMob 广告密钥即可显示测试广告。对于商业分发,请禁用测试模式。
Note
如果在开发阶段的测试模式下过多点击广告,可能会被视为无效流量,您的AdMob账户可能会被报告,从而阻止您展示广告。
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
要注册测试设备,首先识别您的测试设备 ID。您可以使用以下两种方法找到测试设备 ID(例如,33BE2250B43518CCDA7DE426D04EE231
):
- 在调用
Adiz.Initialize()
之后,检查 Logcat 日志:
使用 new ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") 将其设置为调试设备。
- 在调用
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,必须满足以下两个条件:
设置 Adiz AppID¶
设置您在 Hive 控制台 AppCenter 注册的 Adiz AppID。如果未设置,将使用 AndroidManifest.xml 包名。
设置 Hive 控制台服务器¶
设置您想要使用的 Hive 控制台服务器。默认值是 REAL
。即使您使用商业服务器,如果启用测试模式,仍会显示测试广告。
- Hive 测试控制台服务器:
ZoneType.TEST
- Hive 沙盒控制台服务器:
ZoneType.SANDBOX
- Hive 商业控制台服务器:
ZoneType.REAL
GDPR 同意弹窗显示(欧洲和英国)¶
如果您的游戏面向欧洲和英国(欧洲经济区 & 英国),则需要显示GDPR(通用数据保护条例)同意弹窗。只有当用户的设备IP地址来自欧洲或英国(欧洲经济区 & 英国)时,才会显示GDPR同意弹窗。 Adiz支持Google的UMP(用户 消息 平台)来显示GDPR同意弹窗。
在 AdMob 控制台中创建 GDPR 消息 后,当您 初始化 Adiz 时,GDPR 弹出窗口将显示给来自欧洲和英国的用户。
Warning
即使您针对的是欧洲和英国以外的地区,您仍然必须在AdMob控制台中创建GDPR消息,以确保Adiz的初始化能够正确执行。
创建 GDPR 消息¶
访问 Google AdMob 控制台以创建 GDPR 消息。在创建 GDPR 消息之前,请参考 GDPR 消息创建指南。
在创建GDPR消息后,GDPR同意弹出窗口将在Adiz初始化期间自动显示。
实施GDPR同意/撤回的选项¶
GDPR同意弹窗应允许用户随时修改他们的同意。例如,最初不同意GDPR的用户如果希望接收个性化广告,可能会想要同意,反之亦然。为了适应这种情况,开发者必须实现用户再次同意或撤回先前同意的功能。要实现GDPR同意/撤回功能,请按照以下步骤操作:
- 在您的应用中实现一个按钮 UI,以重新加载 GDPR 同意弹出窗口。
- 在实现 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标签(用于未达到同意年龄的用户)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
隐私设置 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 测试设备:
- 初始化 Adiz。此初始化的目的是检查测试设备ID,因此您无需提前创建GDPR同意消息。
- 在Logcat日志输出中找到设备ID。以下是示例消息:
使用新的 ConsentDebugSettings.Builder().addTestDeviceHashedId("33BE2250B43518CCDA7DE426D04EE231") 将其设置为调试设备。
获取设备ID(示例:33BE2250B43518CCDA7DE426D04EE231
)。 - 复制设备ID。
- 在现有的 Adiz 初始化代码中,在执行
Adiz.initialize
之前添加Adiz.setTestDevice(DEVICE_ID)
。 - 创建GDPR同意消息 并重新初始化Adiz,以确保GDPR同意弹出窗口正确显示。
import com.hive.Adiz
import com.hive.adiz.AdizError
import org.json.JSONObject
fun initialize() {
Adiz.setTestDevice("33BE2250B43518CCDA7DE426D04EE231")
Adiz.initialize(activity, object : Adiz.SdkInitializationListener {
override fun onComplete(error: AdizError, jsonData: JSONObject?) {
// ... 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),应用程序开发者可以通过设置tagForChildDirectedTreatment(TFCD)来指定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.gradle的dependencyResolutionManagement
部分中添加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.gradle的allprojects
部分添加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) | 用户在展示奖励广告(rewarded ,rewarded 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.Initialize
和AdizListener
的错误代码和错误消息如下:
常见代码¶
数字 | 案例 | 解释 |
---|---|---|
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同意弹出窗口 |
广告曝光与终止¶
要曝光和终止广告,请按照以下步骤操作:
- 从广告类创建广告实例,以便暴露您想要的每种类型的广告。如果您想要暴露的广告不是默认广告,您需要输入从初始化中获得的广告密钥。如果您不输入广告密钥(
hiveAdKey
),则会创建一个默认广告实例。 - 加载(
load()
)您想要暴露的广告。 - 暴露(
show()
)加载的广告。要重新暴露广告,您必须再次调用load()
,然后调用show()
。 - 要终止广告,请调用
destroy()
。
插页广告¶
这些是占据整个屏幕的全屏广告。
import android.app.Activity
import android.os.Bundle
import com.hive.adiz.AdizError
import com.hive.adiz.AdizListener
import com.hive.adiz.base.AdizInterstitial
import com.hive.adiz.common.AdRevenueData
class InterstitialExample : Activity() {
var interstitialAd: AdizInterstitial? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// ...
// requestInitAd(this)
}
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();
}
}
横幅广告 (Banner)¶
横幅广告展示特定大小的横幅。横幅广告不会接收 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()
来终止广告。
目前,模板支持 small
或 medium
尺寸。
模板 | 对齐 | 横幅大小常量 |
---|---|---|
小尺寸 | 上 / 下 | 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();
}
}