簡體   English   中英

如何使用Crashlytics與iOS / OS X今天查看擴展?

[英]How to use Crashlytics with iOS / OS X today view extensions?

由於今天擴展程序以一個獨立的進程運行,我確信它們不會記錄任何崩潰的開箱即用。 我假設我們需要分別在小部件上初始化Crashlytics。 例如,在TodayViewControllerviewDidLoad方法中。

  • 是否有人在任何iOS / OS X擴展中使用Crashlytics? 如果是這樣,你是如何實現它的?
  • 我也想知道在Crashlytics中為擴展創建一個單獨的應用程序是否有意義。

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") } 

這是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

並運行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;
}

並將構建階段中的Fabric Run Script復制到Today Extension目標,並將來自主應用程序的info plist中的Fabric條目復制到Today Extension的信息plist中

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

  • 將此行添加到viewControllerinitWithCoder方法Fabric.with([Crashlytics.self])
  • 從主應用程序的Info.plist中復制“Fabric”字典並粘貼到您的擴展程序的Info.plist中。
  • 將運行腳本構建階段從主應用程序的目標復制/粘貼到擴展的運行腳本構建階段。

而且......你很高興!

如果您想添加Crashlytics以在iOS 8.0+上共享擴展程序,maremmle的答案也適用。 只記得把[Crashlytics startWithAPIKey:@"apiKey"]; 來自第一個ViewController的內部init方法。

感謝所有說明,它在我的共享擴展中正常工作。

我也注意到,對於我的共享擴展,織物答案儀表盤並沒有表現出實際的數據:

  1. 活躍用戶
  2. 每位用戶在應用程序中花費的中位數總時間

它適用於伴侶應用程序。 所以我想知道Answers SDK將如何確定這一點。 最符合邏輯的似乎是監控UIApplication通知。 由於擴展的生命周期與ViewController相關,因此不會發布這些UIApplication通知。 因此,Fabric不知道Extension何時處於活動狀態。

所以我實現了以下解決方案,它在Fabric Dashboard中提供了上述數據:

  1. 在Extensions主ViewController的'viewDidLoad'中,發布UIApplicationDidBecomeActiveNotification,它將觸發Fabric的啟動。
  2. 在關閉Extension(通過completeRequestReturningItems:completionHandler:cancelRequestWithError :)之前的事先發布UIApplicationWillResignActiveNotification。 這將觸發Fabric的停止。

請注意,設備上的操作與數據在控制板中可見時之間存在延遲。 特別是對於活躍用戶 展示擴展后大約需要20-30秒。 但是,當Extension關閉時,可能需要最多5 分鍾才能減少Active Users。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM