将 Unity 广告与中介集成

本指南将向您介绍如何使用 Google 移动广告 SDK,利用中介功能从 Unity Ads 加载和展示广告,其中包括广告瀑布流集成。它介绍了如何将 Unity Ads 添加到广告单元的中介配置,以及如何将 Unity Ads SDK 和适配器集成到 Android 应用中。

支持的集成和广告格式

适用于 Unity Ads 的 Ad Manager 中介适配器具有以下功能:

集成
出价
瀑布
表现形式
横幅
插页式广告
已奖励
原生

要求

  • Android API 级别 19 或更高级别
  • 最新版 Google 移动广告 SDK

  • 完成中介 入门指南

第 1 步:在 Unity Ads 界面中设置配置

注册或登录 Unity Ads。

创建项目

Unity Ads 信息中心内,前往 Projects,然后点击 Create Project

填写表单,然后点击 Create Project(创建项目)以添加项目。

依次前往创收 > 开始,然后点击开始

项目设置模态窗口中,选择我打算使用中介,并针对中介合作伙伴选择 Google AdMob,然后点击下一步

选择您的广告设置,然后点击下一步

填写表单,然后点击添加项目

记下游戏 ID

创建广告单元

依次前往创收 > 广告单元,然后点击添加广告单元

输入广告单元名称,然后选择平台广告格式

最后,点击创建,保存您的广告单元。

添加展示位置

创建项目后,依次前往创收 > 展示位置。如需创建新的展示位置,请为您的广告单元点击添加展示位置

填写必要的详细信息,然后点击添加展示位置

记下展示位置 ID

检索凭据

除了游戏 ID展示位置 ID 之外,您还需要 Unity Ads API 密钥组织核心 ID 来设置Ad Manager 广告单元 ID。

依次前往创收 > 设置 > API 管理,然后记下 Monetize Stats API 访问密钥

然后,依次转到创收 > 组织设置,并记下组织核心 ID

开启测试模式

您可以从 Unity Ads 信息中心启用测试模式。在项目的设置下,选择测试标签页。

您可以点击 Google Play 商店旁边的修改按钮,选中替换客户端测试模式并选择对所有设备强制开启测试模式(即使用测试广告),为您的应用强制启用测试模式。

或者,您也可以通过点击 Add Test Device 按钮为特定设备启用测试模式。

填写表单并点击保存

第 2 步:在界面中设置 Unity Ads 需求 Ad Manager

为广告单元配置中介设置

登录您的 Ad Manager 帐号

依次转到投放 > 收益组,然后点击新建收益组按钮。

为您的收益组输入一个独一无二的名称,将状态设为有效,选择广告格式,然后将广告资源类型设为移动应用。在定位 > 广告资源部分下,选择广告资源移动应用(您要向其中添加中介)下方的广告单元。

接下来,点击添加收益合作伙伴按钮。

如果您已有Unity Ads的收益合作伙伴,可以选择它。否则,请选择创建新的收益合作伙伴

选择 Unity Ads 作为广告联盟,输入一个具有唯一性的名称并启用中介

开启自动收集数据,然后输入在上一部分中获取的API Key and Organization core ID

选择收益合作伙伴后,选择移动 SDK 中介作为集成类型,选择 Android 作为平台,选择有效作为状态。输入在上一部分获得的Game ID and Placement ID 。然后,输入默认每千次展示费用值。

完成后,点击页面底部的保存

添加到 GDPR 和美国州级法规的广告合作伙伴列表中 Unity Ads

按照 GDPR 设置美国州级法规设置 中的步骤,将 Unity Ads 添加到 Ad Manager 界面中的 GDPR 和美国州级法规广告合作伙伴列表中。

第 3 步:导入 Unity Ads SDK 和适配器

在应用级 build.gradle.kts 文件中,添加以下实现依赖项和配置。使用最新版本的 Unity Ads SDK 和适配器:

