การติดตามเครือข่าย

การติดตามเครือข่ายช่วยให้คุณเห็นกิจกรรมของเครือข่ายที่เกี่ยวข้องกับ SDK โฆษณาในอุปกรณ์เคลื่อนที่ของ Google ซึ่งอาจมีประโยชน์ในการแก้ไขข้อบกพร่องการติดตั้งใช้งาน Google Mobile Ads

สาเหตุสำคัญในการใช้การติดตามเครือข่ายแทนการใช้เครื่องมืออย่าง Charles Proxy คือการติดตามเครือข่ายทำงานได้กับ Android ทุกเวอร์ชันและอุปกรณ์ที่ใช้บริการ Google Play เวอร์ชันที่รองรับ แต่เครื่องมือพร็อกซีจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงนี้เนื่องจากCA และใบรับรองที่เชื่อถือได้ซึ่งใช้มาตั้งแต่ Android 7.0

คู่มือนี้จะอธิบายวิธีเปิดใช้การติดตามเครือข่ายเพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่อง

Enable tracing

หากต้องการเปิดใช้การติดตามเครือข่าย ให้เปิดใช้ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ในอุปกรณ์ จากนั้นเปิดแอปการตั้งค่า Google แล้วเลือกตัวเลือกโฆษณา

สมมติว่าคุณเปิดใช้ตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์และฟีเจอร์พร้อมใช้งาน หน้าจอของคุณจะมีลักษณะดังนี้

เลือกตัวเลือกเปิดใช้การบันทึกการแก้ไขข้อบกพร่องของโฆษณาเพื่อเปิดกล่องโต้ตอบต่อไปนี้

แตะตกลง แล้วคุณจะเห็นตัวระบุโฆษณาที่ลงท้ายด้วย 10ca1ad1abe1

ตอนนี้คุณจะเห็นเอาต์พุตทั้งหมดจากการบันทึกเครือข่ายใน logcat หากต้องการกรองเฉพาะเอาต์พุตระดับข้อมูลของ Google Ads ไปยังทั้งหน้าจอและไฟล์ ให้ใช้คําสั่งต่อไปนี้

adb logcat '*:S' Ads:I Ads-cont:I | tee 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

ตัวอย่างเอาต์พุต JSON จาก logcat มีดังนี้

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
  }
}