中介 A/B 实验

AdMob API 可以创建中介 A/B 实验,通过测试各种配置来尽可能提高广告效果。借助 A/B 测试,您可以评估中介组的两个变体,并排比较结果,然后选择首选配置。

以下是您可以设置的一些实验示例:

  • 添加或移除广告来源,看看它们对中介组的影响
  • 通过更改广告来源的人工有效每千次展示费用值来采用不同的广告瀑布流顺序
  • 启用或停用对瀑布流广告来源的优化
  • 更改向广告来源发出广告请求的次数

示例

从现有中介组开始,为其创建一个变体,以了解哪个变体(A 或 B)的效果更好。该测试会根据您提供的百分比(1%、10% 或 50%)在现有中介组设置与变体版本之间对您应用的用户进行分配。

curl(命令行)

使用 curl 的请求

  1. 加载客户端密钥文件并生成授权凭据。

    第一次执行此步骤时,系统会在浏览器中提示您接受授权。接受之前,请务必使用可访问 AdMob API 的 Google 账号登录。您的应用将获得授权,能够代表当前登录的账号访问数据。

    对于身份验证和授权,我们建议使用 oauth2l,这是一款用于处理 Google OAuth 2.0 的简单命令行工具。安装 oauth2l 并运行以下命令,将 path_to_credentials_json 替换为您在注册云应用时下载的 credentials.json 文件的路径。首次运行时,该命令会引导您完成 OAuth 2.0 授权流程。后续运行会自动刷新令牌。

    oauth2l header --json path_to_credentials_json --scope admob.monetization,admob.readonly
    
  2. 创建中介 A/B 实验。

    将 pub-XXXXXXXXXXXXXXXX 替换为您的发布商 ID,并将 ZZZZZZZZZZ 替换为您的中介组 ID。您可以在 AdMob 界面中找到中介组 ID,也可以使用 accounts.mediationGroups:list 方法找到该 ID。

    您需要指定 treatmentMediationLines 和 treatmentTrafficPercentage,但 controlMediationLines 会沿用父中介组的设置,因此无需指定。

    以下请求创建了一个中介 A/B 实验,其中实验组(也称为变体 B)包含一个使用 LIVE 模式的 AdMob 广告联盟中介广告订单项。

    curl --http1.0 \
    -X POST https://admob.googleapis.com/v1beta/accounts/pub-XXXXXXXXXXXXXXXX/mediationGroups/ZZZZZZZZZZ/mediationAbExperiments \
    -H "Content-Type:application/json" \
    -H "$(oauth2l header --json path_to_credentials_json --scope admob.monetization)" \
    --data @- << EOF
    {
      "displayName":"Mediation A/B Experiment Test Name",
      "treatmentTrafficPercentage": "50",
      "treatmentMediationLines": [{
        "mediationGroupLine": {
          "displayName": "Test mediation group line",
          "adSourceId": "5450213213286189855",
          "cpm_mode": "LIVE"
        }
      }]
    }
    EOF

    请参阅下面的示例响应,其中 SSSSSSSSSSSSSSSSSSSSSS 表示创建的中介 A/B 实验 ID,YYYYYYYYYY 表示广告单元 ID 的后 10 位数字,符合以下格式:ca-app-pub-XXXXXXXXXXXXXXXX/YYYYYYYYYY。

    {
      "name": "accounts/pub-XXXXXXXXXXXXXXXX/mediationGroups/ZZZZZZZZZZ/mediationAbExperiments/SSSSSSSSSSSSSSSSSSSSSS",
      "displayName": "Mediation A/B Experiment Test Name",
      "experimentId": "SSSSSSSSSSSSSSSSSSSSSS",
      "treatmentTrafficPercentage": "50",
      "treatmentMediationLines": [
        {
          "mediationGroupLine": {
            "id": "11111111111111111",
            "displayName": "Test mediation group line",
            "adSourceId": "5450213213286189855",
            "cpmMode": "LIVE",
            "cpmMicros": "10000",
            "adUnitMappings": {
              "ca-app-pub-XXXXXXXXXXXXXXXX/YYYYYYYYYY": "accounts/pub-XXXXXXXXXXXXXXXX/adUnits/YYYYYYYYYY/adUnitMappings/
              "ca-app-pub-XXXXXXXXXXXXXXXX/YYYYYYYYYY": "accounts/pub-XXXXXXXXXXXXXXXX/adUnits/YYYYYYYYYY/adUnitMappings/
            },
            "state": "ENABLED"
          }
        }
      ],
      "controlMediationLines": [
        {
          "mediationGroupLine": {
            "id": "22222222222222222",
            "displayName": "AdMob Network (control)",
            "adSourceId": "5450213213286189855",
            "cpmMode": "LIVE",
            "cpmMicros": "10000",
            "adUnitMappings": {
              "ca-app-pub-XXXXXXXXXXXXXXXX/YYYYYYYYYY": "accounts/pub-XXXXXXXXXXXXXXXX/adUnits/YYYYYYYYYY/adUnitMappings/
              "ca-app-pub-XXXXXXXXXXXXXXXX/YYYYYYYYYY": "accounts/pub-XXXXXXXXXXXXXXXX/adUnits/YYYYYYYYYY/adUnitMappings/
            },
            "state": "ENABLED"
          }
        }
      ],
      "state": "RUNNING"
    }
  3. 验证中介 A/B 实验是否正在运行。

    调用 accounts.mediationGroups:list 可获取相应中介组的中介 A/B 实验状态。如需了解详情,请参阅中介组指南。

    对于有效的中介 A/B 实验,mediationAbExperimentState 设置为 RUNNING;如果中介组中没有正在运行的实验,则设置为 NOT_RUNNING。

    示例请求:

     curl --http1.0 \
    -X GET https://admob.googleapis.com/v1beta/accounts/pub-XXXXXXXXXXXXXXXX/mediationGroups \
    -H "$(oauth2l header --json path_to_credentials_json --scope admob.readonly)"
    
  4. 停止中介 A/B 实验并选择一个变体。

    将 pub-XXXXXXXXXXXXXXXX 替换为您的发布商 ID,并将 ZZZZZZZZZZ 替换为您的中介组 ID。您可以在 AdMob 界面中找到中介组 ID,也可以使用 accounts.mediationGroups:list 方法找到该 ID。

    如需完成实验,请在请求中指定胜出的变体:

    • VARIANT_CHOICE_A:使用变体 A 中的中介广告资源行完成实验。变体 A 包含实验创建之前的原始投放行。
    • VARIANT_CHOICE_B:使用变体 B 中的中介行并完成实验。变体 B 包含新添加的投放行。

    示例请求:

     curl --http1.0 \
    -X POST https://admob.googleapis.com/v1beta/accounts/pub-XXXXXXXXXXXXXXXX/mediationGroups/ZZZZZZZZZZ/mediationAbExperiments:stop \
    -H "Content-Type:application/json" \
    -H "$(oauth2l header --json path_to_credentials_json --scope admob.monetization)" \
    --data @- << EOF
    {
    "variantChoice": "VARIANT_CHOICE_A"
    }
    

    示例响应:

    {
    "experimentId": "SSSSSSSSSSSSSSSSSSSSSS",
    "state": "EXPIRED",
    }