跳转至

AdKit Unity for DARO

AdKit Unity for DARO 是使用 DARO API 开发的 Unity 广告模块。与 SDK 或独立模块配合使用时,日志会发送到 Analytics 服务器,因此无需单独执行广告分析。此外,它还可帮助 Hive SDK 用户解决应用 DARO 提供的 Unity 包时发生的错误,并减少反复尝试。

本指南介绍 AdKit Unity for DARO 的安装方法、各操作系统 Unity 环境的预先设置方法以及各项功能的使用方法。

安装或更新

如果您第一次使用 AdKit for DARO,请按以下顺序安装。

或者,如果您想更新现有的 AdKit 安装,请删除现有安装版本,然后按照以下顺序安装最新版本的 AdKit for DARO。

  1. 下载并安装最新版本的 AdKit for DARO。
  2. 在 Unity 工具栏中,转到 资产 > 导入包 > 自定义包...,选择 .unitypackage 文件,然后点击 导入。

  3. 导入完成后,验证在 Assets 文件夹下是否已创建 Hive AdKit 和 DARO 相关的文件和文件夹。

  4. 下载并安装最新版本的 EDM4U。 EDM4U 包含在 Hive SDK v4 中。如果您正在使用 Hive SDK v4,请跳过此步骤。

删除

要删除 Hive AdKit for DARO,请在您的 Unity 项目中删除以下文件夹:

  • 资产/HIVEAdKit
  • 资产/HIVEAdKit_示例

先决条件配置

安装 AdKit for DARO 后,请添加各操作系统所需的 DARO 密钥值,并检查构建设置。

Android

将从 DARO 控制面板下载的密钥值添加到基于 Android 的 Unity 项目中。

  1. 将下载的 android-daro-key.txt 文件复制到 HIVEAdKit/Plugins/Android 文件夹。
    • 在 DARO 控制面板 - Apps 页面中,单击 'Key File' 下的 Download 即可下载 android-daro-key.txt 文件。
  2. 在 gradleTemplate.properties 中添加 daroAppKey,如下所示。
    daroAppKey=INPUT_DARO_APP_KEY
    

iOS

将从 DARO 控制面板下载的密钥值添加到基于 iOS 的 Unity 项目中。

  1. 将下载的 ios-daro-key.txt 文件复制到 HIVEAdKit/Plugins/iOS 文件夹。
  2. 在 HIVEAdKit/Editor/iOSAdKitPostBuildProcessor.cs 文件中,按照以下示例取消 Google AdMob appId 和 Daro App Key 的注释,然后输入相应值。
    // Set GADApplicationIdentifier (Please contact Daro for your own ADMOB APPID)
    //rootDict.SetString("GADApplicationIdentifier", "YOUR GOOGLE ADMOB APPID");
    
    // Set DaroAppKey (Please contact DARO for your own Daro App Key)
    //rootDict.SetString("DaroAppKey", "YOUR Daro App Key");
    

检查 iOS 构建设置

构建 iOS 项目时,会创建以 Dynamic Framework 方式运行的 UnityFramework target。

  1. 配置 EDM4U(以 1.2.179 为准)。 在 Unity 的 iOS Resolver Settings(Assets > External Dependency Manager > iOS Resolver > Settings)中,确认已设置 static_framework 构建。

  2. 构建项目。构建完成后,在生成项目的根路径中打开 Podfile 并检查设置。

    source 'https://github.com/Com2uSPlatformCorp/HiveAdKit-iOS.git'
    source 'https://cdn.cocoapods.org/'
    
    platform :ios, '13.0'
    
    target 'UnityFramework' do
      pod 'HiveAdKit_DARO_UnityPlugin', '1.5.4'
    end
    target 'Unity-iPhone' do
    end
    use_frameworks!
    
Warning

构建应用 AdKit Unity 的正式服务之前,请务必删除 Assets/HIVEAdKit_Example 文件夹,否则可能会包含 HIVEAdKit Example 设置。

DARO Proguard 配置

Proguard 规则包含在库 AAR 文件中,因此无需单独配置即可自动应用。

使用指南

本节介绍使用 AdKit Unity for DARO 功能所需的设置方法和 API 调用方法。

AdKit 初始化

  • 如果应用面向欧洲和英国(EEA & UK)地区,请调用 ShowConsentUI API 显示 GDPR 同意弹窗,然后初始化 AdKit。如果仅在国内提供服务,请调用 HIVEAdKit.Initialize API 直接进行初始化。
    如下方示例代码所示,HIVEAdKit 类提供的所有 API 都必须从 Unity 的主线程调用。
using hive.adkit.daro;

// Call GDPR popup
public void ShowGDPR(string noticeId)
{
    HIVEAdKit.ShowConsentUI(noticeId, () =>
    {
        initSdk();
    });
}

// Hive AdKit initialization
public void initSdk()
{
    HIVEAdKit.Initialize(isSuccess =>
    {
        if (isSuccess)
            Debug.Log("AdKit SDK initialization successful!");
        else
            Debug.Log("AdKit SDK initialization failed!");
    });
}

使用回调

要使用回调函数,您必须调用 HIVEAdKit.InitPlugin 将 AdKitCallbackManager 注册为 GameObject。
应用启动时,在 Start 代码块中调用此方法。

using hive.adkit.daro;

void Start()
{
    HIVEAdKit.InitPlugin(); // Create game object for Hive AdKit callback registration
}

