Solução de problemas do SDK do iOS

Importante

O Visual Studio App Center está programado para ser desativado em 31 de março de 2025. Embora você possa continuar a usar o Visual Studio App Center até que ele seja totalmente desativado, há várias alternativas recomendadas para as quais você pode considerar migrar.

Saiba mais sobre linhas do tempo e alternativas de suporte.

Problemas durante a instalação

  1. No console, procure um log assert com a mensagem "SDK do App Center configurado com êxito". A mensagem implica que o SDK foi configurado com êxito.
  2. Se você estiver usando o Cocoapods para integrar o App Center em seu aplicativo iOS e encontrar um erro com a mensagem – CocoaPods - Unable to find a specification for AppCenter, execute pod repo update para atualizar o repositório cocoapods local e, em seguida, execute pod install novamente.
  3. Se você estiver usando o CocoaPods para integrar o App Center em seu aplicativo iOS e, enquanto a compilação do projeto encontrar um erro com a mensagem, framework not found AppCenter.xcframework será necessário atualizar(reinstalar) o Cocoapods para a versão tardia executando [sudo] gem install cocoapods.
  4. Se você estiver integrando os binários do SDK manualmente, verifique se você tem módulos habilitados para seu projeto.

Os dados de análise não aparecem no portal

  1. Verifique se você integrou os módulos do SDK corretamente.

  2. Verifique se o Segredo do Aplicativo correto está incluído junto com a chamada de start:withServices: método. Você pode copiar o código exato start:withServices:abrindo o aplicativo no portal e navegando até Introdução página.

  3. Se você quiser ver os logs enviados para o back-end, altere o nível de log para Detalhado em seu aplicativo. O SDK imprimirá os logs no Console. Insira a seguinte chamada antes do início do SDK:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Verifique se "SDK do App Center configurado com êxito" aparece nos logs (no nível do log INFO) e, em seguida, marcar se você vir logs de solicitação HTTPS.

  4. Verifique se o dispositivo está online.

  5. Às vezes, os logs podem levar alguns minutos para serem exibidos no portal. Aguarde algum tempo se esse for o caso.

  6. Para marcar se o back-end do App Center recebeu seus dados, vá para a seção Fluxo de log no serviço análise. Seus eventos devem aparecer depois que forem enviados.

Falhas não aparecem no portal

  1. Verifique se você integrou os módulos do SDK corretamente.

  2. Verifique se o segredo do aplicativo correto está incluído junto com a chamada de start:withServices: método. Você pode copiar o código exato start:withServices: abrindo o aplicativo no portal e navegando até Introdução página.

  3. As falhas do App Center encaminharão o log de falhas somente após a reinicialização do aplicativo. Além disso, o SDK não encaminhará nenhum log de falha se você estiver anexado ao depurador. Verifique se o depurador não está anexado quando você falha no aplicativo.

  4. Se você quiser ver os logs enviados para o back-end, altere o nível de log para Detalhado em seu aplicativo. O SDK imprimirá os logs no Console. Insira a seguinte chamada antes do início do SDK:

    [MSACAppCenter setLogLevel:MSACLogLevelVerbose]
    
    AppCenter.logLevel = .verbose
    

    Verifique se "SDK do App Center configurado com êxito" aparece nos logs (no nível do log INFO) e, em seguida, marcar se você vir logs de solicitação HTTPS.

  5. Não use nenhuma outra biblioteca que forneça funcionalidade de Relatório de Falhas. Você só pode ter um SDK de relatório de falhas integrado em seu aplicativo.

  6. Verifique se o dispositivo está online.

  7. Às vezes, os logs podem levar alguns minutos para serem exibidos no portal. Aguarde algum tempo se esse for o caso.

  8. Verifique se o SDK detectou a falha na próxima inicialização do aplicativo. Você pode chamar a API para marcar se o aplicativo falhou na última sessão e mostra um alerta. Ou você pode estender o retorno de chamada de falha didSucceedSendingErrorReport para ver se ele foi enviado com êxito ao servidor.

  9. Para marcar se o back-end do App Center recebeu a falha, vá para a seção Fluxo de log no serviço análise. Seus acidentes devem aparecer lá, assim que forem enviados.

O Alerta que solicita aos usuários uma atualização não contém cadeias de caracteres, mas apenas as chaves para eles

Isso significa que o AppCenterDistributeResources.bundle não foi adicionado ao projeto. Verifique se você soltou o arquivo em seu projeto Xcode e ele aparece na fase de build do destino do Copy Bundle Resources aplicativo. Ele deverá aparecer lá se você adicionou o arquivo por meio de arrastar e soltar – o Xcode faz isso automaticamente para você. Se o arquivo estiver ausente na fase de build, adicione-o para que ele seja compilado no pacote do aplicativo.