dependencies {
    implementation("com.google.android.gms:play-services-ads:23.0.0")
    implementation("com.unity3d.ads:unity-ads:4.9.3")
    implementation("com.google.ads.mediation:unity:4.9.3.0")
}

手动集成

  1. 从其 GitHub 代码库下载最新的 Unity Ads SDK (unity-ads.aar),并将其添加到您的项目。

  2. 转到 Google Maven 制品库中的 Unity Ads 适配器工件。选择最新版本,下载 Unity Ads 适配器的 .aar 文件,并将其添加到您的项目。

第 4 步:在 Unity Ads SDK 上实现隐私设置

根据 Google 欧盟地区用户意见征求政策,您必须确保就设备标识符和个人数据的使用向欧洲经济区 (EEA) 用户披露特定披露信息,并征得其同意。此政策反映了欧盟《电子隐私指令》和《一般数据保护条例》(GDPR) 的要求。在征求用户意见时,您必须指明中介链中可能会收集、接收或使用个人数据的各个广告联盟,并提供有关每个广告联盟使用情况的信息。Google 目前无法自动将用户的同意情况传送给此类广告联盟。

在 SDK 版本 2.0.0 中,Unity Ads 添加了一个 API 以支持隐私设置。以下示例代码展示了如何将此用户意见征求信息传递给 Unity Ads SDK。如果您选择手动将用户意见征求信息传递给 Unity Ads SDK,建议您在通过 Google 移动广告 SDK 请求广告之前调用此代码。

Java

import com.unity3d.ads.metadata.MetaData;
// ...

MetaData gdprMetaData = new MetaData(this);
gdprMetaData.set("gdpr.consent", true);
gdprMetaData.commit();

Kotlin

import com.unity3d.ads.metadata.MetaData
// ...

val gdprMetaData = MetaData(this)
gdprMetaData["gdpr.consent"] = true
gdprMetaData.commit()

如需了解详情以及可在每种方法中提供的值,请参阅 Unity Ads 的 Privacy Consent and Data API遵守 GDPR 指南。

美国州级隐私保护法律

美国州级隐私保护法 规定,必须让用户有权选择不“出售”其“个人信息”(该法律对这些术语进行了定义)。“出售”方须在首页醒目位置提供“请勿出售我的个人信息”链接,以供用户选择。美国州级隐私保护法律合规性指南让您可以为 Google 广告投放启用受限的数据处理,但 Google 无法将此设置应用于中介链中的每个广告联盟。因此,您必须确定中介链中可能参与个人信息出售的每个广告网络,并遵循每个广告网络的指导以确保合规性。

在 SDK 版本 2.0.0 中,Unity Ads 添加了一个 API 以支持隐私设置。以下示例代码展示了如何将此用户意见征求信息传递给 Unity Ads SDK。如果您选择手动将用户意见征求信息传递给 Unity Ads SDK,建议您在通过 Google 移动广告 SDK 请求广告之前调用此代码。

Java

import com.unity3d.ads.metadata.MetaData;
// ...

MetaData ccpaMetaData = new MetaData(this);
ccpaMetaData.set("privacy.consent", true);
ccpaMetaData.commit();

Kotlin

import com.unity3d.ads.metadata.MetaData
// ...

val ccpaMetaData = MetaData(this)
ccpaMetaData["privacy.consent"] = true
ccpaMetaData.commit()

如需了解详情以及可在每种方法中提供的值,请参阅 Unity Ads 的 Privacy Consent and Data API遵守 CCPA

第 5 步:添加所需的代码

Unity Ads 集成无需额外的代码。

第 6 步:测试实现效果

启用测试广告

请务必为Ad Manager 注册您的测试设备,并在 Unity Ads 界面中启用测试模式

验证测试广告

如需验证您收到的是来自Unity Ads的测试广告,请使用相应广告来源在广告检查器中启用单一广告来源测试Unity Ads (Waterfall)

错误代码

