يمكن لواجهة برمجة التطبيقات Checks API تحليل تطبيقات Android وiOS قبل إصدارها، ما يتيح لك الاطّلاع على سلوكيات جمع البيانات ومشاركتها في تطبيقك، بالإضافة إلى المشاكل المحتملة المتعلّقة بالامتثال قبل إطلاق تطبيقك للجميع.
يوضّح لك دليل البدء السريع هذا كيفية تحميل تطبيق باستخدام واجهة سطر الأوامر gcloud وأمر cURL.
المتطلبات الأساسية
قبل البدء، تأكَّد من إمكانية إرسال طلبات معتمَدة باستخدام دليل التفويض.
إعداد حِزمة التطبيق
Android
إنشاء ملف APK أو AAB لتطبيقك
اطّلِع على إنشاء تطبيقك وتشغيله في مستندات Android للحصول على التعليمات.
iOS
في Xcode، اختَر ملفًا شخصيًا للتزويد للتطبيق المستهدَف.
من القائمة المنسدلة التي تظهر، انقر على المنتج > الأرشيف. اختَر أحدث أرشيف، ثم انقر على توزيع التطبيق.
في النافذة التي تظهر، انقر على التطوير > التالي.
(اختياري) للحصول على إصدار أسرع، أزِل العلامة من المربّع بجانب الخيار إعادة الإنشاء من رمز Bitcode، ثم انقر على التالي.
لا تتطلّب عمليات التحقّق تقليل حجم تطبيقك أو إعادة إنشائه لتنفيذ اختبار، لذا يمكنك إيقاف هذا الخيار بأمان.
انقر على تصدير، ثم حدِّد الدليل الذي تريد تنزيل ملف 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",
...
},
...
]
}
ما هي الخطوات التالية؟
اطّلِع على تقارير طلبات البحث للتعرّف على كيفية استرداد نتائج التحليل.