Se você estiver usando Cocoapods, ele cuidará dos recursos automaticamente. Tente reinstalar o pod.

Você vê mensagens no console que indicam que o banco de dados não pôde ser aberto

A partir da versão 0.11.0 do SDK do iOS, o App Center usa o SQLite para persistir os logs antes de enviar para o back-end. Se você estiver agrupando seu aplicativo com sua própria biblioteca SQLite em vez de usar a fornecida pelo sistema operacional, poderá ver erros como esse no console [AppCenter] ERROR: -[MSACDBStorage executeSelectionQuery:]/147 Failed to open database e não verá nenhuma informação de análise ou falha no back-end. Atualize o SDK para a versão 0.13.0 ou posterior.

Distribuir e atualizações no aplicativo estão bloqueando meus testes de interface do usuário automatizados

Se as atualizações no aplicativo estiverem habilitadas, elas bloquearão seus testes de interface do usuário automatizados. O processo de atualização tentará se autenticar no back-end do App Center. É recomendável não habilitar a Distribuição do App Center para seu destino de teste de interface do usuário.

Por que o SDK é distribuído como uma "biblioteca estática"

As principais metas de design para o SDK do App Center devem ter um impacto mínimo no aplicativo usando o App Center e ter um SDK modular. Isso resultaria na distribuição do SDK como várias bibliotecas compartilhadas vinculadas dinâmicas.

Historicamente, o iOS não dá suporte a bibliotecas compartilhadas vinculadas dinâmicas, mas foi adicionado ao iOS 8, conforme explicado nesta postagem no blog por Landon Fuller.

No entanto, o App Center é distribuído como uma biblioteca compartilhada vinculada estaticamente que é encapsulada em uma estrutura falsa "gorda". Isso significa que o SDK está vinculado no momento da compilação e não no momento da inicialização para melhorar o desempenho. O carregamento de várias bibliotecas compartilhadas vinculadas dinâmicas leva tempo.

A Apple recomenda otimizar a inicialização do aplicativo para não levar mais de 400 ms em uma sessão WWDC. Eles recomendam especificamente bibliotecas compartilhadas estáticas em relação às compartilhadas dinâmicas para atingir essa meta. Distribuir o SDK do App Center para iOS como uma biblioteca compartilhada vinculada estaticamente segue a recomendação da Apple para fornecer o melhor desempenho e um impacto mínimo para o aplicativo que inclui o SDK.

Para saber mais sobre bibliotecas compartilhadas vinculadas estaticamente versus bibliotecas compartilhadas vinculadas dinâmicas, recomendamos a documentação geral da Apple sobre o tópico.

Por que os binários do SDK são tão grandes? Estou preocupado com o tamanho do meu aplicativo

Os binários do AppCenter são distribuídos como estruturas "gordas" que contêm fatias para todas as arquiteturas do iPhone e para o simulador de iPhone. É por isso que, por exemplo , AppCenter.framework tem 10,5 MB para baixar.

O tamanho compilado dos binários do SDK será muito menor do que o .framework que você adiciona ao seu aplicativo no Xcode. Lembre-se também de que os builds de versão também serão menores do que os builds de depuração.

Para ilustrar isso, criamos um aplicativo Objective-C vazio com o Xcode 9.2, adicionamos os binários do App Center ao aplicativo e distribuimos builds de versão a um iPhone 7 executando o iOS 11.3.

Fizemos os testes sem o Bitcode habilitado e não usamos o Ajuste de Aplicativo. Você pode usar essas técnicas para reduzir ainda mais o tamanho binário do aplicativo.

Os números abaixo podem variar e depender das configurações de build, portanto, considere-os um guia aproximado. Dito isso, adicionar o SDK do App Center ao seu aplicativo tem um impacto mínimo sobre o tamanho do binário do aplicativo.

Módulos do App Center usados Tamanho do IPA exportado Tamanho da instalação
Nenhum (aplicativo em branco) 24 KB 132 KB
Análise do App Center 120 KB 377 KB
Falha no App Center 239 KB 705 KB
Distribuição do App Center 163 KB 528 KB
Todos os módulos do App Center 314 KB 930 KB

Proteger o valor do segredo do App Center

O app_secret é um identificador do seu aplicativo, é necessário saber a qual aplicativo o tráfego se aplica e não pode ser usado para recuperar ou editar dados existentes. Se você app_secret estiver exposto, o maior risco será enviar dados inválidos para seu aplicativo, mas isso não terá efeito sobre a segurança dos dados.

Para recuperar dados confidenciais, você precisaria fornecer um token de aplicativo/usuário, que é gerado no lado do cliente. Não há como tornar os dados do lado do cliente completamente seguros.

Você pode melhorar a segurança do aplicativo usando uma variável de ambiente para injetar o segredo do aplicativo em seu código. Dessa forma, o segredo não está visível em seu código.