Fazer upload do app para análise

A API Checks pode analisar apps Android e iOS antes do lançamento para que você tenha visibilidade sobre os comportamentos de coleta e compartilhamento de dados do app e possíveis problemas de conformidade antes de lançar o app publicamente.

Neste guia de início rápido, mostramos como fazer upload de um app usando a CLI gcloud e o comando cURL.

Pré-requisitos

Antes de começar, confira se você consegue enviar solicitações autorizadas usando nosso guia de autorização.

Preparar o pacote de apps

Android

  1. Gere um arquivo APK ou AAB para seu app.

    Consulte Criar e executar seu app na documentação do Android para ver instruções.

iOS

  1. No Xcode, selecione um perfil de provisionamento para o app de destino.

  2. No menu suspenso que aparece, clique em Produto > Arquivar. Selecione o arquivo mais recente e clique em Distribuir app.

  3. Na janela exibida, clique em Desenvolvimento > Próxima.

  4. (Opcional) Para ter uma versão mais rápida, desmarque a opção Reconstruir pelo Bitcode e clique em Avançar.

    As verificações não exigem a redução ou a recriação do app para executar um teste. Assim, é possível desativar essa opção com segurança.

  5. Clique em Exportar e especifique um diretório para baixar o arquivo IPA do app.

Fazer upload do seu pacote de apps

Faça upload do pacote de apps usando o método media.upload.

Há duas maneiras de fazer upload do app:

Binário com metadados

Você pode incluir metadados, como o codeReferenceId, que vincula a análise a um commit específico no repositório de código.

Envie uma solicitação POST de várias partes com o cabeçalho X-Goog-Upload-Protocol: multipart. A primeira parte do corpo contém os metadados como JSON, e a segunda parte contém o upload binário:

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"

Somente binário

Envie uma solicitação POST regular com o cabeçalho X-Goog-Upload-Protocol: raw para fazer upload do app sem metadados:

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"

Quando o upload do app terminar, um google.longrunning.Operation pendente será retornado:

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

Verificar o estado da análise

Para verificar o estado da sua análise, chame o método 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"

A seguinte resposta é retornada dependendo do estado:

Pendente

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

Concluído

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

Erro

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

Ver sua análise

Para ver sua análise, chame o método 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"

Por padrão, isso retorna apenas o nome do recurso do relatório e um URL para conferir o relatório no console de verificações.

Para ver mais dados, inclua uma máscara de campo na solicitação. Por exemplo, adicione o parâmetro de consulta do URL fields=name,resultsUri,checks para incluir o campo 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",
      ...
    },
    ...
  ]
}

A seguir

Consulte Relatórios de consulta para saber como buscar os resultados da sua análise.