ネットワーク トレース

ネットワーク トレースを使用すると、Google Mobile Ads SDK に関連するネットワーク アクティビティを表示できます。これは、Google モバイル広告の実装をデバッグする際に役立ちます。

ネットワーク トレースを Charles プロキシなどのツールの代わりに使用する主なメリットとして、Android のすべてのバージョンと、Google Play 開発者サービスでサポートされているバージョンを搭載したデバイスで動作することが挙げられます。Android 7.0 以降に適用される CA 証明書の変更により、プロキシツールは対象外となります。

このガイドでは、デバッグ用にネットワーク トレースを有効にする方法について説明します。

トレースを有効にする

ネットワーク トレースを有効にするには、デバイスの開発者向けオプションを有効にする必要があります。次に、Google 設定アプリを起動して [Ads] オプションを選択します。

開発者向けオプションを有効にしていてこの機能を使用可能な場合は、画面に次の内容が表示されます。

[Enable debug logging for ads] オプションを選択します。次のダイアログが表示されます。

[OK] をタップすると、末尾が「10ca1ad1abe1」の広告 ID が表示されます。

これで、logcat に記録されているネットワーク ログからすべての出力を表示できるようになりました。

次の logcat コマンドを使用すると、ログ出力のみを表示してログファイルに保存できます。

    adb logcat *:S Ads:I | grep "GMA Debug" | tee logs.txt
    

これにより、デバイスにログが出力されるとともに、すべてのログ出力が logs.txt ファイルに保存されます。

出力

ネットワーク ログを出力するには、プラットフォームに適した標準のコンソールログを使用します。

コンソールログのメッセージは常に GMA Debug BEGINGMA Debug CONTENTGMA Debug FINISH のいずれかの文字列で始まっているため、これらの文字列を検索したり除外したりすることができます。個々のネットワーク ログでは、最初のログメッセージが GMA Debug BEGIN、最後のログメッセージが GMA Debug FINISH となっていて、ネットワーク ログのコンテンツは GMA Debug CONTENT で始まっています。ネットワーク ログのコンテンツが長すぎて 1 行に収まらない場合は、複数の行に分割され、それぞれの行が GMA Debug CONTENT で始まります。

コンソールの出力例

I/Ads     ( 4660): GMA Debug BEGIN
    I/Ads     ( 4660): GMA Debug CONTENT {"timestamp":1510679993741,...}
    I/Ads     ( 4660): GMA Debug FINISH
    

JSON の出力例

logcat からの JSON 出力の例を次に挙げます。

onNetworkRequest

{
      "timestamp": 1510679994904,
      "event": "onNetworkRequest",
      "components": [
        "ad_request_cf5ab185-3c3f-4f01-9f56-33da2ae110f2",
        "network_request_6553bc32-1d44-4f18-9dd0-5c183abbeb90"
      ],
      "params": {
        "firstline": {
          "uri": "http://googleads.g.doubleclick.net/pagead/ads?carrier=....",
          "verb": "GET"
        },
        "headers": [
          {
            "name": "User-Agent",
            "value": "Mozilla/5.0 (Linux; Android 5.0.2;..."
          }
        ]
      }
    }
    

onNetworkResponse

{
      "timestamp": 1510679995295,
      "event": "onNetworkResponse",
      "components": [
        "ad_request_cf5ab185-3c3f-4f01-9f56-33da2ae110f2",
        "network_request_6553bc32-1d44-4f18-9dd0-5c183abbeb90"
      ],
      "params": {
        "firstline": {
          "code": 200
        },
        "headers": [
          {
            "name": null,
            "value": "HTTP/1.1 200 OK"
          },
          {
            "name": "X-Google-DOS-Service-Trace",
            "value": "main:pagead"
          },
          {
            "name": "Content-Type",
            "value": "text/html; charset=UTF-8"
          },
          ...
        ]
      }
    }
    

onNetworkResponseBody

{
      "timestamp": 1510679995375,
      "event": "onNetworkResponseBody",
      "components": [
        "ad_request_cf5ab185-3c3f-4f01-9f56-33da2ae110f2",
        "network_request_6553bc32-1d44-4f18-9dd0-5c183abbeb90"
      ],
      "params": {
        "bodydigest": "B2520049D02F3C70A12AD1BC0D1B58A4",
        "bodylength": 122395
      }
    }