從 HockeySDK 移轉至 App Center Xamarin SDK
重要
Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到完全淘汰為止,但有數個建議的替代方案可以考慮移轉至。
如果您想要更新應用程式以使用 App Center SDK,而不是 HockeySDK,請遵循此檔。
1.更新連結庫
將 HockeySDK.Xamarin NuGet 套件取代為您解決方案中所有專案中的 App Center 套件。
Visual Studio for Mac
- 開啟 Visual Studio for Mac。
- 按兩下 [檔案>開啟 ],然後選擇您的解決方案。
- 在方案導覽器中,以滑鼠右鍵按兩下 [ 套件 ] 區段,然後選擇 [ 新增 NuGet 套件...]。
- 拿掉 HockeySDK.Xamarin 套件。
- 搜尋 App Center,然後選取 [App Center 分析]、[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 應用程式識別碼可由 App Center 使用,但您需要將其轉換成不同的格式。 若要轉換標識碼,您必須新增四個連字元,以取得 8-4-4-4-12 表示法。
(HockeyApp) 之前: 00112233445566778899aabbccddeeff
(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");
移除 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();
啟動 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
檔案,並在 方法內FinishedLaunching()
新增Start()
呼叫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 入口網站中建立三個應用程式-每個平臺各一個應用程式。 建立三個應用程式會提供三個應用程式秘密,每個應用程式各有一個。 開啟專案的 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 檔案
- 如果 Xcode 將 Info.plist 顯示為原始程式碼) ,請在 Info.plist 檔案中新增 或
CFBundleURLTypes
的新索引鍵URL types
(。 - 將第一個子項目的索引鍵變更為
URL Schemes
或CFBundleURLSchemes
。 - 輸入
appcenter-${Your App Secret}
作為網址設定,並以您應用程式的 [應用程式密碼] 取代${Your App Secret}
。
如需詳細資訊,請參閱 App Center散發檔。
- 如果 Xcode 將 Info.plist 顯示為原始程式碼) ,請在 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 |
損毀
功能 | 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 散發服務散發的發行組建 () 。 如果應用程式使用私人通訊群組,在App Center散發SDK新增後第一次安裝並開啟應用程式後,瀏覽器會開啟以驗證使用者並啟用應用程式內更新。 如果您在運行時間設定私人應用程式內更新追蹤,此瀏覽器也會開啟。 這是應用程式後續版本不會發生的 ONE-TIME 步驟。 如需詳細資訊,請參閱 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 意見反應。