bitstadium / HockeySDK-iOS

HockeyApp was retired and the SDKs are deprecated. Please use App Center instead.
https://github.com/microsoft/appcenter-sdk-apple
Other
597 stars 268 forks source link

BITCrashManager ignores crashes after crashManagerStatus reset from .disabled #517

Closed GusevAndrey closed 4 years ago

GusevAndrey commented 6 years ago

If set crashManagerStatus to .disabled before start() there will be no crash handlers registered and crash would be ignored even if crashManagerStatus would be changed in future without relaunch.

https://github.com/bitstadium/HockeySDK-iOS/blob/055f2e9804b351812c7eb25f48f538d5cf1d9970/Classes/BITCrashManager.m#L1159

ElektrojungeAtWork commented 6 years ago

Hi @GusevAndrey,

this behavior is actually by design - the SDK wasn't implemented to have crash reporting enabled/disabled before calling [[BITHockeyManager sharedHockeyManager] startManager];.

That said, you could do:

 [[BITHockeyManager sharedHockeyManager] startManager];
  [[BITHockeyManager sharedHockeyManager] setDisableCrashManager:YES];

And then enable it whenever you want. In theory, it's possible to have a crash happen between these two lines of code (before it's disabled), I've never seen it happen in 7 years at HockeyApp and haven't heard that this is happening.

Let me know if this helps. Best, Benjamin

GusevAndrey commented 6 years ago

Hi @TroubleMakerBen,

It is strange to see it by design due to there is no any mention of that neither in comments or API which provides way to set any status at any time. Moreover there is no any assert in runtime too. So setting logs disabled before manager start looks totally legal.

And that led us to a bug which we've managed to discover only after investigate Hockey's sources.

So by the end of the day we did exactly what you say: disable crash manager just after start and hope nothing happens).

But still, it would be cool if the behaviour was supported or at minimum impossible by API.

ElektrojungeAtWork commented 6 years ago

Hi @GusevAndrey,

I appreciate the feedback and also agree. It's one of the learnings that we have incorporated in the way we design API's for the successor to HockeyApp, App Center (you should check it out, you can log in with your HockeyApp credentials!).