4

在我的 Xamarin iOS 应用程序中,我启用了 AppCenter 的分析和崩溃,如何在此处解释:https ://docs.microsoft.com/en-us/appcenter/sdk/getting-started/xamarin

分析工作,但我无法在 App Center Web 控制台的诊断部分看到任何崩溃/错误。在故障排除页面中写道,在 iOS 上只能是一个用于异常处理的工具,而这是唯一的一个。在我的应用程序中,我启用了 FCM,因此有 Firebase,我尝试删除对 Firebase 的任何引用,但没有任何变化。

启用AppCenter.LogLevel = LogLevel.Verbose;我可以看到,当应用程序崩溃时,AppCenter 会尝试存储异常(“将日志存储到崩溃”),但在我看到“找到一个空的缓冲区位置”之后。在重新启动时,我看到SendingErrorReport回调被调用,但SentErrorReportFailedToSendErrorReport忽略。

在 AppCenter.Start 之后,我尝试调用await Crashes.SetEnabledAsync(true). 如果我让它崩溃并且当我重新打开应用程序时,我调用ErrorReport crashReport = await Crashes.GetLastSessionCrashReportAsync()崩溃报告始终为空。

在符号部分,我可以读到“你太棒了!没有未符号化的崩溃”。我试图在 Debug 和 Release 中编译。我试图启动一个新的异常并使用Crashes.GenerateTestCrash.

我在 Xamarin.Forms 应用中使用 Analytics 和 Crash 没有任何问题。

4

2 回答 2

3

这种配置也适用于我:

using Microsoft.AppCenter.Crashes;

AppCenter.Start(Settings.AppCenterConfigString, typeof(Analytics), typeof(Crashes) /*, typeof(Push)*/);
Crashes.NotifyUserConfirmation(UserConfirmation.AlwaysSend);

自定义异常(错误)日志记录:

catch (Exception e) { Crashes.TrackError(e, ...); }

https://docs.microsoft.com/en-us/appcenter/sdk/crashes/xamarin#ask-for-the-users-consent-to-send-a-crash-log

于 2018-03-26T13:13:25.847 回答
2

最后经过大量的尝试和试验,我发现你必须重写一个不同的FinishedLaunching方法,它提供UIApplication&NSDictionary参数。

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            AppCenter.LogLevel = LogLevel.Verbose; //just so you can see in debug //that it is running successfully
            AppCenter.Start(#your app id#, typeof(Crashes));
}

不客气 ;-)


  1. 下次加载应用程序时将上传错误日志,因此单击按钮使其崩溃,然后关闭应用程序并将其从最近的应用程序中删除。
  2. 再次启动应用程序并等待片刻,然后查看 Web UI
  3. 根据操作系统版本,您还必须将以下代码添加到info.plist

    <key>NSAppTransportSecurity</key>
      <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
      </dict>

于 2020-01-15T14:22:13.270 回答