HockeySDK から App Center Xamarin SDK に移行する

重要

Visual Studio App Center は、2025 年 3 月 31 日に廃止される予定です。 完全に廃止されるまで Visual Studio App Center を引き続き使用できますが、移行を検討できる推奨される代替手段がいくつかあります。

サポートタイムラインと代替手段の詳細については、こちらを参照してください。

HockeySDK ではなく App Center SDK を使用するようにアプリケーションを更新する場合は、このドキュメントに従ってください。

1. ライブラリを更新する

HockeySDK.Xamarin NuGet パッケージを、ソリューション内のすべてのプロジェクトの App Center パッケージに置き換えます。

Visual Studio for Mac

  • Visual Studio for Mac を開きます。
  • [ ファイルを>開く ] をクリックし、ソリューションを選択します。
  • ソリューション ナビゲーターで、[ パッケージ ] セクションを右クリックし、[ NuGet パッケージの追加]を選択します。
  • HockeySDK.Xamarin パッケージを削除します。
  • App Center を検索し、[App Center Analytics]、[App Center のクラッシュ]、[App Center の配布] を選択します。
  • [ パッケージの追加] をクリックします

Windows 用 Visual Studio

  • Windows 用 Visual Studio を開きます。
  • [ ファイルを>開く ] をクリックし、ソリューションを選択します。
  • ソリューション ナビゲーターで、[ 参照 ] を右クリックし、[ NuGet パッケージの管理] を選択します。
  • HockeySDK.Xamarin パッケージを削除します。
  • App Center を検索し、Microsoft.AppCenter.AnalyticsMicrosoft.AppCenter.CrashesMicrosoft.AppCenter.Distribute パッケージをインストールします。

パッケージ マネージャー コンソール

  • Visual Studio でコンソールを開きます。 これを行うには、[ツール]> [NuGet パッケージ マネージャー パッケージ マネージャー> コンソール] の順に選択します
  • Visual Studio for Macで作業している場合は、NuGet パッケージ管理拡張機能がインストールされていることを確認します。 このためには、[ Visual Studio>拡張機能] を選択し、必要に応じて NuGet を検索してインストールします。
  • コンソールで次のコマンドを入力します。
Uninstall-Package HockeySDK.Xamarin
Install-Package Microsoft.AppCenter.Analytics
Install-Package Microsoft.AppCenter.Crashes
Install-Package Microsoft.AppCenter.Distribute

App Center SDK はモジュール式のアプローチで設計されており、関心のあるサービスのみを統合できます。 このセクションでは、各 SDK モジュールを個別の依存関係として追加する必要があります。 次の表の等価性を参照してください。

HockeyApp クラス App Center モジュール
MetricsManager Analytics
CrashManager Crashes
UpdateManager Distribute

2. SDK セットアップ コードを更新する

2.1 アプリケーション識別子を変換する

App Center SDK では、グローバル一意識別子 (GUID) 形式のアプリケーション識別子が使用されます。 HockeyApp アプリ ID は App Center で使用できますが、別の形式に変換する必要があります。 識別子を変換するには、8-4-4-4-12 表現を取得するために 4 つのハイフンを追加する必要があります。

Before (HockeyApp): 00112233445566778899aabbccddeeff

