【发布时间】:2018-03-01 16:08:15
【问题描述】:
我尝试在带有 xamarin 表单的 iOS 项目上使用 HockeyApp。
它在安卓上运行良好,但我无法让它在 iOS 上运行。
这是我的 HockeyApp 的 AppDelegate 代码:
var manager = BITHockeyManager.SharedHockeyManager;
manager.Configure("----");
manager.CrashManager.Init();
manager.LogLevel = BITLogLevel.Verbose;
manager.CrashManager.CrashManagerStatus = BITCrashManagerStatus.AutoSend;
manager.StartManager();
manager.Authenticator.AuthenticateInstallation();
if (BITHockeyManager.SharedHockeyManager.CrashManager.DidCrashInLastSession)
{
runInSafeMode = true;
Thread.Sleep(5000);
}
然后,稍后在我的代码中抛出 NotYetImplementedException。
异常被正确捕获并发送到android上的服务器,但我无法让它在iOS上运行。
BITHockeyManager.SharedHockeyManager.CrashManager.DidCrashInLastSession 始终为假。
我也尝试不附加调试器,因为我读到调试器在 SDK 之前捕获异常,但仍然无法正常工作。
有什么想法吗?
编辑:附加信息
我尝试了 Visual Studio Mobile Center,在 android 上运行良好,在 iOS 上也出现同样的问题,HasCrashedInLastSessionAsync 总是为 false
我将抛出异常移到主方法之外,以防万一,仍然是同样的问题,API 似乎没有检测到异常
除了不附加调试器,我禁用了调试,我也尝试在Release中编译,没什么新的。
我删除了对 Init 和 AuthenticateInstallation 的调用,仍然是同样的问题。
【问题讨论】:
-
尝试删除
manager.CrashManager.Init()和manager.Authenticator.AuthenticateInstallation()。我也没有设置LogLevel,但这不应该伤害任何东西。我相信manager.Authenticator的东西只有在你打算做除异常处理和分析之外的事情时才需要。 -
@hvaughan3,感谢您的回复,我在没有他们的情况下尝试过但没有成功,仍然没有让 DidCrashInLastSession 为真。
-
重新启动应用程序后,Hockey App 网站门户中没有显示崩溃? (您必须在 未处理 异常导致应用崩溃后重新启动应用才能显示该异常)
-
@hvaughan3 否,更重要的是 DidCrashInLastSession 仍然为假。所以下次我的应用程序启动时,她无法以安全模式启动以允许 SDK 发送异常。我尝试了 Visual Studio Mobile Center,但我遇到了完全相同的问题,一切看起来都是正确的,但是当我阅读 Crashes.HasCrashedInLastSessionAsync() 时,它被设置为 false。无论何时连接或不连接调试器。看起来未处理的异常几乎没有被 SDK 捕获。
-
你没有捕捉到异常吧?如果您是,不确定它将如何在 Android 上运行,但只是想确定一下。我无法想象除了 iOS 链接器之外还有什么会导致问题,您可以尝试禁用它来排除这种情况。
标签: ios xamarin xamarin.ios xamarin.forms hockeyapp