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.Analytics、Microsoft.AppCenter.Crashes、Microsoft.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 の初期化を置き換える
古い 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();
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 を初期化することが必要になる場合があります。
- このセクションで後述する初期化コードでは、既存
[iOS の配布のみ]プロジェクトの Info.plist ファイルを変更する
- Info.plist ファイルに または
CFBundleURLTypes
のURL types
新しいキーを追加します (Xcode で Info.plist がソース コードとして表示される場合)。 - 最初の子項目のキーを または
CFBundleURLSchemes
にURL Schemes
変更します。 - URL スキームとして を入力
appcenter-${Your App Secret}
し、 をアプリのアプリ シークレットに置き換えます${Your App Secret}
。
この詳細については、 App Center の配布に関するドキュメントを参照してください。
- Info.plist ファイルに または
アプリケーション全体のすべての 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 のフィードバックに関するページを参照してください。