Migrar do HockeySDK para o SDK do Xamarin do App Center
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.
Siga esta documentação se você quiser atualizar seu aplicativo para usar o SDK do App Center em vez do HockeySDK.
1. Atualizar as bibliotecas
Substitua o pacote NuGet HockeySDK.Xamarin pelos do App Center em todos os projetos em sua solução.
Visual Studio para Mac
- Abra o Visual Studio para Mac.
- Clique em Abrir Arquivo>e escolha sua solução.
- No navegador da solução, clique com o botão direito do mouse na seção Pacotes e escolha Adicionar pacotes NuGet....
- Remova o pacote HockeySDK.Xamarin .
- Pesquise o App Center e selecione Análise do App Center, Falhas do App Center e Distribuição do App Center.
- Clique em Adicionar Pacotes.
Visual Studio para Windows
- Abra o Visual Studio para Windows.
- Clique em Abrir Arquivo>e escolha sua solução.
- No navegador da solução, clique com o botão direito do mouse em Referências e escolha Gerenciar Pacotes NuGet.
- Remova o pacote HockeySDK.Xamarin .
- Pesquise o App Center e instale os pacotes Microsoft.AppCenter.Analytics, Microsoft.AppCenter.Crashes e Microsoft.AppCenter.Distribute .
Console do Gerenciador de Pacotes
- Abra o console no Visual Studio. Para fazer isso, escolha FerramentasConsole do Gerenciador dePacotes>>NuGet.
- Se você estiver trabalhando em Visual Studio para Mac, verifique se instalou as Extensões de Gerenciamento de Pacotes NuGet. Para isso, escolhaExtensões do Visual Studio>, pesquise NuGet e instale, se necessário.
- Digite o seguinte comando no console:
Uninstall-Package HockeySDK.Xamarin
Install-Package Microsoft.AppCenter.Analytics
Install-Package Microsoft.AppCenter.Crashes
Install-Package Microsoft.AppCenter.Distribute
O SDK do App Center foi projetado com uma abordagem modular. Você pode integrar apenas os serviços nos quais está interessado. Cada módulo do SDK precisa ser adicionado como uma dependência separada nesta seção. Confira as equivalências na próxima tabela:
Classe HockeyApp | Módulo do App Center |
---|---|
MetricsManager |
Analytics |
CrashManager |
Crashes |
UpdateManager |
Distribute |
2. Atualizar o código de instalação do SDK
2.1 Converter o identificador do aplicativo
O SDK do App Center usa identificadores de aplicativo no formato GUID (identificador global exclusivo). A ID do aplicativo HockeyApp pode ser usada pelo App Center, mas você precisa convertê-la em um formato diferente. Para converter o identificador, você deve adicionar quatro hifens para obter a representação 8-4-4-4-12.
Antes (HockeyApp): 00112233445566778899aabbccddeeff
Depois (App Center): 00112233-4455-6677-8899-aabbccddeeff
2.2 Substituir a inicialização do SDK no código do aplicativo
Remova o código de registro antigo do HockeyApp.
Xamarin.Android - Abra o MainActivity.cs do projeto e remova as linhas abaixo:
using HockeyApp.Android; ... CrashManager.Register(this, "APP_IDENTIFIER"); MetricsManager.Register(Application, "APP_IDENTIFIER"); UpdateManager.Register(this, "APP_IDENTIFIER");
Remova o seguinte atributo de nível de assembly em Propriedades/AssemblyInfo.cs:
[assembly: MetaData ("net.hockeyapp.android.appIdentifier", Value="APP_IDENTIFIER")]
Xamarin.iOS – Abra o AppDelegate.cs do projeto e remova as linhas abaixo:
using HockeyApp.iOS; ... var manager = BITHockeyManager.SharedHockeyManager; manager.Configure("APP_IDENTIFIER"); manager.StartManager(); manager.Authenticator.AuthenticateInstallation();
Iniciar o SDK do App Center
- O código de inicialização mencionado posteriormente nesta seção requer a adição das seguintes linhas abaixo das instruções existentes
using
:
using Microsoft.AppCenter; using Microsoft.AppCenter.Analytics; using Microsoft.AppCenter.Crashes; using Microsoft.AppCenter.Distribute;
Xamarin.Android:
Abra o arquivo MainActivity.cs do projeto e adicione a
Start()
chamada dentro doOnCreate()
métodoAppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes), typeof(Distribute));
Observação
Se o aplicativo tiver serviços em segundo plano ou vários pontos de entrada, como um receptor de difusão, atividades exportadas ou provedores de conteúdo, é recomendável iniciar
AppCenter
noApplication.OnCreate
retorno de chamada.Xamarin.iOS:
Abra o arquivo do
AppDelegate.cs
projeto e adicione aStart()
chamada dentro doFinishedLaunching()
métodoAppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes), typeof(Distribute));
Observação
Se estiver usando Falhas, você deverá chamar esse método na interface do usuário/main thread e evitar iniciar tarefas em segundo plano até que o
Start
método retorne. O motivo é que qualquer exceção de referência nula capturada de outro thread enquanto Crashes está inicializando pode disparar uma falha nativa e ignorar a cláusula catch. Depois que oAppCenter.Start
método retornar, é seguro tentar/capturar exceções de referência nula novamente. Você pode ler mais sobre a causa desse problema de tempo no artigo Sinais e repórteres de falha de terceiros .Xamarin.Forms:
Para usar um aplicativo Xamarin.Forms direcionado a plataformas iOS, Android e UWP, você precisa criar três aplicativos no portal do App Center – um para cada plataforma. A criação de três aplicativos fornecerá três segredos do aplicativo– um para cada um. Abra o arquivo de App.xaml.cs do projeto (ou sua classe que herda de
Xamarin.Forms.Application
) em seu projeto compartilhado ou portátil e adicione o método abaixo noOnStart()
método .AppCenter.Start("ios={Your App Secret};android={Your App Secret}", typeof(Analytics), typeof(Crashes), typeof(Distribute));
Importante
As chaves são apenas para documentar que você deve substituir esse conteúdo pelos segredos reais do aplicativo, não colocar chaves na
Start
chamada.Observação
Caso esteja usando o SDK do HockeyApp para Android, inicialize o SDK do HockeyApp APÓS o SDK do App Center. Para seu aplicativo iOS, não é possível ter mais de um SDK de relatório de falhas ativo em seu aplicativo. Desabilite a funcionalidade de relatório de falhas dos outros SDKs para garantir que o App Center possa capturar as falhas.
Observação
As anotações das seções anteriores sobre iOS e Android também se aplicam ao Xamarin.Forms. Se esses comentários se aplicarem ao seu aplicativo, talvez seja necessário inicializar o AppCenter em locais diferentes por plataforma.
- O código de inicialização mencionado posteriormente nesta seção requer a adição das seguintes linhas abaixo das instruções existentes
[Somente para distribuir iOS] Modificar o arquivo Info.plist do projeto
- Adicione uma nova chave para
URL types
ouCFBundleURLTypes
no arquivo Info.plist (caso o Xcode exiba seu Info.plist como código-fonte). - Altere a chave do primeiro item filho para
URL Schemes
ouCFBundleURLSchemes
. - Insira
appcenter-${Your App Secret}
como o esquema de URL e substitua${Your App Secret}
pelo Segredo do Aplicativo do seu aplicativo.
Para obter mais informações sobre isso, consulte a Documentação de distribuição do App Center.
- Adicione uma nova chave para
Substitua todas as chamadas à API do HockeyApp em todo o aplicativo. As tabelas detalhadas de mapeamento de API são fornecidas abaixo.
3. Comparação de serviços e recursos
Núcleo
Recurso | HockeyApp | App Center |
---|---|---|
Ajustar o nível de log | SharedHockeyManager.LogLevel (iOS) ou HockeyLog.LogLevel (Android) |
AppCenter.LogLevel |
Identificar instalações | Somente iOS | AppCenter.GetInstallIdAsync |
Identificar usuários | Somente falha | AppCenter.SetUserId |
Análise
Recurso | HockeyApp | App Center |
---|---|---|
Acompanhar sessões automaticamente | Sim, só pode ser desabilitado no Android | Documentação (não pode ser desabilitada) |
Eventos personalizados com propriedades | HockeyApp.MetricsManager.TrackEvent |
Analytics.TrackEvent |
Desabilitar o serviço em runtime | MetricsManager.DisableUserMetrics (Android) ou SharedHockeyManager.DisableMetricsManager (iOS) |
Analytics.SetEnabledAsync |
Falhas
Recurso | HockeyApp | App Center |
---|---|---|
Enviar falhas automaticamente | Desabilitadas por padrão | Documentação (habilitada por padrão) |
Gerar uma falha de teste | CrashManager.GenerateTestCrash (Somente iOS) |
Crashes.GenerateTestCrash |
Anexar metadados adicionais | Yes | Documentação (pode ser anexada do ouvinte) |
Personalizar a caixa de diálogo do usuário | Yes | Documentação (não fornecida por padrão) |
Obter informações sobre a status de envio | Somente Android | Documentação |
Informações sobre uma falha anterior | CrashManager.GetLastCrashDetails (Android) ou CrashManager.LastSessionCrashDetails (iOS) |
Crashes.GetLastSessionCrashReportAsync |
Desabilitar o serviço em runtime | SharedHockeyManager.DisableCrashManager (somente iOS) |
Crashes.SetEnabledAsync |
Distribuir
Observação
Ao contrário do HockeyApp, o recurso de atualizações no aplicativo do App Center só funciona com builds RELEASE (por padrão) que são distribuídos usando o serviço Distribuição do App Center . Se o aplicativo estiver usando um grupo de distribuição privado, depois que o aplicativo for instalado e aberto pela primeira vez depois que o SDK de Distribuição do App Center for adicionado, um navegador será aberto para autenticar o usuário e habilitar atualizações no aplicativo. Esse navegador também será aberto se você definir a faixa de atualização privada no aplicativo em runtime. Esta é uma etapa ONE-TIME que não ocorrerá para versões subsequentes do seu aplicativo. Consulte a Documentação de Distribuição do App Center para obter mais detalhes.
Recurso | HockeyApp | App Center |
---|---|---|
Atualizações restritas no aplicativo | LoginManager.VerifyLogin (Android) ou Authenticator.AuthenticateInstallation (iOS) |
Distribute.UpdateTrack |
Desabilitar o serviço em runtime | UpdateManager.Unregister (Android) ou SharedHockeyManager.DisableUpdateManager (iOS) |
Distribute.SetEnabledAsync |
Personalizar a caixa de diálogo de atualização | Yes | Distribute.ReleaseAvailable |
Serviço de Comentários
O serviço de comentários não terá suporte no App Center. Confira Comentários do HockeyApp.