如何在iOS / OS X上使用Crashlytics今天的扩展?
由于今天的扩展运行分离的过程,我相信他们不会logging任何崩溃的框。 我假设我们需要分别在小部件上初始化Crashlytics。 例如在TodayViewController
的viewDidLoad
方法中。
- 有没有人在任何iOS / OS X扩展中使用Crashlytics? 如果是的话,你是怎么实现的?
- 我也想知道在Crashlytics中创build一个单独的应用程序是否有意义。
Crashlytics支持与我联系并提供了这些步骤。 我testing了它们,它现在适用于我的iOS 8应用程序。
-
将Crashlytics Run Script Build阶段添加到您的扩展的目标(复制/粘贴您添加到您的主应用程序相同)
-
将
Crashlytics.framework
添加到扩展的链接库(例如,只需在其文件检查器中检查扩展目标) -
将
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:
- 将此行添加到您的
viewController
的initWithCoder
方法Fabric.with([Crashlytics.self])
- 从主应用程序的Info.plist中复制“结构”字典并粘贴到您的分机的Info.plist中。
- 将运行脚本构build阶段从主应用程序的目标复制/粘贴到您的扩展的运行脚本构build阶段。
而且…你很好走!
感谢所有的指示,它在我的共享扩展工作正常。
我注意到,对于我的共享扩展,Fabric Answers仪表板没有显示以下的实际数据:
- 活跃用户
- 每个用户在应用程序中使用的中间总时间
它为伴侣应用程序。 所以我想知道如何答案SDK将确定这一点。 最合理的似乎是监视UIApplication通知。 由于扩展的生命周期与ViewController相关,因此不会发布这些UIApplication通知。 因此,Fabric不知道分机何时激活。
所以我实现了以下解决scheme,它在Fabric Dashboard中提供了上述数据:
- 在扩展主ViewController的'viewDidLoad'中,发布UIApplicationDidBecomeActiveNotification,它将触发Fabric的启动。
- 之前closures扩展(通过completeRequestReturningItems:completionHandler:或cancelRequestWithError:)后UIApplicationWillResignActiveNotification。 这将触发织物的停止。
请注意,设备上的操作与数据在仪表板中可见之间存在延迟。 特别是对于活跃用户 。 推广后需要大约20-30秒。 但是当扩展closures时,活动用户递减前可能需要5 分钟 。
- iOS xcode 5 crashlytics错误 – Shell脚本调用错误 – ./Crashlytics.framework/run:权限被拒绝
- iOS(结构):Crashlytics崩溃应用程序发射
- 如何找出什么导致在IOS 8 didHideZoomSlider错误?
- Crashlytics不显示崩溃
- Crashlytics不会将崩溃报告发送到我的Fabric仪表板?
- 在Worklight应用程序中集成Crashlytics时未findsqlcipher框架
- com.apple.NSURLSession-work EXC_BAD_ACCESS崩溃debugging
- React-Native ios应用程序崩溃而不报告
- 了解iOS崩溃