After (App Center): 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");
      

      [プロパティ/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. App Center SDK を起動する

    • このセクションで後述する初期化コードでは、既存 using のステートメントの下に次の行を追加する必要があります。
    using Microsoft.AppCenter;
    using Microsoft.AppCenter.Analytics;
    using Microsoft.AppCenter.Crashes;
    using Microsoft.AppCenter.Distribute;
    

    Xamarin.Android:

    プロジェクトの MainActivity.cs ファイルを開き、 メソッド内に呼び出しをOnCreate()追加しますStart()

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

    注意

    アプリケーションにバックグラウンド サービスまたはブロードキャスト レシーバー、エクスポートされたアクティビティ、コンテンツ プロバイダーなどの複数のエントリ ポイントがある場合は、代わりにコールバックからApplication.OnCreate開始AppCenterすることをお勧めします。

    Xamarin.iOS:

    プロジェクト AppDelegate.cs のファイルを開き、 メソッド内に Start() 呼び出しを FinishedLaunching() 追加します。

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

    注意

    クラッシュを使用する場合は、UI/メイン スレッドでこのメソッドを呼び出し、メソッドが返されるまでバックグラウンド タスクを開始しないようにするStart必要があります。 その理由は、クラッシュの初期化中に別のスレッドからキャッチされた null 参照例外によってネイティブ クラッシュがトリガーされ、catch 句が無視される可能性があるためです。 メソッドが AppCenter.Start 返されたら、null 参照例外をもう一度試すかキャッチしても安全です。 このタイミングの問題の原因の詳細については、 Signals とサードパーティのクラッシュ レポーターに関する記事を 参照してください。

    Xamarin.Forms:

    iOS、Android、UWP プラットフォームを対象とする Xamarin.Forms アプリケーションを使用するには、App Center ポータルで 3 つのアプリケーション (プラットフォームごとに 1 つずつ) を作成する必要があります。 3 つのアプリを作成すると、3 つのアプリ シークレット (それぞれに 1 つ) が提供されます。 共有または移植可能なプロジェクトでプロジェクトの App.xaml.cs ファイル (または から Xamarin.Forms.Application継承するクラス) を開き、 メソッドに以下のメソッドを OnStart() 追加します。

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

    重要

    中かっこは、そのコンテンツを実際のアプリ シークレットに置き換える必要があることを文書化するためだけにあり、呼び出しに中かっこを Start 入れないでください。

    注意

    Android 用 HockeyApp SDK を使用している場合は、App Center SDK の に HockeyApp SDK を初期化してください。 iOS アプリケーションの場合、アプリに複数のアクティブなクラッシュ レポート SDK を含めることはできません。 他の SDK のクラッシュ レポート機能を無効にして、App Center がクラッシュをキャッチできることを確認します。

    注意

    iOS と Android に関する前のセクションの両方のメモは、Xamarin.Forms にも適用されます。 これらの解説がアプリケーションに適用される場合は、プラットフォームごとに異なる場所で AppCenter を初期化することが必要になる場合があります。

  3. [iOS の配布のみ]プロジェクトの Info.plist ファイルを変更する

    • Info.plist ファイルに または CFBundleURLTypesURL types新しいキーを追加します (Xcode で Info.plist がソース コードとして表示される場合)。
    • 最初の子項目のキーを または CFBundleURLSchemesURL Schemes変更します。
    • URL スキームとして を入力 appcenter-${Your App Secret} し、 をアプリのアプリ シークレットに置き換えます ${Your App Secret}

    この詳細については、 App Center の配布に関するドキュメントを参照してください

  4. アプリケーション全体のすべての HockeyApp API 呼び出しを置き換えます。 詳細な API マッピング テーブルを次に示します。

3. サービスと機能の比較

コア

機能 HockeyApp App Center
ログ レベルを調整する SharedHockeyManager.LogLevel (iOS) または HockeyLog.LogLevel (Android) AppCenter.LogLevel
インストールを特定する iOS のみ AppCenter.GetInstallIdAsync
ユーザーを特定する クラッシュのみ AppCenter.SetUserId

分析

機能 HockeyApp App Center
セッションを自動的に追跡する はい。Android でのみ無効にできます ドキュメント (無効にすることはできません)
プロパティを含むカスタム イベント HockeyApp.MetricsManager.TrackEvent Analytics.TrackEvent
実行時にサービスを無効にする MetricsManager.DisableUserMetrics (Android) または SharedHockeyManager.DisableMetricsManager (iOS) Analytics.SetEnabledAsync

Crashes

機能 HockeyApp App Center
クラッシュを自動的に送信する 既定で無効 ドキュメント (既定で有効)
テスト クラッシュを生成する CrashManager.GenerateTestCrash (iOS のみ) Crashes.GenerateTestCrash
追加のメタデータをアタッチする Yes ドキュメント (リスナーから添付できます)
[ユーザーのカスタマイズ] ダイアログ Yes ドキュメント (既定では提供されていません)
送信状態に関する情報を取得する Android のみ ドキュメント
以前のクラッシュに関する情報 CrashManager.GetLastCrashDetails (Android) または CrashManager.LastSessionCrashDetails (iOS) Crashes.GetLastSessionCrashReportAsync
実行時にサービスを無効にする SharedHockeyManager.DisableCrashManager (iOS のみ) Crashes.SetEnabledAsync

配布

注意

HockeyApp とは異なり、App Center のアプリ内更新機能は、App Center Distribute サービスを使用して配布される RELEASE ビルド (既定) でのみ機能します。 アプリがプライベート配布グループを使用している場合、App Center Distribute SDK の追加後にアプリを初めてインストールして開くと、ブラウザーが開いてユーザーを認証し、アプリ内更新を有効にします。 実行時にプライベートアプリ内更新トラックを設定すると、このブラウザーも開きます。 これは、アプリの後続のリリースでは発生しない 1 回限りの手順です。 詳細については、 App Center の配布に関するドキュメント を参照してください。

機能 HockeyApp App Center
制限付きアプリ内更新プログラム LoginManager.VerifyLogin (Android) または Authenticator.AuthenticateInstallation (iOS) Distribute.UpdateTrack
実行時にサービスを無効にする UpdateManager.Unregister (Android) または SharedHockeyManager.DisableUpdateManager (iOS) Distribute.SetEnabledAsync
更新ダイアログをカスタマイズする Yes Distribute.ReleaseAvailable

フィードバック サービス

フィードバック サービスは App Center ではサポートされません。 HockeyApp のフィードバックに関するページを参照してください。