如果适配器无法从 Unity Ads 接收广告,发布商可以通过以下类下的 ResponseInfo.getAdapterResponse() 检查广告响应中的底层错误:

com.google.ads.mediation.unity.UnityAdapter
com.google.ads.mediation.unity.UnityMediationAdapter

以下是广告加载失败时 UnityAds 适配器抛出的代码及相应消息:

错误代码 原因
0-10 UnityAds SDK 返回错误。如需了解详情,请参阅代码
101 界面中配置的 Ad Manager UnityAds 服务器参数缺失/无效。
102 UnityAds 返回了一个状态为 NO_FILL 的展示位置。
103 UnityAds 返回一个状态为“已停用”的展示位置。
104 UnityAds 尝试展示的广告为 null 上下文。
105 用于初始化、加载和/或展示 Unity Ads 广告的上下文不是 activity 实例。
106 UnityAds 尝试展示一个尚不能展示的广告。
107 该设备不支持 UnityAds。
108 UnityAds 一次只能为每个展示位置加载 1 个广告。
109 UnityAds 结束时处于 ERROR 状态。
200-204 与 UnityAds 横幅广告相关的错误。如需了解详情,请参阅代码
0-9 UnityAds SDK 返回错误。如需了解详情,请参阅 Unity 的文档
101 界面中配置的 Ad Manager UnityAds 服务器参数缺失/无效。
102 UnityAds 不支持此设备。
103 UnityAds 已完成展示,错误状态为 kUnityAdsFinishStateError。
104 Unity 广告对象在调用其初始化程序后为 nil。
105 由于广告未就绪,未能展示 Unity 广告。
106 UnityAds 调用了展示位置已更改回调,展示位置状态为 kUnityAdsPlacementStateNoFill。
107 UnityAds 调用了展示位置已更改回调,展示位置状态为 kUnityAdsPlacementStateDisabled。
108 此展示位置已加载过广告。UnityAds SDK 不支持为同一展示位置加载多个广告。

Unity Ads Android 中介适配器更新日志

版本 4.9.3.0

  • 已验证与 Unity Ads SDK 4.9.3 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 22.6.0 版。
  • Unity Ads SDK 4.9.3 版。

版本 4.9.2.0

  • 已验证与 Unity Ads SDK 4.9.2 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 22.3.0 版。
  • Unity Ads SDK 4.9.2 版。

版本 4.9.1.0

  • 将 Google 移动广告 SDK 的最低版本更新为 22.3.0。
  • 已验证与 Unity Ads SDK 4.9.1 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 22.3.0 版。
  • Unity Ads SDK 4.9.1 版。

版本 4.8.0.0

  • 在 Unity Ads SDK 调用新的 onBannerShown() 回调方法时报告广告展示次数。
  • 已验证与 Unity Ads SDK 4.8.0 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 22.2.0 版。
  • Unity Ads SDK 4.8.0 版。

版本 4.7.1.0

  • 已验证与 Unity Ads SDK 4.7.1 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 22.1.0 版。
  • Unity Ads SDK 4.7.1 版。

版本 4.7.0.0

  • 已验证与 Unity Ads SDK 4.7.0 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 22.0.0 版
  • Unity Ads SDK 4.7.0 版。

版本 4.6.1.1

  • 更新了适配器以使用新的 VersionInfo 类。
  • 将 Google 移动广告 SDK 最低版本更新到了 22.0.0。

构建和测试方式:

  • Google 移动广告 SDK 22.0.0 版
  • Unity Ads SDK 4.6.1 版。

版本 4.6.1.0

  • 已验证与 Unity Ads SDK 4.6.1 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 版本 21.5.0
  • Unity Ads SDK 4.6.1 版。

版本 4.6.0.0

  • 添加了对将 COPPA 信息转发到 Unity Ads SDK 的支持。
  • 已验证与 Unity Ads SDK 4.6.0 的兼容性。
  • 将 Google 移动广告 SDK 的最低版本更新为 21.5.0。

