跳转至

安卓

Adkit for ADOP: 安卓

安装

  1. 下载并解压最新版本的 AdKit 文件。
  2. 将 AdKit.gradle 文件复制到项目应用的路径。
  3. 将以下内容添加到项目应用的 build.gradle 文件中:
    apply from: '(path to adkit.gradle file)/adkit.gradle'
    
    依赖项 {
            // ...(跳过)
    
            // 添加 AdKit 库
            implementation "com.com2us.android:hive-adkit-adop:1.4.6"
    }
    

设置

添加格式为 ca-app-pub-XXXXX~YYYYY 的 AdMobId 和 ADOP APP_KEY 到在 Android 项目中生成的 AndroidManifest.xml 文件。ADOP APP_KEY 可以在登录 ADOP Insight 后的账户管理 > 我的信息 > 详细信息中找到。

<application>
        <meta-data
        android:name="com.google.android.gms.ads.APPLICATION_ID"
        android:value="ca-app-pub-XXXXX~YYYYY"/>
    <meta-data
        android:name="com.google.android.gms.ads.AD_MANAGER_APP"
        android:value="true"/>
    <meta-data
        android:name="com.adop.sdk.APP_KEY"
        android:value="6933aab2-7f78-11ed-a117-XXXXXXXXX"/>
    </application>

如何使用

ADOP Proguard 设置

如果您正在使用 Proguard,请添加以下 ADOP Proguard 设置。

  -keep class com.adop.sdk.** { *; }
  -keep class ad.helper.openbidding.** { *; }
  -keep class com.adop.sdk.adapter.**{ *; }
  -keepnames class * implements java.io.Serializable
  -keepclassmembers class * implements java.io.Serializable {
      static final long serialVersionUID;
      private static final java.io.ObjectStreamField[] serialPersistentFields;
      !static !transient ;
      private void writeObject(java.io.ObjectOutputStream);
      private void readObject(java.io.ObjectInputStream);
      java.lang.Object writeReplace();
      java.lang.Object readResolve();
  }
  -keepclassmembers class * {
      @android.webkit.JavascriptInterface ;
  }

  # Pangle
  -keep class com.bytedance.sdk.** { *; }
  -keep class com.bykv.vk.openvk.component.video.api.** { *; }

  # Tapjoy
  -keep class com.tapjoy.** { *; }
  -keep class com.moat.** { *; }
  -keepattributes JavascriptInterface
  -keepattributes *Annotation*
  -keep class * extends java.util.ListResourceBundle {
  protected Object[][] getContents();
  }
  -keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
  public static final *** NULL;
  }
  -keepnames @com.google.android.gms.common.annotation.KeepName class *
  -keepclassmembernames class * {
  @com.google.android.gms.common.annotation.KeepName *;
  }
  -keepnames class * implements android.os.Parcelable {
  public static final ** CREATOR;
  }
  -keep class com.google.android.gms.ads.identifier.** { *; }
  -dontwarn com.tapjoy.**

在ADOP中测试广告密钥

使用ADOP发布的测试广告密钥是必需的。

var bannerZoneId = "944fe870-fa3a-4d1b-9cc2-38e50b2aed43"
var interstitialZoneID = "e9acd7fc-a962-40e4-aaad-9feab1b4f821"
var rewardVideoZoneId = "7d9a2c9e-5755-4022-85f1-6d4fc79e4418"
var appOpenAdZoneId = "33906f96-dae8-4790-8ce4-d1f287ba00b2"

初始化 AdKit

执行 AdKit 初始化。

在执行重置时,如果您位于欧洲和英国(EEA和英国)地区,将自动显示GDPR同意弹出窗口。在其他地区,重置会立即执行。

  • 如果您的游戏面向欧洲经济区和英国地区,请确保您的GDPR同意弹出窗口按照GDPR消息指南进行设置。
import com.com2us.hive.adkit.*

// Commercial
AdKit.InitializeWithShowGDPRConsent(this.activity, false, null)

// GDPR EEA test mode
AdKit.InitializeWithShowGDPRConsent(this.activity, true, gdprTestDeviceId)

在发生分析日志时,可以包含用户的附加信息,并以JSONObject类型传递数据。

val data = JSONObject()
data.put("level", 1)
data.put("gold",100)
AdKit.SetAdditionalInfo(data)

奖励视频类型

奖励视频类型广告会奖励观看视频一段时间的用户,并且一次只能加载一个广告。

