我最近尝试实现Microsoft.AppCenter.Crashes来帮助跟踪我团队的Xamarin.Forms应用程序中的崩溃。但是,当我们的iOS项目发生崩溃时,AppCenter从未检测到它。我已经创建了以下用于设置和检查的函数,该函数在我们的中心项目的App.xaml.cs App构造函数的开头附近被调用:
private async Task CheckForPreviousCrash()
{
//Setup AppCenter
await Xamarin.Forms.Device.InvokeOnMainThreadAsync(() =>
{
//Keys changed in StackOverflow post for security reasons.
AppCenter.Start("ios=########-####-####-####-############;android=########-####-####-####-############;uwp=########-####-####-####-############", typeof(Crashes));
AppCenter.IsNetworkRequestsAllowed = false; //Prevents sending user data to Microsoft. Required by company
});
//Make sure AppCenter is working
bool isEnabled = await Crashes.IsEnabledAsync();
if (!isEnabled)
{
_logger.LogError("AppCenter could not be started");
}
else
{
//Check for memory leak warnings
bool memoryIssue = await Crashes.HasReceivedMemoryWarningInLastSessionAsync();
if (memoryIssue)
{
_logger.LogError("AppCenter detected a memory warning in the last session");
}
//Check for crash info
bool crashed = await Crashes.HasCrashedInLastSessionAsync();
if (crashed)
{
var report = await Crashes.GetLastSessionCrashReportAsync();
_logger.LogCrashReport(report);
}
//If AppCenter detected no issues in the last session, log an "all clear" message
if (!memoryIssue && !crashed)
{
_logger.LogInformation("AppCenter did not detect a crash in the last session");
}
}
}
我已经使用Crashes.GenerateTestCrash()
函数测试了这段代码,这是我的团队试图解决的崩溃之一,还有一个简单的递归函数,它永远调用自己。在iOS上运行时,我们的日志将始终显示“AppCenter在上次会话中未检测到崩溃”消息,无论是否发生崩溃。任何帮助确定什么可能导致这将不胜感激。
备注:
- iOS项目始终运行,不连接调试器。我知道有一条规则,如果iOS附加了调试器,就不会生成崩溃报告
- 这在使用调试和发布模式构建时就已经看到了
- 这段代码在我们的Android和UWP项目上可以正常工作
- iOS项目始终通过
isEnabled
检查 - 正在运行AppCenter和AppCenter。4.5.0版崩溃
- 这是在iOS 15.2.1上运行的第7代iPad
编辑:针对建议答案的额外注解:
- 用于构建iOS项目的Mac运行macOS 11.6.2
- 项目使用XCode 13.2.1构建
- Xamarin Forms项目在Visual Studio 2019 16.11.7中构建,并通过Visual Studio的“Pair to Mac”功能发送到连接的Mac
- 没有其他库用于崩溃报告(最常用的是Serilog,它应该只处理日志)
- 我们不使用CocoaPods来集成AppCenter
2条答案
按热度按时间2nc8po8w1#
您可以检查您是否符合以下要求:
App Center SDK Analytics和Crashes通过XCFramework或SwiftPM与Mac Catalyst兼容。
以下是有关appcenter在ios https://learn.microsoft.com/en-us/appcenter/sdk/getting-started/ios上崩溃的更多详细信息
jogvjijk2#
您是否使用Xamarin.Google.iOS.MobileAds?如果是,版本需要是7.27.0.3或更早版本,因为AppCenter Crashes报告不适用于此软件包的最新版本。