מעקב ברשת

מעקב ברשת (Network Tracing) מאפשר לכם לראות את הפעילויות ברשת שקשורות ל-Google Mobile Ads SDK. האפשרות הזו יכולה להיות שימושית לניפוי באגים בהטמעה של Google Mobile Ads.

אחת מהסיבות העיקריות להשתמש במעקב ברשת במקום בכלים כמו Charles Proxy היא שהמעקב ברשת פועל בכל הגרסאות של Android ובמכשירים עם גרסה נתמכת של Google Play Services. זה לא המצב בכלי שרת proxy בגלל שינויים ברשויות אישורים מהימנות ובאישורים שהוטמעו מאז Android 7.0.

במדריך הזה נסביר איך מפעילים מעקב אחר רשתות למטרות ניפוי באגים.

אפשר ניהול מעקב

כדי להפעיל מעקב אחר רשתות, צריך להפעיל את אפשרויות הפיתוח במכשיר. לאחר מכן, פותחים את אפליקציית ההגדרות של 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
  }
}