Переход из HockeySDK в пакет SDK Xamarin для Центра приложений

Важно!

Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio, пока он не будет полностью выведен из эксплуатации, существует несколько рекомендуемых вариантов, на которые вы можете рассмотреть возможность миграции.

Узнайте больше о сроках поддержки и альтернативных вариантах.

Следуйте этой документации, если вы хотите обновить приложение для использования пакета SDK центра приложений вместо HockeySDK.

1. Обновление библиотек

Замените пакет NuGet HockeySDK.Xamarin на пакеты Центра приложений во всех проектах в решении.

Visual Studio для Mac

  • Откройте Visual Studio для Mac.
  • Щелкните Файл>Открыть и выберите решение.
  • В навигаторе решения щелкните правой кнопкой мыши раздел Пакеты и выберите Добавить пакеты NuGet....
  • Удалите пакет HockeySDK.Xamarin .
  • Найдите Центр приложений и выберите Аналитика Центра приложений, Сбои Центра приложений и Распространение в Центре приложений.
  • Щелкните Добавить пакеты.

Visual Studio для Windows

  • Откройте Visual Studio для Windows.
  • Щелкните Файл>Открыть и выберите решение.
  • В навигаторе решения щелкните правой кнопкой мыши Ссылки и выберите Управление пакетами NuGet.
  • Удалите пакет HockeySDK.Xamarin .
  • Выполните поиск по запросу Центр приложений и установите пакеты Microsoft.AppCenter.Analytics, Microsoft.AppCenter.Crashes и Microsoft.AppCenter.Distribute .

Консоль диспетчера пакетов

  • Откройте консоль в Visual Studio. Для этого выберите Сервис>Консоль диспетчера>пакетов NuGet.
  • Если вы работаете в Visual Studio для Mac, убедитесь, что установлены расширения управления пакетами NuGet. Для этого выберитеРасширенияVisual Studio>, выполните поиск по запросу NuGet и установите, если это необходимо.
  • Введите в консоли следующую команду:
Uninstall-Package HockeySDK.Xamarin
Install-Package Microsoft.AppCenter.Analytics
Install-Package Microsoft.AppCenter.Crashes
Install-Package Microsoft.AppCenter.Distribute

Пакет SDK центра приложений разработан с модульным подходом— вы можете интегрировать только те службы, которые вас интересуют. Каждый модуль ПАКЕТА SDK необходимо добавить в качестве отдельной зависимости в этом разделе. См. эквивалентность в следующей таблице:

Класс HockeyApp Модуль Центра приложений
MetricsManager Analytics
CrashManager Crashes
UpdateManager Distribute

2. Обновление кода установки пакета SDK

2.1. Преобразование идентификатора приложения

Пакет SDK центра приложений использует идентификаторы приложений в формате GUID. Ваш идентификатор приложения HockeyApp может использоваться Центром приложений, но его необходимо преобразовать в другой формат. Чтобы преобразовать идентификатор, необходимо добавить четыре дефиса, чтобы получить представление 8-4-4-4-12.

До (HockeyApp): 00112233445566778899aabbccddeeff

После (Центр приложений): 00112233-4455-6677-8899-aabbccddeeff