构建和测试方式:

  • Google 移动广告 SDK 版本 21.5.0
  • Unity Ads SDK 4.6.0 版。

版本 4.5.0.0

  • 已验证与 Unity Ads SDK 4.5.0 的兼容性。
  • 将 Google 移动广告 SDK 的最低版本更新为 21.4.0。

构建和测试方式:

  • Google 移动广告 SDK 版本 21.4.0
  • Unity Ads SDK 4.5.0 版。

版本 4.4.1.0

  • 已验证与 Unity Ads SDK 4.4.1 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 版本 21.2.0
  • Unity Ads SDK 4.4.1 版。

版本 4.4.0.0

  • 已验证与 Unity Ads SDK 4.4.0 的兼容性。
  • 将 Google 移动广告 SDK 最低版本更新为 21.2.0。

构建和测试方式:

  • Google 移动广告 SDK 版本 21.2.0
  • Unity Ads SDK 4.4.0 版。

版本 4.3.0.0

  • 已验证与 Unity Ads SDK 4.3.0 的兼容性。
  • 现在,onAdOpened() 回调会在插页式广告和激励广告开始播放时转发。

构建和测试方式:

  • Google 移动广告 SDK 版本 21.1.0
  • Unity Ads SDK 4.3.0 版。

版本 4.2.1.1

  • compileSdkVersiontargetSdkVersion 更新为了 API 31。
  • 将 Google 移动广告 SDK 最低版本更新为 21.0.0。

构建和测试方式:

  • Google 移动广告 SDK 21.0.0 版
  • Unity Ads SDK 4.2.1 版。

版本 4.2.1.0

  • 已验证与 Unity Ads SDK 4.2.1 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 20.6.0 版
  • Unity Ads SDK 4.2.1 版。

版本 4.1.0.0

  • 已验证与 Unity Ads SDK 4.1.0 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 20.6.0 版
  • Unity Ads SDK 4.1.0 版。

版本 4.0.1.0

  • 已验证与 Unity Ads SDK 4.0.1 的兼容性。
  • 将 Google 移动广告 SDK 的最低版本更新为 20.6.0。

构建和测试方式:

  • Google 移动广告 SDK 20.6.0 版
  • Unity Ads SDK 4.0.1 版。

版本 4.0.0.0

  • 已验证与 Unity Ads SDK 4.0.0 的兼容性。
  • 将 Google 移动广告 SDK 的最低版本更新为 20.5.0。

构建和测试方式:

  • Google 移动广告 SDK 20.5.0 版
  • Unity Ads SDK 4.0.0 版。

版本 3.7.5.0

  • 已验证与 Unity Ads SDK 3.7.5 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 20.2.0 版
  • Unity Ads SDK 3.7.5 版。

版本 3.7.4.0

  • 已验证与 Unity Ads SDK 3.7.4 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 20.2.0 版
  • Unity Ads SDK 3.7.4 版。

版本 3.7.2.0

  • 已验证与 Unity Ads SDK 3.7.2 的兼容性。
  • 将 Google 移动广告 SDK 的最低版本更新为 20.2.0。

构建和测试方式:

  • Google 移动广告 SDK 20.2.0 版
  • Unity Ads SDK 3.7.2 版。

版本 3.7.1.0

  • 已验证与 Unity Ads SDK 3.7.1 的兼容性。
  • 将 Google 移动广告 SDK 最低版本更新为 20.1.0。

构建和测试方式:

  • Google 移动广告 SDK 版本 20.1.0.
  • Unity Ads SDK 3.7.1 版。

版本 3.6.2.0

  • 已验证与 Unity Ads SDK 3.6.2 的兼容性。
  • 修复了激励广告无法转发点击回调的问题。
  • UnityAds SDK 已从捆绑的适配器 build 中移除。发布商现在必须手动将 UnityAds SDK 添加为附加依赖项。
  • 将 Google 移动广告 SDK 的最低版本更新为 19.8.0。

