如何使用Crashlytics与iOS/OS X今天查看扩展?

mar*_*_st 26 ios crashlytics osx-extensions today-extension ios-extensions

由于今天扩展程序以一个独立的进程运行,我确信它们不会记录任何崩溃的开箱即用.我假设我们需要分别在小部件上初始化Crashlytics.例如在viewDidLoad方法中TodayViewController.

  • 是否有人在任何iOS/OS X扩展中使用Crashlytics?如果是这样,你是如何实现它的?
  • 我也想知道在Crashlytics中为扩展创建一个单独的应用程序是否有意义.

mar*_*_st 28

Crashlytics支持与我联系并提供了这些步骤.我测试了它们,它现在适用于我的iOS 8应用程序.

  1. 将Crashlytics Run Script Build Phase添加到您的扩展程序的目标(复制/粘贴您添加到主应用程序中的相同)

  2. 添加Crashlytics.framework到您的扩展程序的链接库(例如,只需在其文件检查器中检查扩展目标)

  3. 添加Crashlytics.startWithAPIKey("yourApiKey")到扩展程序的视图控制器的initWithCoder方法.(在Apple今天的扩展模板中TodayViewController默认调用它 )

    >如果你还没有initWithCoder方法,那么它之后应该是这样的:

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        Crashlytics.startWithAPIKey("yourApiKey")
    }
    
    Run Code Online (Sandbox Code Playgroud)


and*_*rrs 8

这是Twitter自己的实施指南:

https://twittercommunity.com/t/integrate-fabric-crashlytics-with-ios-8-extension/28905

因此,复制库,​​例如,如果您正在使用CocoaPods,则可以将Fabric和Crashlytics添加到Extension目标:

在Podfile中:

target :TodayExtension do
  pod 'Fabric'
  pod 'Crashlytics'
end
Run Code Online (Sandbox Code Playgroud)

并运行pod install.而且不要忘记设置Build Active Architecture OnlyNO,或者你可能会得到链接错误

然后在你的TodayViewController中:

#import <Fabric/Fabric.h>
#import <Crashlytics/Crashlytics.h>

...

-(id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    [Fabric with:@[CrashlyticsKit]];
    return self;
}
Run Code Online (Sandbox Code Playgroud)

并将构建阶段中的Fabric Run Script复制到Today Extension目标,并将来自主应用程序的info plist中的Fabric条目复制到Today Extension的信息plist中


Val*_*gin 6

以下是官方如何描述如何在iOS扩展中使用Crashlytics:

  • 将此行添加到您viewControllerinitWithCoder方法中Fabric.with([Crashlytics.self])
  • 从主应用程序的Info.plist中复制"Fabric"字典并粘贴到您的扩展程序的Info.plist中.
  • 将运行脚本构建阶段从主应用程序的目标复制/粘贴到扩展的运行脚本构建阶段.

而且......你很高兴!


edu*_*lpn 5

如果您想添加Crashlytics以在iOS 8.0+上共享扩展程序,maremmle的答案也适用.只记得从第一个ViewController中放入[Crashlytics startWithAPIKey:@"apiKey"];内部init方法.