Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/94.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 根据标志决定是否发送Crashlytics(Apple)报告_Ios_Crashlytics - Fatal编程技术网

Ios 根据标志决定是否发送Crashlytics(Apple)报告

Ios 根据标志决定是否发送Crashlytics(Apple)报告,ios,crashlytics,Ios,Crashlytics,我在我的隐私政策中添加了一个开关,允许人们选择不发送Crashlytics报告和答案分析。我正在用户首选项中保存首选项 不发送答案很容易;只需将对日志函数的调用封装在检查用户prefs的if语句中。但我发现,一旦应用程序已经运行,就很难禁用Crashlytics报告 我看了他们的文档,他们提到你可以让你的应用程序成为Crashlytics的代理: Crashlytics.sharedInstance().delegate = self Fabric.with([Crashlytics.self]

我在我的隐私政策中添加了一个开关,允许人们选择不发送Crashlytics报告和答案分析。我正在用户首选项中保存首选项

不发送答案很容易;只需将对日志函数的调用封装在检查用户prefs的if语句中。但我发现,一旦应用程序已经运行,就很难禁用Crashlytics报告

我看了他们的文档,他们提到你可以让你的应用程序成为Crashlytics的代理:

Crashlytics.sharedInstance().delegate = self
Fabric.with([Crashlytics.self])
然后在发送报告之前使用委托方法执行以下操作:

func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void)
{
    // You should take some set of actions here based on knowing that a crash happened, but then make sure to call the completion handler
    // If you don't call the completion handler, the SDK will not submit the crash report.
    if reportsAllowed {
        completionHandler(true)
    }
}
然后我强制崩溃,下次运行应用程序时,该方法不会被调用(我在其中放置了一个断点)


注意:我看到了这个答案(),但这需要人们重新启动应用程序,以进行选择加入/退出。

AFAIK Crashlytics在下次启动时发送崩溃报告,而不是在崩溃发生时发送,因此您应该可以使用委托方法。还请记住,如果在崩溃发生时附加了调试器,则Crashlytics不会捕获崩溃,这可能就是不调用委托的原因。以下是这方面的参考:@DánielNagy感谢您的评论。我决定让我的生活更轻松,做我引用的答案中描述的简单的事情。我刚刚添加了一个方法,每当标志更改为on时启动Crachlytics。