네트워크 추적

네트워크 추적을 사용하면 Google 모바일 광고 SDK와 관련된 네트워크 활동을 확인할 수 있습니다. 이 기능은 Google 모바일 광고 구현을 디버깅할 때 유용할 수 있습니다.

Charles 프록시와 같은 도구 대신 네트워크 추적을 사용하는 주된 이유는 지원되는 버전의 Google Play 서비스를 실행하는 모든 버전의 Android 및 기기에서 작동하기 때문입니다. 단, 프록싱 도구의 경우 Android 7.0 이후 신뢰할 수 있는 CA 및 인증서의 변경으로 인해 이와 같이 작동하지 않습니다.

이 가이드에는 디버깅을 위해 네트워크 추적을 사용하는 방법이 나와 있습니다.

추적 사용하기

네트워크 추적을 사용하려면 기기에서 개발자 옵션을 사용 설정하세요. 그런 다음 Google 설정 앱을 실행하고 광고 옵션을 선택하세요.

개발자 옵션이 사용 설정된 상태에서 이 기능을 사용할 수 있으면 다음과 같은 화면이 표시됩니다.

광고 디버그 로깅 사용 옵션을 선택하세요. 이렇게 하면 다음과 같은 대화상자가 표시됩니다.

확인을 탭하면 10ca1ad1abe1로 끝나는 광고 식별자가 표시됩니다.

이제 logcat에서 네트워크 로깅의 모든 출력을 확인할 수 있습니다.

다음 logcat 명령어를 사용하면 로그 출력만 보고 이를 로그 파일에 저장할 수 있습니다.

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

이 명령어는 출력을 터미널에 기록하고 모든 로그 출력을 logs.txt 파일에 저장합니다.

출력

표준 플랫폼에 적합한 콘솔 로그는 네트워크 로그를 출력하는 데 사용됩니다.

콘솔 로그 메시지는 항상 GMA Debug BEGIN, GMA Debug CONTENT 또는 GMA Debug FINISH 문자열로 시작하므로 이 문자열로 검색하거나 필터링할 수 있습니다. 각 네트워크 로그의 첫 번째 로그 메시지는 GMA Debug BEGIN이고, 마지막 로그 메시지는 GMA Debug FINISH이며, 네트워크 로그 내용은 GMA Debug CONTENT로 시작합니다. 로그 내용이 한 행에 들어가지 못할 정도로 길면 여러 행으로 나눠지며 각 행은 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
      }
    }