如何将Crashlytics集成到iOS框架目标中?

时间:2017-05-24 10:23:50

标签: ios frameworks crash-reports crashlytics

我有一个iOS框架目标,我需要为它集成Crash报告系统。

所以Crashlytics看起来不错,但是

此Xcode项目没有任何Mac或iOS目标

那么,有没有办法将Crashlytics直接集成到iOS框架中?

3 个答案:

答案 0 :(得分:5)

感谢Mike Bonnell your comment here,其中说:

  

当然,我们的SDK仅支持初始化一次。在框架和应用程序中初始化会导致冲突。您和应用程序开发人员将拥有不同的API密钥,并且无法让应用程序开发人员授予您的SDK权限,以便与您的框架共享代码中的堆栈跟踪。在我们的框架中包含我们会给您的框架和使用它的任何人带来问题,这就是为什么我说不要包含我们!完全理解SDK开发人员希望看到这种支持。

答案 1 :(得分:0)

按照链接中提供的以下步骤整合Crashlytics。

Fabric Integration

  

最强大,最轻的减重报告解决方案。   花费更少的时间寻找和更多的时间来解决崩溃问题。 Crashlytics在iOS和Android上都被评为#1性能SDK,它提供了深入且可操作的见解,甚至是应用程序崩溃的确切代码行。

     

虽然Crashlytics为您提供了强大的崩溃报告功能,但只需再点击一次,您就可以启用实时分析,帮助您了解应用中发生的情况。 Fabric的分析引擎可以深入了解您的核心目标,例如增长,保留和参与度。最后,您不需要分析的分析。

希望它有所帮助。

答案 2 :(得分:0)

这里有一个解决方案,允许您的lib用户使用crashlytics进行日志记录。

您的lib可以提供一个默认的日志函数,该函数调用NSLog或Print或所需的任何机制。而且您的库还提供了一种机制来覆盖所使用的打印方法。

例如,假设您在库中定义了一个Logger类:

public class Logger {
  private static var printer: (message: String) -> Void = nil
  public static func setPrinter(newPrinter: (message: String) -> Void) {
    Logger.printer = newPrinter
  }

  debug(format: String, ...) {
      // convert params into a single formatted:String, then ...
      if(Logger.printer != nil) {
          Logger.printer(message: formatted)
      } else {
          print(formatted)
          // or
          NSLog(formatted)
      }
  }
}

现在,当人们使用您的图书馆时,他们将获得您实施的默认打印。但是,如果他们有自己的日志记录解决方案,例如crashlytics,则可以这样覆盖它:

// in their App code
Logger.setPrinter((message:String) -> Void {
  CLSNSLog(message)
});