中介功能测试套件

通过 Google 移动广告中介功能测试套件,您可以测试是否正确配置了应用和广告单元,使其能够通过中介功能展示来自第三方广告联盟的广告。本指南简要介绍了如何将 Google 移动广告中介功能测试套件集成到您的 iOS 应用中,以在应用中使用此工具。

前提条件

  • 使用 Xcode 12 或更高版本。
  • 定位到 iOS 8.0 或更高版本。
  • 确保您已在 Info.plist 中正确输入您的应用 ID。

安装

中介功能测试套件需要使用 CocoaPods 来安装。为此,请将以下这行代码添加到您的 Podfile:

pod 'GoogleMobileAdsMediationTestSuite'

上述代码会配置测试套件以及所必需的 Material Components 依赖项。运行 pod install 以完成安装。

启动中介功能测试套件

要展示该工具,请先导入框架:

Swift

import GoogleMobileAdsMediationTestSuite

Objective-C

@import GoogleMobileAdsMediationTestSuite;

接下来,系统会在您的视图出现之后显示测试套件,如下所示:

Swift


GoogleMobileAdsMediationTestSuite.present(on:self, delegate:nil)

Objective-C


[GoogleMobileAdsMediationTestSuite presentOnViewController:self delegate:nil];

此可选代理会在中介功能测试套件关闭时通知您。如需实现代理回调,请遵循 GMTSMediationTestSuiteDelegate 协议并实现 mediationTestSuiteWasDismissed 方法。

该工具打开时会显示以下免责声明:

勾选复选框,然后按同意以继续。

系统随后会显示您帐号的广告单元列表,分为两个标签页:投放异常的广告单元正常投放的广告单元

注册测试设备

如果您的设备尚未在 AdMob 界面中注册为测试设备,则系统会出现提示,询问您是否要将该设备注册为测试设备:

如果将设备注册为测试设备,中介功能测试套件中的以下行为将发生变化:

  • 您可以在测试套件界面中查看广告单元名称,而不是广告单元 ID。
  • 您不仅可以在“广告单元详情”屏幕中按广告单元 ID 搜索,还可以按广告单元名称搜索。
  • 您可以通过设备接收来自 AdMob 的测试广告。

点击注册设备即可转到 AdMob 界面中的“注册测试设备”页面,该页面预填充了中介功能测试套件中的设备平台和设备 ID。为您的测试设备添加名称,然后点击保存,系统便会注册您的设备。如需进一步指导,请参阅设置测试设备

注册的设备通常可在 15 分钟内在中介功能测试套件中启用,但最长可能需要 24 小时。要查看更改,请关闭并重新打开中介功能测试套件。

您需要登录 AdMob 帐号才能访问“注册测试设备”页面。如果您没有帐号访问权限,但仍想使用该方法添加设备,请点击链接,然后通过打开的浏览器与帐号所有者共享该网址。然后,他们可以访问该链接,代表您在帐号中注册您的设备。

如果您暂时不想将您的设备注册为测试设备,请点按关闭

投放异常的广告单元

投放异常的广告单元列表又分为组件缺失配置错误

在广告单元的所有广告联盟测试成功后,该广告单元将会从“投放异常”标签页移至“正常投放”标签页。如果您没有看到广告单元列表,则说明广告联盟调用失败,或未找到广告单元。

如果要搜索广告单元列表,请按顶部的搜索图标,然后输入广告单元 ID 的字符串。您还可以按广告联盟名称或广告格式来进行搜索。

对于每个广告单元,如果出现以下情况,此屏幕会显示警告:

  • 未安装广告来源 SDK
  • 未安装广告来源适配器

如果可以进行测试,该屏幕还会显示所有广告来源的总体测试结果状态。

选择一个广告单元即可进入广告单元详情屏幕。

广告单元详情

此屏幕会显示 ad unit 的详细信息,包括 ad unit ID、广告格式以及为该 ad unit 配置的中介广告瀑布流:

请注意此屏幕上的以下各方面内容:

广告来源摘要

对于每个广告来源,都会有指示器显示 SDK 和适配器是否已安装以及此配置在这一会话中的最后一次测试结果。

对于自定义事件,会使用 Custom Event: custom event 标签。如果找到了您为该自定义事件指定的类,该自定义事件的适配器状态指示器将显示正值。与其他广告联盟一样,您也可以为自定义事件加载和查看广告。

搜索

按搜索图标会显示一个搜索屏幕,您可以在此屏幕中根据广告来源名称搜索广告来源。

批量测试

通过选中广告来源名称左侧的复选框,可以选择要批量测试的每个广告来源。然后,导航栏中会出现一个新选项:

按右上角的加载广告按钮,即可按顺序加载所选广告来源的广告。在测试过程中会显示进度指示器。按左上角的后退图标可清除选择。

加载和展示广告

点按广告来源条目即可查看广告来源详情屏幕:

