跳轉至

Android

Adkit for ADOP: Android

安裝

  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 同意彈出窗口。在其他地區,重置會立即執行。

  • 如果您的遊戲針對EEA和英國地區,請確保您的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以使用測試廣告。

卸載

將安裝期間設置的文件恢復到其原始狀態。