تحميل تطبيقك لتحليله

يمكن لواجهة برمجة التطبيقات Checks API تحليل تطبيقات Android وتطبيق iOS قبل طرحها، ما يتيح لك الاطّلاع على سلوكيات جمع البيانات ومشاركتها في تطبيقك، بالإضافة إلى مشاكل محتملة متعلّقة بالامتثال قبل إطلاق تطبيقك للجميع.

يوضّح لك دليل البدء السريع هذا كيفية تحميل تطبيق باستخدام gcloud CLI وأمر cURL.

المتطلبات الأساسية

قبل البدء، تأكَّد من إمكانية إرسال طلبات معتمَدة باستخدام دليل الأذونات.

إعداد حِزمة التطبيق

Android

  1. إنشاء ملف APK أو AAB لتطبيقك

    راجِع إنشاء تطبيقك وتشغيله في مستندات Android للحصول على التعليمات.

iOS

  1. في Xcode، اختَر ملفًا شخصيًا للتزويد للتطبيق المستهدَف.

  2. من القائمة المنسدلة التي تظهر، انقر على المنتج > الأرشيف. اختَر الأرشيف الأحدث، ثم انقر على توزيع التطبيق.

  3. في النافذة التي تظهر، انقر على التطوير > التالي.

  4. (اختياري) للحصول على إصدار أسرع، ألغِ تحديد الخيار إعادة الإنشاء من رمز Bitcode، ثم انقر على التالي.

    لا تتطلّب عمليات التحقّق تقليل حجم تطبيقك أو إعادة إنشائه لتنفيذ اختبار، لذا يمكنك إيقاف هذا الخيار بأمان.

  5. انقر على تصدير، ثم حدِّد الدليل الذي تريد تنزيل ملف IPA الخاص بتطبيقك فيه.

تحميل حِزمة التطبيق

حمِّل حِزمة تطبيقك باستخدام الطريقة media.upload.

تتوفّر طريقتان لتحميل تطبيقك:

ملف ثنائي مع بيانات وصفية

يمكنك تضمين بيانات وصفية، مثل codeReferenceId الذي يربط التحليل بعملية إيداع معيّنة في مستودع الرموز البرمجية.

أرسِل طلب POST متعدد الأجزاء مع العنوان X-Goog-Upload-Protocol: multipart حيث يحتوي الجزء الأول من النص على البيانات الوصفية بتنسيق JSON ويحتوي الجزء الثاني من النص على عملية التحميل الثنائي:

curl -X POST \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/checks)" \
    -H "X-Goog-Upload-Protocol: multipart" \
    -F "metadata={\"codeReferenceId\":\"COMMIT_SHA\"}" \
    -F "binary=@BINARY_PATH" \
    "https://checks.googleapis.com/upload/v1alpha/accounts/ACCOUNT_ID/apps/APP_ID/reports:analyzeUpload"

ثنائي فقط

أرسِل طلب POST عاديًا مع العنوان X-Goog-Upload-Protocol: raw لتحميل تطبيقك بدون أي بيانات وصفية:

curl -X POST \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/checks)" \
    -H "X-Goog-Upload-Protocol: raw" \
    -H "Content-Type: application/octet-stream" \
    --data-binary @BINARY_PATH \
    "https://checks.googleapis.com/upload/v1alpha/accounts/ACCOUNT_ID/apps/APP_ID/reports:analyzeUpload"

بعد انتهاء تحميل تطبيقك، سيتم عرض حالة google.longrunning.Operation معلّقة:

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID"
}

الاطّلاع على حالة التحليل

يمكنك التحقّق من حالة التحليل من خلال استدعاء الطريقة accounts.apps.operations.get:

curl -X GET \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/checks)" \
    "https://checks.googleapis.com/v1alpha/accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID"

يتم عرض الردّ التالي استنادًا إلى الحالة:

في انتظار المراجعة

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID"
}

مكتمل

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID",
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.checks.report.v1alpha.Report",
    "name": "accounts/ACCOUNT_ID/apps/APP_ID/reports/REPORT_ID",
    "resultsUri": "https://checks.google.com/console/dashboard/REPORT_ID?a=APP_ID"
  }
}

خطأ

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/operations/OPERATION_ID",
  "done": true,
  "error": {
    "code": 500,
    "message": "Deadline exceeded.",
    "status": "INTERNAL",
    "details": [
      ...
    ]
  }
}

عرض التحليل

يمكنك الاطّلاع على التحليل من خلال استدعاء طريقة accounts.apps.reports.get:

curl -X GET \
    -H "X-Goog-User-Project: PROJECT_ID" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token --scopes=https://www.googleapis.com/auth/checks)" \
    "https://checks.googleapis.com/v1alpha/accounts/ACCOUNT_ID/apps/APP_ID/reports/REPORT_ID"

يؤدي ذلك تلقائيًا إلى عرض اسم مصدر التقرير وعنوان URL للاطّلاع على التقرير في Checks Console.

للاطّلاع على المزيد من البيانات، أدرِج قناع حقل في الطلب. على سبيل المثال، أضِف مَعلمة طلب البحث لعنوان URL fields=name,resultsUri,checks لتضمين الحقل checks:

{
  "name": "accounts/ACCOUNT_ID/apps/APP_ID/reports/REPORT_ID",
  "resultsUri": "https://checks.area120.google.com/console/dashboard/REPORT_ID?a=APP_ID",
  "checks": [
    {
      "type": "DATA_MONITORING_NEW_ENDPOINT",
      "severity": "POTENTIAL",
      "state": "FAILED",
      ...
    },
    ...
  ]
}

ما هي الخطوات التالية؟

اطّلِع على تقارير طلبات البحث للتعرّف على كيفية استرداد نتائج التحليل.