构建和测试方式:

  • Google 移动广告 SDK 19.8.0 版
  • Unity Ads SDK 3.6.2 版。

版本 3.6.0.0

  • 已验证与 Unity Ads SDK 3.6.0 的兼容性。
  • 将 Google 移动广告 SDK 的最低版本更新为 19.6.0。

构建和测试方式:

  • Google 移动广告 SDK 19.6.0 版。
  • Unity Ads SDK 3.6.0 版。

版本 3.5.1.1

  • 修复了尝试请求多个插页式广告和激励广告的问题。

构建和测试方式:

  • Google 移动广告 SDK 19.5.0 版。
  • Unity Ads SDK 3.5.1 版。

版本 3.5.1.0

  • 已验证与 Unity Ads SDK 3.5.1 的兼容性。
  • 修复了导致智能横幅广告请求失败的问题。

构建和测试方式:

  • Google 移动广告 SDK 19.5.0 版。
  • Unity Ads SDK 3.5.1 版。

版本 3.5.0.0

  • 已验证与 Unity Ads SDK 3.5.0 的兼容性。
  • 添加了对自适应横幅广告的支持。
  • 将 Google 移动广告 SDK 的最低版本更新为 19.5.0。

构建和测试方式:

  • Google 移动广告 SDK 19.5.0 版。
  • Unity Ads SDK 3.5.0 版。

版本 3.4.8.0

  • 修复了横幅广告销毁时发生的 NullPointerException 错误。
  • 将 Google 移动广告 SDK 的最低版本更新为 19.3.0。

构建和测试方式:

  • Google 移动广告 SDK 19.3.0 版
  • Unity Ads SDK 3.4.8 版。

版本 3.4.6.1

  • 创建了一个未捆绑 Unity Ads SDK 的适配器 build。这样,发布商就可以选择在 Unity 上进行中介使用 Unity 广告服务,以避免冲突的依赖项问题。
    • 发布商可以选择通过向其应用级 build.gradle 文件添加 com.google.ads.mediation:unity-adapter-only:x.y.z.p 依赖项,来使用此库。

构建和测试方式:

  • Google 移动广告 SDK 19.1.0 版。
  • Unity Ads SDK 3.4.6 版。

版本 3.4.6.0

  • 已验证与 Unity Ads SDK 3.4.6 的兼容性。
  • 现在,在用户点击横幅广告时,适配器会转发 onAdOpened() 回调。

构建和测试方式:

  • Google 移动广告 SDK 19.1.0 版。
  • Unity Ads SDK 3.4.6 版。

版本 3.4.2.3

  • 添加了描述性的错误代码以及适配器加载/显示失败的原因。
  • 将 Google 移动广告 SDK 最低版本更新为 19.1.0。

构建和测试方式:

  • Google 移动广告 SDK 19.1.0 版。
  • Unity Ads SDK 3.4.2 版。

版本 3.4.2.2

  • 修复了 Unity Ads 返回错误时发生的 ConcurrentModificationException 崩溃问题。

构建和测试方式:

  • Google 移动广告 SDK 19.0.1 版。
  • Unity Ads SDK 3.4.2 版。

版本 3.4.2.1

  • 改进了 Unity 错误的转发功能,以便尽早识别初始化和广告加载失败,并缩短超时时间。
  • 将 Google 移动广告 SDK 最低版本更新为 19.0.1。

构建和测试方式:

  • Google 移动广告 SDK 19.0.1 版。
  • Unity Ads SDK 3.4.2 版。

版本 3.4.2.0

  • 已验证与 Unity Ads SDK 3.4.2 的兼容性。
  • 将 Google 移动广告 SDK 的最低版本更新为 18.3.0。

构建和测试方式:

  • Google 移动广告 SDK 18.3.0 版
  • Unity Ads SDK 3.4.2 版。

版本 3.4.0.0

  • 已验证与 Unity Ads SDK 3.4.0 的兼容性。
  • 将 Google 移动广告 SDK 的最低版本更新为 18.3.0。

