如何在iOS / OS X上使用Crashlytics今天的扩展?

由于今天的扩展运行分离的过程,我相信他们不会logging任何崩溃的框。 我假设我们需要分别在小部件上初始化Crashlytics。 例如在TodayViewControllerviewDidLoad方法中。

  • 有没有人在任何iOS / OS X扩展中使用Crashlytics? 如果是的话,你是怎么实现的?
  • 我也想知道在Crashlytics中创build一个单独的应用程序是否有意义。

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

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

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

  3. Crashlytics.startWithAPIKey("yourApiKey")添加到您的扩展的视图控制器的initWithCoder方法中。 (在苹果的今天扩展模板默认情况下,它被称为TodayViewController

    >如果你还没有initWithCoder方法,那么应该看起来像这样:

     required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder) Crashlytics.startWithAPIKey("yourApiKey") } 

这是Twitter自己实施它的指南:

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

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

在Podfile中:

 target :TodayExtension do pod 'Fabric' pod 'Crashlytics' end 

并运行pod install 。 并且不要忘记将Build Active Architecture Only设置为NO ,否则您可能会收到链接器错误

然后在你的TodayViewController中:

 #import <Fabric/Fabric.h> #import <Crashlytics/Crashlytics.h> ... -(id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; [Fabric with:@[CrashlyticsKit]]; return self; } 

并将构build阶段的Fabric Run Script复制到您的Today Extension目标中,并将Fabric项目从主应用程序中的Info plist复制到您的Today Extension的信息列表中

如果你想在iOS 8.0+上添加Crashlytics来分享扩展,那么从maremmle回答也可以。 只要记住把[Crashlytics startWithAPIKey:@"apiKey"]; 在你的第一个ViewController的init方法里面。

这里是官方如何介绍如何在iOS扩展中使用Crashlytics:

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

而且…你很好走!

感谢所有的指示,它在我的共享扩展工作正常。

我注意到,对于我的共享扩展,Fabric Answers仪表板没有显示以下的实际数据:

  1. 活跃用户
  2. 每个用户在应用程序中使用的中间总时间

它为伴侣应用程序。 所以我想知道如何答案SDK将确定这一点。 最合理的似乎是监视UIApplication通知。 由于扩展的生命周期与ViewController相关,因此不会发布这些UIApplication通知。 因此,Fabric不知道分机何时激活。

所以我实现了以下解决scheme,它在Fabric Dashboard中提供了上述数据:

  1. 在扩展主ViewController的'viewDidLoad'中,发布UIApplicationDidBecomeActiveNotification,它将触发Fabric的启动。
  2. 之前closures扩展(通过completeRequestReturningItems:completionHandler:或cancelRequestWithError:)后UIApplicationWillResignActiveNotification。 这将触发织物的停止。

请注意,设备上的操作与数据在仪表板中可见之间存在延迟。 特别是对于活跃用户 。 推广后需要大约20-30秒。 但是当扩展closures时,活动用户递减前可能需要5 分钟