Checks API는 출시 전에 Android 및 iOS 앱을 분석하여 앱을 공개적으로 출시하기 전에 앱의 데이터 수집 및 공유 동작과 잠재적인 규정 준수 문제를 파악할 수 있도록 지원합니다.
이 빠른 시작에서는 gcloud CLI와 cURL 명령어를 사용하여 앱을 업로드하는 방법을 보여줍니다.
기본 요건
시작하기 전에 Google의 승인 가이드를 사용하여 승인된 요청을 보낼 수 있는지 확인하세요.
App Bundle 준비
Android
앱의 APK 또는 AAB 파일을 생성합니다.
안내는 Android 문서의 앱 빌드 및 실행을 참고하세요.
iOS
Xcode에서 대상 앱의 프로비저닝 프로필을 선택합니다.
표시되는 드롭다운 메뉴에서 제품 > 보관처리를 클릭합니다. 가장 최근의 보관 파일을 선택한 다음 앱 배포를 클릭합니다.
표시되는 창에서 개발 > 다음을 클릭합니다.
(선택사항) 더 빨리 빌드하려면 비트코드에서 다시 빌드 옵션을 선택 해제하고 다음을 클릭합니다.
Checks를 사용하면 테스트를 실행하기 위해 앱을 축소하거나 다시 빌드할 필요가 없으므로 이 옵션을 사용 중지해도 아무 문제가 없습니다.
내보내기를 클릭한 다음 앱의 IPA 파일을 다운로드할 디렉터리를 지정합니다.
앱 번들 업로드
media.upload
메서드를 사용하여 App Bundle을 업로드합니다.
앱을 업로드하는 방법에는 두 가지가 있습니다.
메타데이터가 있는 바이너리
분석을 코드 저장소의 특정 커밋에 연결하는 codeReferenceId
과 같은 메타데이터를 포함할 수 있습니다.
첫 번째 본문 부분에 메타데이터가 JSON으로 포함되고 두 번째 본문 부분에 바이너리 업로드가 포함된 X-Goog-Upload-Protocol: multipart
헤더를 사용하여 멀티파트 POST 요청을 보냅니다.
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"
바이너리만
X-Goog-Upload-Protocol: raw
헤더를 사용하여 일반 POST 요청을 보내 메타데이터 없이 앱을 업로드합니다.
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"
기본적으로 보고서 리소스 이름과 Checks Console에서 보고서를 볼 수 있는 URL만 반환됩니다.
더 많은 데이터를 확인하려면 요청에 필드 마스크를 포함하세요. 예를 들어 checks
필드를 포함하려면 URL 쿼리 매개변수 fields=name,resultsUri,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",
...
},
...
]
}
다음 단계
분석 결과를 가져오는 방법은 쿼리 보고서를 참고하세요.