internal static bool RegisterNativeIntegrations(this SentryXamarinOptions options) { if (options.NativeIntegrationEnabled) { #if NATIVE_PROCESSOR var nativeintegration = new NativeIntegration(options); options.AddIntegration(nativeintegration); return(true); #else options.DiagnosticLogger?.Log(SentryLevel.Debug, "No NativeIntegration found for the given target."); #endif } return(false); }
/// <summary> /// Add the Sentry Xamarin Forms integration to Sentry.Xamarin SDK. /// </summary> /// <param name="options">The Sentry Xamarion Options.</param> public static void AddXamarinFormsIntegration(this SentryXamarinOptions options) { var applicationListener = new FormsApplicationListener(options); var formsIntegration = new SentryXamarinFormsIntegration(options); options.AddIntegration(formsIntegration); applicationListener.AddListener(formsIntegration.RegisterRequestThemeChange); if (options.PageTracker is null) { var navigationIntegration = new FormsNavigationIntegration(); options.AddPageNavigationTrackerIntegration(navigationIntegration); applicationListener.AddListener(navigationIntegration.ApplySentryNavigationEvents); } options.ProtocolPackageName = ProtocolPackageName; applicationListener.Invoke(); }
/// <summary> /// Unregister the previous navigation tracker and adds the registers the new Navigation Tracker to SentryXamarinOptions. /// </summary> /// <param name="options"></param> /// <param name="tracker">The IPageNavigationTracker.</param> internal static void AddPageNavigationTrackerIntegration(this SentryXamarinOptions options, IPageNavigationTracker tracker) { options.AddIntegration(tracker); options.PageTracker?.Unregister(); options.PageTracker = tracker; }