中介功能测试套件

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

前提条件

  • 使用 Xcode 11 或更高版本。
  • 定位到 iOS 8.0 或更高版本。
  • 创建 Ad Manager 帐号并注册应用。
  • 确保您已在 中正确输入您的应用 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 方法。

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

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

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

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

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

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

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

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

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

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

广告单元详情

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

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

广告来源摘要

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

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

搜索

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

批量测试

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

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

加载和展示广告

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

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

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

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

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

如果请求成功:

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

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

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

公开出价合作伙伴

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

在生产阶段启用测试

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

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

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

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

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

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

Swift

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

Objective-C

 request = [ 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']

请确保用 #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
}