在我的Xamarin iOS应用中,我启用了AppCenter的分析和崩溃,如何解释:https://docs.microsoft.com/en-us/appcenter/sdk/getting-started/xamarin
Analytics可以运行,但我无法在App Center Web控制台的“诊断”部分看到任何崩溃/错误。 在故障排除页面中写道,在iOS上,它不仅仅是一个异常处理工具,而且这是唯一的一个。在我的应用中,我启用了FCM,因此有Firebase,我尝试删除对Firebase的任何引用,但没有任何更改。
启用AppCenter.LogLevel = LogLevel.Verbose;
我可以看到app崩溃时AppCenter尝试存储异常(“将日志存储到崩溃”),但是在我看到“找到空缓冲区位置”之后。在重新启动时,我看到调用了SendingErrorReport
回调,但忽略了SentErrorReport
和FailedToSendErrorReport
。
在AppCenter.Start之后我尝试拨打await Crashes.SetEnabledAsync(true)
。如果我让它崩溃,当我重新打开应用程序时,我会调用ErrorReport crashReport = await Crashes.GetLastSessionCrashReportAsync()
崩溃报告始终为空。
在符号部分,我可以读到“你太棒了!没有不受约束的崩溃”。我试图在Debug和Release中编译。我尝试启动新的例外并使用Crashes.GenerateTestCrash
。
使用Xamarin.Forms应用程序使用Analytics和Crash时没有任何问题。
答案 0 :(得分:2)
这种配置也适用于我:
using Microsoft.AppCenter.Crashes;
AppCenter.Start(Settings.AppCenterConfigString, typeof(Analytics), typeof(Crashes) /*, typeof(Push)*/);
Crashes.NotifyUserConfirmation(UserConfirmation.AlwaysSend);
自定义异常(错误)日志记录:
catch (Exception e) { Crashes.TrackError(e, ...); }
答案 1 :(得分: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));
}
不客气;-)
info.plist
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>