【问题标题】:Can't get HockeyApp working on iOS with Xamarin Forms无法使用 Xamarin Forms 在 iOS 上运行 HockeyApp
【发布时间】: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


【解决方案1】:

你把你的曲棍球初始化代码放在哪里?

在我的 FinishedLaunching 方法中的 Hockey Init 之后,我让它与 global::Xamarin.Forms.Forms.Init(); 一起工作。

类似这样的:

var manager = BITHockeyManager.SharedHockeyManager;
...
manager.StartManager();
global::Xamarin.Forms.Forms.Init();

【讨论】:

  • 您好,谢谢您的回复,但我不再为那家公司工作了。我会将消息转发给我的前同事
  • 好的,谢谢 :) 如果是这样,请将其设置为正确答案
猜你喜欢
  • 1970-01-01
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-03
相关资源
最近更新 更多