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

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

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

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

Enable tracing

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

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

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

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

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

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