0

直到最近我还在使用Xamarin Insights。我从我的项目中删除它,因为它显着增加了启动时间和应用程序大小。所以我剩下两个选择来自微软的Hockeyapp和Mobile Center。这些2的问题在于,他们没有任何报告捕获异常的报告功能,通常在您的xamarin表单项目中尝试捕获内容。如何处理xamarin表单项目中的异常处理?

的确非常令人失望。

xamarin insight有this它工作正常。我想问问我们如何才能在表单项目中报告异常?是应用程序洞察力选项。我在其他.net项目中使用,但UI确实不太可用。

甚至还有在github线程这里

https://github.com/Microsoft/ApplicationInsights-Xamarin/issues/26

微软说,我们正在为此工作了一年以上,从来没有任何提供并保持自嘲的东西。

+0

在HockeyApp中,您可以通过在catch块中添加事件来跟踪捕获异常的次数。但是,您无法真正发回附加信息。 – cvanbeek

+0

如何将异常作为事件发送?它是否像串一样工作? – batmaci

+0

[HockeyApp文档](https://support.hockeyapp.net/kb/client-integration-cross-platform/how-to-integrate-hockeyapp-with-xamarin)表示支持添加Dictionary以包含测量等等,但我还没有找到一种方法来实际阅读他们的网站上的测量(我可能只是做错了事情)。否则,所有事件都会记录该行代码执行的次数。 – cvanbeek

回答

2

我们使用移动中心报告问题。基本上每个catch语句中,我们使用一个静态类报告的问题,比如:

public static class EventTrace 
{ 
    public static void Trace(string menuName, string actionName, Dictionary<string, string> parameters = null) 
    { 
     try 
     { 
      Dictionary<string, string> tmp; 
      if (parameters != null) 
       tmp = new Dictionary<string, string>(parameters); 
      else 
       tmp = new Dictionary<string, string>(); 

      tmp.Add("GUID", MobileCenter.InstallId.ToString()); 
      Analytics.TrackEvent(menuName + " - " + actionName, tmp); 
     } 
     catch (Exception ex) 
     { 
      Analytics.TrackEvent("Event Trace - Error creating event", new Dictionary<string, string> { { "Exception", ex.ToString() } }); 
      Analytics.TrackEvent(menuName + " - " + actionName, parameters); 
     } 
    } 

    public static void Error(string menuName, string exception) 
    { 
     var parameters = new Dictionary<string, string> { { "Exception", exception } }; 
     var tmp = new Dictionary<string, string>(parameters); 
     try 
     { 
      tmp.Add("GUID", MobileCenter.InstallId.ToString()); 
      Analytics.TrackEvent(menuName + " - Error", tmp); 
     } 
     catch (Exception ex) 
     { 
      Analytics.TrackEvent("Event Trace - Error creating event", new Dictionary<string, string> { { "Exception", ex.ToString() } }); 
      Analytics.TrackEvent(menuName + " - Error", parameters); 
     } 
    } 
} 

我们有捕捉错误跟踪事件,和事件。在移动中心,我们基本上可以在事件选项卡中搜索“错误”语句。

它适合我们,希望它适合你!

+0

Hockeyapp有相似之处,但他们没有形式层面的跟踪事件,只有在本地层面。它需要执行依赖注入,如此处所述https://forums.xamarin.com/discussion/92974/hockeyapp-custom-events-on-xamarin-forms。 你做了类似的事吗?所以你的Analytics对象是你使用接口注入的对象吗? 除此之外,您是否还能够看到设备信息和应用程序版本信息? – batmaci

+0

当我使用PCL时,所有的错误报告和事件跟踪都位于应用程序的可移植部分。我必须做的唯一棘手的事情是为每个操作系统(在我的情况下为Android和iOS)创建不同的移动中心项目,并在每次启动时使用提供的不同移动中心ID初始化移动中心。 这里(https://screenpresso.com/=NGCLe)就是一个例子:我使用的是MVVMCross,所以我的启动都在Setup中。 –