构建和测试方式:

  • Google 移动广告 SDK 18.3.0 版
  • Unity Ads SDK 3.4.0 版。

版本 3.3.0.0

  • 已验证与 Unity Ads SDK 3.3.0 的兼容性。

构建和测试方式:

  • Google 移动广告 SDK 18.2.0 版.
  • Unity Ads SDK 3.3.0 版。

版本 3.2.0.1

  • 修复了在调用 UnityAds.initialize() 之前调用 loadAd() 时发生 null 指针异常崩溃的问题。
  • 将 Google 移动广告 SDK 的最低版本更新为 18.2.0。

版本 3.2.0.0

  • 修复了导致横幅广告请求失败的问题。
  • 已验证与 Unity Ads SDK 3.2.0 的兼容性。
  • 已将适配器迁移到 AndroidX。
  • 将 Google 移动广告 SDK 的最低版本更新为 18.1.1。

版本 3.1.0.0

  • 添加了对灵活横幅广告尺寸的支持。
  • 如果请求的尺寸与任何 Unity Ads 横幅广告尺寸都不兼容,则适配器会导致广告请求失败
  • 已验证与 Unity Ads SDK 3.1.0 的兼容性。

版本 3.0.1.0

  • 已验证与 Unity Ads SDK 3.0.1 的兼容性。
  • 修复了在展示插页式广告时出现“NPE”的 bug。

版本 3.0.0.2

  • 更新了适配器,以支持新的公开 Beta 版 Rewarded API。
  • 将 Google 移动广告 SDK 的最低版本更新为 17.2.0。

版本 3.0.0.1

  • 添加了对 Unity Ads 横幅广告的支持。

版本 3.0.0.0

  • 已验证与 Unity Ads SDK 3.0.0 的兼容性。

版本 2.3.0.0

  • 已验证与 Unity Ads SDK 2.3.0 的兼容性。

版本 2.2.1.1

  • 更新了适配器以调用 onRewardedVideoComplete() 广告事件。

版本 2.2.1.0

  • 已验证与 Unity Ads SDK 2.2.1 的兼容性。

版本 2.2.0.0

  • 已验证与 Unity Ads SDK 2.2.0 的兼容性。

版本 2.1.2.0

  • 已验证与 Unity Ads SDK 2.1.2 的兼容性。

版本 2.1.1.0

  • 已验证与 Unity Ads SDK 2.1.1 的兼容性。

版本 2.1.0.0

  • 更新了适配器,使其与 Unity Ads SDK 2.1.0 兼容。

版本 2.0.8.0

  • 已验证与 Unity Ads SDK 2.0.8 的兼容性。

版本 2.0.7.0

  • 使用 Unity Ads 的点击报告(AdMob 和 Unity Ads 的点击统计信息将保持一致)。
  • 添加了 onAdLeftApplication 回调支持。

版本 2.0.6.0

  • 已验证与 Unity Ads SDK 2.0.6 的兼容性。

版本 2.0.5.0

  • 现在,可以将以下代码作为编译依赖项添加到 build.gradle 文件的依赖项标记中,从而将这些适配器添加为编译依赖项:compile 'com.google.ads.mediation:unity:2.0.5.0'
  • 已改为以 aar 而非 jar 文件的形式分发适配器(如需更多说明,请参阅自述文件)。

版本 2.0.4.0

  • 修复了在先加载插页式广告时导致激励视频广告无法加载的 bug。

版本 2.0.2.0

  • 将版本命名系统更改为了 [Unity Ads SDK 版本].[adapter patch version]。
  • 将所需的最低 Unity Ads SDK 版本更新为 v2.0.2。
  • 将 Google 移动广告 SDK 要求的最低版本更新为 v9.0.0。
  • 应用不再需要调用 UnityAds.changeActivity(this)。

版本 1.0.0

  • 初始版本。支持基于奖励的视频广告和插页式广告。