2.2. Замена инициализации пакета SDK в коде приложения

  1. Удалите старый регистрационный код HockeyApp.

    • Xamarin.Android — откройте MainActivity.cs проекта и удалите следующие строки:

      using HockeyApp.Android;
      
      ...
      
      CrashManager.Register(this, "APP_IDENTIFIER");
      MetricsManager.Register(Application, "APP_IDENTIFIER");
      UpdateManager.Register(this, "APP_IDENTIFIER");
      

      Удалите следующий атрибут уровня сборки в разделе Properties/AssemblyInfo.cs:

      [assembly: MetaData ("net.hockeyapp.android.appIdentifier", Value="APP_IDENTIFIER")]
      
    • Xamarin.iOS — откройте AppDelegate.cs проекта и удалите следующие строки:

      using HockeyApp.iOS;
      
      ...
      
      var manager = BITHockeyManager.SharedHockeyManager;
      manager.Configure("APP_IDENTIFIER");
      manager.StartManager();
      manager.Authenticator.AuthenticateInstallation();
      
  2. Запуск пакета SDK центра приложений

    • Код инициализации, упомянутый далее в этом разделе, требует добавления следующих строк под существующими using операторами:
    using Microsoft.AppCenter;
    using Microsoft.AppCenter.Analytics;
    using Microsoft.AppCenter.Crashes;
    using Microsoft.AppCenter.Distribute;
    

    Xamarin.Android:

    Откройте файл MainActivity.cs проекта и добавьте Start() вызов в метод .OnCreate()

    AppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes), typeof(Distribute));
    

    Примечание

    Если приложение имеет фоновые службы или несколько точек входа, таких как широковещательный приемник, экспортированные действия или поставщики содержимого, рекомендуется запустить AppCenter обратный Application.OnCreate вызов.

    Xamarin.iOS:

    Откройте файл проекта AppDelegate.cs и добавьте Start() вызов в метод .FinishedLaunching()

    AppCenter.Start("{Your App Secret}", typeof(Analytics), typeof(Crashes), typeof(Distribute));
    

    Примечание

    При использовании аварийного завершения необходимо вызвать этот метод в потоке пользовательского интерфейса или main и избегать запуска фоновых задач до тех пор, пока метод не Start вернет результат. Причина заключается в том, что любое исключение пустой ссылки, перехватывающееся из другого потока во время инициализации аварийного завершения, может вызвать сбой в собственном коде и игнорировать предложение catch. AppCenter.Start После возврата метода можно повторить попытку или перехват исключений со пустой ссылкой. Дополнительные сведения о причине этой проблемы со временем см. в статье Сигналы и сторонние репортеры о сбоях .

    Xamarin.Forms:

    Чтобы использовать приложение Xamarin.Forms, предназначенное для платформ iOS, Android и UWP, необходимо создать три приложения на портале Центра приложений — по одному для каждой платформы. При создании трех приложений вы получите три секрета приложения — по одному для каждого. Откройте файл App.xaml.cs проекта (или класс, который наследуется от Xamarin.Forms.Application) в общем или переносимом проекте и добавьте приведенный ниже метод в OnStart() метод .

    AppCenter.Start("ios={Your App Secret};android={Your App Secret}", typeof(Analytics), typeof(Crashes), typeof(Distribute));
    

    Важно!

    Фигурные скобки просто для того, чтобы задокументировать, что необходимо заменить это содержимое фактическими секретами приложения, а не вставляйте фигурные скобки Start в вызове.

    Примечание

    Если вы используете пакет SDK HockeyApp для Android, обязательно инициализируйте пакет SDK HockeyApp ПОСЛЕ пакета SDK центра приложений. Для приложения iOS невозможно иметь в приложении несколько активных пакетов SDK для отчетов о сбоях. Отключите функцию отчетов о сбоях других пакетов SDK, чтобы центр приложений смог перехватывать сбои.

    Примечание

    Заметки из обоих предыдущих разделов об iOS и Android также относятся к Xamarin.Forms. Если эти замечания относятся к вашему приложению, может потребоваться инициализировать AppCenter в разных местах для каждой платформы.

  3. [Только для распространения iOS] Изменение файла Info.plist проекта

    • Добавьте новый ключ для URL types или CFBundleURLTypes в файл Info.plist (если Xcode отображает info.plist в качестве исходного кода).
    • Измените ключ первого дочернего элемента на URL Schemes или CFBundleURLSchemes.
    • Введите appcenter-${Your App Secret} в качестве схемы URL-адреса и замените ${Your App Secret} секретом приложения.

    Дополнительные сведения об этом см. в документации по распространению в Центре приложений.

  4. Замените все вызовы API HockeyApp в приложении. Подробные таблицы сопоставления API приведены ниже.

3. Сравнение служб и функций

Основные сведения

Компонент HockeyApp Центр приложений
Настройка уровня журнала SharedHockeyManager.LogLevel (iOS) или HockeyLog.LogLevel (Android) AppCenter.LogLevel
Определение установок Только iOS AppCenter.GetInstallIdAsync
Идентификация пользователей Только сбой AppCenter.SetUserId

Аналитика

Компонент HockeyApp Центр приложений
Автоматическое отслеживание сеансов Да, можно отключить только в Android Документация (не может быть отключена)
Пользовательские события со свойствами HockeyApp.MetricsManager.TrackEvent Analytics.TrackEvent
Отключение службы во время выполнения MetricsManager.DisableUserMetrics (Android) или SharedHockeyManager.DisableMetricsManager (iOS) Analytics.SetEnabledAsync

Сбои

Компонент HockeyApp Центр приложений
Автоматическая отправка сбоев Отключено по умолчанию Документация (включена по умолчанию)
Создание тестового сбоя CrashManager.GenerateTestCrash (Только iOS) Crashes.GenerateTestCrash
Присоединение дополнительных метаданных Да Документация (может быть присоединена из прослушивателя)
Диалоговое окно "Настройка пользователя" Да Документация (не предоставляется по умолчанию)
Получение сведений о состоянии отправки Только Android Документация
Сведения о предыдущем сбое CrashManager.GetLastCrashDetails (Android) или CrashManager.LastSessionCrashDetails (iOS) Crashes.GetLastSessionCrashReportAsync
Отключение службы во время выполнения SharedHockeyManager.DisableCrashManager (только для iOS) Crashes.SetEnabledAsync

Распространение

Примечание

В отличие от HockeyApp, функция обновлений в приложении центра приложений работает только с сборками RELEASE (по умолчанию), которые распространяются с помощью службы распространения Центра приложений . Если приложение использует частную группу рассылки, после установки и открытия приложения в первый раз после добавления пакета SDK для распространения центра приложений откроется браузер для проверки подлинности пользователя и включения обновлений из приложения. Этот браузер также откроется, если вы задали частную дорожку обновления в приложении во время выполнения. Это однократный шаг, который не будет выполняться для последующих выпусков вашего приложения. Дополнительные сведения см. в документации по распространению в Центре приложений .

Компонент HockeyApp Центр приложений
Ограниченные обновления в приложении LoginManager.VerifyLogin (Android) или Authenticator.AuthenticateInstallation (iOS) Distribute.UpdateTrack
Отключение службы во время выполнения UpdateManager.Unregister (Android) или SharedHockeyManager.DisableUpdateManager (iOS) Distribute.SetEnabledAsync
Настройка диалогового окна обновления Да Distribute.ReleaseAvailable

Служба обратной связи

Служба обратной связи не будет поддерживаться в Центре приложений. См . отзывы о HockeyApp.