设置附加信息

您可以设置附加信息。实现代码如下:

using hive.adkit.daro;

[Serializable]
public class SendInfo 
{
    public int level;
    public int gold;
}

SendInfo addtionalInfo = new SendInfo();

public void SetAdditionalInfo()
{
    addtionalInfo.level = 1;
    addtionalInfo.gold = 100;

    // Send as JSON Object format
    HIVEAdKit.SetAdditionalInfo(JsonUtility.ToJson(addtionalInfo));
}

激励广告功能

观看广告达到指定时间后即可获得奖励。一次只能加载一个广告。实现代码如下:

using hive.adkit.daro;

private HIVEAdKit.RewardVideo RewardVideoAd = null;

public void InitRewardedAd()
{
    // Set Event Callback
    EventHandlers eventHandlers = new EventHandlers.Builder()
                                                    .OnAdLoaded(OnRewardVideoAdLoadedCB)
                                                    .OnAdOpening(OnRewardVideoAdOpeningCB)
                                                    .OnAdClosed(OnRewardVideoAdClosedCB)
                                                    .OnAdFailed(OnRewardVideoAdFailedCB)
                                                    .OnAdReward(OnRewardVideoAdRewardCB)
                                                    .OnAdClick(OnRewardVideoAdClickCB)
                                                    .OnAdPaidEvent(OnRewardVideoAdPaidEventCB)
                                                    .Build();

    // Create RewardVideoAd Instance
    RewardVideoAd = HIVEAdKit.RewardVideo.Initialize(rewardVideoUnitId, eventHandlers);
}

public void LoadRewardedAd()
{
    // Load RewardVideoAd
    HIVEAdKit.RewardVideo.Load(RewardVideoAd, "Unity-RewardVideo-Load-AdPlacementInfo");
}

public void ShowRewardedAd()
{
    // Show RewardVideoAd
    if( HIVEAdKit.RewardVideo.IsLoaded(RewardVideoAd) ) {
        HIVEAdKit.RewardVideo.Show(RewardVideoAd, "Unity-RewardVideo-Show-AdPlacementInfo");
    }
}

public void DestroyRewardedAd()
{
    // Destroy RewardVideoAd
    HIVEAdKit.RewardVideo.Destroy(RewardVideoAd);
    RewardVideoAd = null;
}

插屏广告功能

提供占据整个屏幕的插屏广告功能。实现代码如下:

using hive.adkit.daro;

private HIVEAdKit.Interstitial InterstitialAd = null;

public void InitRewardedAd(string unitId)
{
    // Set Event Callback
    EventHandlers eventHandlers = new EventHandlers.Builder()
                                                .OnAdLoaded(OnInterstitialAdLoadedCB)
                                                .OnAdOpening(OnInterstitialAdOpeningCB)
                                                .OnAdClosed(OnInterstitialAdClosedCB)
                                                .OnAdFailed(OnInterstitialAdFailedCB)
                                                .OnAdClick(OnInterstitialAdClickCB)
                                                .OnAdPaidEvent(OnInterstitialAdPaidEventCB)
                                                .Build();

    // Create InterstitialAd Instance                                               
    InterstitialAd = HIVEAdKit.Interstitial.Initialize(unitId, eventHandlers);
}

public void LoadInterstitialAd()
{
    // Load InterstitialAd
    HIVEAdKit.Interstitial.Load(InterstitialAd, "Unity-Interstitial-Load-AdPlacementInfo");
}

public void ShowInterstitialAd()
{
    // Show InterstitialAd
    if( HIVEAdKit.Interstitial.IsLoaded(InterstitialAd) ) {
        HIVEAdKit.Interstitial.Show(InterstitialAd, "Unity-Interstitial-Show-AdPlacementInfo");
    }
}

public void DestroyInterstitialAd()
{
    // Destroy InterstitialAd
    HIVEAdKit.Interstitial.Destroy(InterstitialAd);
    InterstitialAd = null;
}

提供占据屏幕部分的横幅广告功能。您可以通过输入 BannerPosition 来调整横幅的位置到屏幕的顶部或底部。
横幅广告不会接收 OnAdClosed() 回调。

using hive.adkit.daro;

private HIVEAdKit.Banner BannerAd = null;

public void InitBannerAd(string unitId)
{
    // Set Event Callback
    EventHandlers eventHandlers = new EventHandlers.Builder()
                                                .OnAdLoaded(OnBannerAdLoadedCB)
                                                .OnAdFailed(OnBannerAdFailedCB)
                                                .OnAdClick(OnBannerAdClickCB)
                                                .OnAdPaidEvent(OnBannerAdPaidEventCB)
                                                .Build();

    BannerAd = HIVEAdKit.Banner.Initialize(unitId, BannerPosition.Bottom, eventHandlers);
}

public void LoadBannerAd()
{
    // Automatic Load & Show BannerAd
    HIVEAdKit.Banner.Load(BannerAd, "Unity-Banner-Load-AdPlacementInfo");
}

public void DestroyBannerAd()
{
    // Destroy BannerAd
    HIVEAdKit.Banner.Destroy(BannerAd);
    BannerAd = null;
}

DARO应用示例

Planet Explore使用DARO广告模块,对横幅广告和插屏广告进行优化投放。下载Planet Explore,直接查看DARO广告的实际应用案例。

横幅广告

插屏广告