// RewardVideo Instance Create
var rewardVideo:RewardVideo? = null
rewardVideo = RewardVideo.Initialize(this.activity, rewardVideoZoneId, object : EventHandlers() {
   override fun onAdLoaded() {}
   override fun onAdOpening() {}
   override fun onAdClosed() {}
   override fun onAdFailed() {}
   override fun onAdClick() {}
   override fun onAdReward() {}
})
// RewardVideo Load
rewardVideo?.LoadAd("NativeRewardVideo-Load")
// RewardVideo Show
rewardVideo?.Show("NativeRewardVideo-Show")

此外,adPlacementInfo 可以作为字符串传递,该字符串在成功 Load 或通过 Show 展示广告时设置。

插屏类型

插屏类型广告使用全屏覆盖游戏界面。

// Interstitial Instance Create
var interstitial:Interstitial? = null
interstitial = Interstitial.Initialize(this.activity, interstitialZoneId, object : EventHandlers() {
   override fun onAdLoaded() {}
   override fun onAdOpening() {}
   override fun onAdClosed() {}
   override fun onAdFailed() {}
   override fun onAdClick() {}
})
// Interstitial Load
interstitial?.LoadAd("NativeInterstitial-Load")
// Interstitial Show
interstitial?.Show("NativeInterstitial-Show")

此外,adPlacementInfo可以作为字符串传递,该字符串在成功Load或通过Show展示广告时设置。

自适应横幅类型

自适应横幅类型广告是一种占据屏幕位置的滚动横幅。您可以使用 BannerPosition 或 yPos 值来调整横幅位置。 如果您提供 yPos 来调整横幅位置,横幅将对齐到屏幕底部,然后将按您指定的 yPos 值向上移动。

// the example codes using the BannerPosition 
var adaptiveBanner: AdaptiveBanner? = null

// Create AdaptiveBanner Instance at Top of View
adaptiveBanner = AdaptiveBanner.Initialize(this.activity, bannerZoneId, AdaptiveBanner.BannerPosition.Top, object : EventHandlers() {
   override fun onAdLoaded() {}
   override fun onAdOpening() {}
   override fun onAdClosed() {}
   override fun onAdFailed() {}
   override fun onAdClick() {}
})

// Create AdaptiveBanner Instance at Bottom of View
adaptiveBanner = AdaptiveBanner.Initialize(this.activity, bannerZoneId, AdaptiveBanner.BannerPosition.Bottom, object : EventHandlers() {
   override fun onAdLoaded() {}
   override fun onAdOpening() {}
   override fun onAdClosed() {}
   override fun onAdFailed() {}
   override fun onAdClick() {}
})

// AdaptiveBanner Load & Automatic show
adaptiveBanner?.LoadAd("NativeAdaptiveBanner-Load")

// Destroy AdaptiveBanner
adaptiveBanner?.Destroy()

// This example shows adjusting the banner position with specifiying the yPos value.
var adaptiveBanner: AdaptiveBanner? = null
adaptiveBanner = AdaptiveBanner.Initialize(this.activity, bannerZoneId, yPos, object : EventHandlers() {
   override fun onAdLoaded() {}
   override fun onAdOpening() {}
   override fun onAdClosed() {}
   override fun onAdFailed() {}
   override fun onAdClick() {}
})

// Banner Load
adaptiveBanner?.LoadAd("NativeAdaptiveBanner-Load")

// Banner Show
adaptiveBanner?.Show("NativeAdaptiveBanner-Show")

// Banner Hide
adaptiveBanner?.Hide()

// The position is adjusted following the yPos value.
adaptiveBanner?.setPosition(yPos)

此外,adPlacementInfo可以作为字符串传递,该字符串在成功Load或通过Show展示广告时设置。

AppOpen 类型广告

当应用状态从后台切换到前台时,会显示一种广告类型。

// Create AppOpenAd Instance
var appOpenAd: AppOpenAd? = null
appOpenAd = AppOpenAd.Initialize(this.activity, appOpenAdZoneId, object : EventHandlers() {
     override fun onAdLoaded() {}
     override fun onAdOpening() {}
     override fun onAdClosed() {}
     override fun onAdFailed() {}
})

// Automatically load & show AppOpenAd when the app comes to the foreground
appOpenAd?.LoadAd("NativeAppOpen-Load")

// Destroy AppOpenAd
appOpenAd?.Destroy()

测试广告

在开发过程中,当测试广告被点击时,广告主不被收费是很重要的。如果您在测试模式之外点击广告过多,将被视为无效操作。因此,请注意不要成为被举报的目标账户。请参考Google Developers以使用测试广告。

卸载

将安装期间设置的文件恢复到其原始状态。