对于给定的广告来源,屏幕会显示以下信息:

  • SDK 是否已安装,如果已安装则显示 SDK 版本。
  • 适配器是否已安装,如果已安装则显示适配器版本。
  • 适配器初始化状态(如果有)。
  • 在 AdMob 控制台中输入的配置参数。

安装完所有必需的组件后,您就可以进而测试加载广告了。点按加载广告,以向广告来源的 SDK 发送广告请求。在广告请求完成后,会显示一条说明请求是否成功的更新消息。

如果请求失败,请检查控制台日志,查看所测试的 SDK 提供的消息。

如果请求成功:

  • 对于横幅广告,会以内嵌方式展示广告。
  • 对于插页式广告或激励广告,您可以通过点按展示广告来展示广告。
  • 对于原生广告,会以内嵌方式显示返回的素材资源。

    广告会在新的屏幕中打开,例如:

当您返回“详细信息”屏幕时,系统会显示您上次在 ad unit 列表屏幕中测试该广告的结果。已成功加载的广告来源会被移至列表底部,从而让需要进一步测试的广告来源排在列表前面。

公开出价合作伙伴

如需详细了解如何测试公开出价,请参阅验证公开出价设置指南

在生产阶段启用测试

默认情况下,中介功能测试套件仅在开发版、临时版和企业版中启动。这是为了防止最终用户意外启动该测试套件。

在应用进入生产阶段后,如果您需要在设备上运行该中介功能测试套件,请使用 SDK 将您的设备注册为测试设备

当生产应用中包含中介功能测试套件时,您需要采用一种隐蔽的方式启动测试套件(例如秘密手势或调试菜单)。然后,您可以在已在版本中列入许可名单的任意设备上启动该测试套件。

使用广告联盟额外信息配置广告请求(可选)

对于某些参与中介的广告联盟(如 Vungle),可以选择提供自定义广告联盟额外对象,以便为其广告联盟的请求提供额外信息。

如果您需要为中介请求提供广告联盟额外信息,则可以使用 [GoogleAdsMediationTestSuite setAdRequest:] 类方法设置广告请求,以供测试套件使用:

Swift

let request = GADRequest()
...
// Set your network extras for your chosen networks here.
// I.e., for each network extras object, call
// 'request.register(\)'
...
GoogleAdsMediationTestSuite.setAdRequest(request);

Objective-C

GADRequest request = [GADRequest request];
...
// Set your network extras for your chosen networks here.
// I.e., for each network extras object, call
// '[request registerAdNetworkExtras:\];'
...
[GoogleAdsMediationTestSuite setAdRequest:request];

请务必先完成此操作,然后再启动中介功能测试套件。

这可让您使用任何必需的额外信息对广告请求进行实例化和配置,然后供测试套件向参与中介的广告联盟发送请求时使用。

高级 CocoaPods 配置(可选,仅用于调试)

如果您只想将 pod 纳入应用的调试版本中,则可以在 Podfile 中对此进行如下指定:pod 仅用于 Debug 版本配置。此外,您还需要确保所有调用该工具的代码都带有 #ifdef DEBUG 语句或类似语句。

要将 pod 仅包含在调试配置中,请使用以下这行代码:

pod 'GoogleMobileAdsMediationTestSuite', :configurations => ['Debug'], :path => '/path/to/GoogleMobileAdsMediationTestSuite/'

请确保用 #ifdef DEBUG 将所有引用都封装到框架及其类中:

Swift

import UIKit
#if DEBUG
import GoogleMobileAdsMediationTestSuite
#endif
import GoogleMobileAds

let APP_ID = "ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

  @IBAction func presentMediationController(_ sender: AnyObject) {
      #if DEBUG
        GoogleMobileAdsMediationTestSuite.present(withAppId:APP_ID, on:self, delegate:nil)
      #endif
    }

Objective-C

#import "ViewController.h"
#ifdef DEBUG
@import GoogleMobileAdsMediationTestSuite;
#endif
#import <GoogleMobileAds/GoogleMobileAds.h>

static NSString *APP_ID = @"ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy";

@implementation ViewController

- (void)viewDidLoad {
  [super viewDidLoad];
}

- (IBAction)presentMediationController:(id)sender {
#ifdef DEBUG
    [GoogleMobileAdsMediationTestSuite presentWithAppId:APP_ID
                                       onViewController:self
                                               delegate:nil];
  }
#endif
}

更新日志

v2.0.0

发布日期:2021 后 6 月 4 日

  • 现在与 play-services-ads v20 兼容。需要 SDK 版本 20.0.0 或更高版本。
  • 将 play-services-ads 依赖项更新到了 20.1.0。
  • 移除了 MediationTestSuite.addTestDevice() 和 MediationTestSuite.getTestDevices() API。改为使用 MobileAds.setRequestConfiguration() 设置测试设备标识符。
  • 增添了对 AdColony、Vungle 和 IronSource 横幅广告配置的支持。
  • 修复了 i-mobile 和 Tapjoy 错误地报告配置错误的问题。

v1.5.0

发布日期:2020 年 11 月 23 日

  • 添加了 MediationTestSuite.launchForAdManager(Context context) API,以便使用组合的应用 ID 实现 Ad Manager 支持。
  • 增添了相关支持,现在可为 AdMob 注册测试设备。
  • 修复了 Ad Manager 没有配置任何广告单元映射时会导致崩溃的问题。
  • 移除了针对 Vungle SDK 过时清单的检查。
  • 将 play-services-ads 依赖项更新到了 19.5.0。

v1.4.0

发布日期:2020 年 7 月 30 日

  • 将 play-services-ads 依赖项更新到了 19.3.0。
  • 修复了横幅广告格式和插页式广告格式会导致崩溃的问题。
  • 增添了对 Fyber Marketplace 的支持。
  • 增添了对 Chartboost 横幅广告的支持。
  • 修复了 MoPub 清单条目检测的问题。

v1.3.0

发布日期:2020 年 2 月 27 日

  • 增添了对加载公开出价广告的支持。
  • 修正了 AppLovin 和 InMobi 清单要求。

v1.2.2

发布日期:2019 年 12 月 10 日

  • 修复了会导致在 Unity 中出现构建错误的 ProGuard 文件错误。

v1.2.1

发布日期:2019 年 11 月 11 日

  • 将广告依赖项更新到了 18.3.0。

v1.2.0

发布日期:2019 年 9 月11 日

  • 完成了更新,以实现初始的公开出价支持(能够检查配置,无法加载广告)。
  • 增添了对 i-mobile 和 Verizon Media 的广告联盟支持。

v1.1.1

发布日期:2019 年 6 月 28 日

  • 更新了 FlexboxLayout 依赖项,以实现 AndroidX 支持

v1.1.0

发布日期:2019 年 6 月 27 日

  • 完成了更新,以实现 AndroidX 支持
  • 更新了适配器和广告联盟以及相关配置(例如,所需的清单条目)。
  • 添加了使用 AndroidManifest.xml 中的 AdMob ID 的 MediationTestSuite.launch(Context) API。

v1.0.0

发布日期:2019 年 4 月 22 日

  • 用于正式发布的版本递增。

v0.9.5

发布日期:2019 年 2 月 22 日

  • 修复了在广告联盟/自定义事件的配置参数中提供 JSON 时出现的问题。

v0.9.4

发布日期:2019 年 2 月 11 日

  • 更新了依赖项,包括将 Google 移动广告 SDK 更新到版本 17.1.3。
  • 修复了与 AdColony SDK 清单权限错误相关的问题。
  • 修复了 API 28 中广告加载上下文不是 activity 的问题。

v0.9.3

发布日期:2019 年 2 月 7 日

  • 修复了中介功能测试套件在测试某个广告联盟时从其他广告联盟加载广告的问题。
  • 添加了原生素材资源视图,以方便加载原生广告。
  • 增添了对旧版“横幅广告单元和插页式广告单元”的支持。
  • 添加了可避免在生产环境中启动测试套件的保护措施。除非是在已使用 MediationTestSuite.addTestDevice(String deviceHash) 将相应 AdMob 设备 ID 加入白名单的设备上运行,否则不会再在发布 build 中启动测试套件。
  • 新增了测试套件的日语、汉语、越南语和中文本地化版本。

v0.9.2

发布日期:2018 年 10 月 3 日

  • 修复了 Facebook 插页式广告具有多余“帐号 ID”参数的问题
  • 修复了 Vungle SDK v5.x 权限错误的问题。
  • 修复了在低于 v21 的 Android 版本中发生的错误。
  • 修复了当中介适配器需要 activity 上下文时的广告加载问题。

v0.9.1

发布日期:2018 年 9 月 20 日

  • 完成了更新,现支持 Vungle SDK 版本 6.x。
  • 修复了使用 ProGuard 构建时会导致崩溃的问题。
  • 新增了对 Java 7 的支持。

v0.9.0

发布日期:2018 年 8 月 7 日

  • 采用更新版界面的公开 Beta 版。
  • 添加了批量测试功能。

v0.2

发布日期:2018 年 3 月 20 日

  • 完成了更新,现通过全新 AdMob 界面为使用中介组的发布商提供支持。
  • 更新了界面。
  • 增添了对以下广告联盟的支持:Nend、myTarget、maio 和 IronSource。

v0.1.1

发布日期:2017 年 12 月 11 日

  • 修复了在加载应用配置时偶尔会导致出现 NPE 的错误。

v0.1

发布日期:2017 年 11 月 10 日

  • 初始版本。此版本可以启动并下载中介配置,检查适配器、SDK 和清单的正确性,还可以通过第三方广告联盟的 AdMob 中介适配器加载并展示来自这些广告联盟的广告。