Как использовать Crashlytics с расширениями iOS / OS X today view?

поскольку сегодня расширения работают как отдельный процесс, я уверен, что они не будут регистрировать сбои из коробки. Я предполагаю, что нам нужно инициализировать Crashlytics на виджете отдельно. Е. Г. в viewDidLoad метод TodayViewController.

  • кто-нибудь уже использует Crashlytics внутри любых расширений iOS / OS X? Если да, то как вы его реализовали?
  • мне также интересно, имеет ли смысл создавать отдельное приложение в Crashlytics только для расширения.

5 ответов


поддержка Crashlytics связалась со мной и предоставила эти шаги. Я тестировал их, и теперь он работает для меня iOS 8 app.

  1. добавьте этап сборки сценария запуска Crashlytics в цель вашего расширения (скопируйте / вставьте то же самое, что вы добавили в основное приложение)

  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, вы можете добавить ткань и Crashlytics к цели расширения:

В Файл Контейнера:

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

и работать pod install. И не забудьте установить Build Active Architecture Only to NO, или вы можете получить linker ошибки

затем в вашем TodayViewController:

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

...

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

и скопируйте ткань Выполнить Скрипт на этапах сборки для вашей цели расширения Today и скопируйте запись ткани из info plist из основного приложения в info plist вашего сегодняшнего расширения


здесь официальный как описано, как использовать Crashlytics в расширениях iOS:

  • добавьте эту строку в свой viewController ' s initWithCoder метод Fabric.with([Crashlytics.self])
  • скопируйте словарь" ткань " из информации вашего основного приложения.plist и вставить в информацию вашего расширения.файл plist.
  • скопируйте / вставьте фазу сборки сценария запуска из целевого объекта вашего основного приложения в фазу сборки сценария запуска вашего расширения.

и... вы хорошо идти!


ответ от maremmle также работает, если вы хотите добавить Crashlytics для совместного использования расширений на iOS 8.0+. Просто не забудьте поставить[Crashlytics startWithAPIKey:@"apiKey"]; внутри init метод из вашего первого ViewController.


Спасибо за все инструкции, он отлично работает в моем расширении доли.

Я заметил, что для расширения моей доли панель инструментов Fabric Answers сделала не показать фактические данные:

  1. Активные Пользователи
  2. медиана Общее время, проведенное в приложении на пользователя

Это делает для приложения companion. Поэтому мне было интересно, как ответы SDK определят это. Наиболее логичным кажется мониторинг уведомлений UIApplication. С жизненный цикл расширения связан с ViewController, эти уведомления UIApplication не разносятся. И поэтому Fabric не знает, когда расширение активно.

поэтому я реализовал следующее решение, которое предоставляет вышеуказанные данные в панели инструментов Fabric:

  1. в "viewDidLoad" расширений главного ViewController, post UIApplicationDidBecomeActiveNotification, который запустит запуск для Fabric.
  2. до закрытия Расширение (через completeRequestReturningItems:completionHandler: или cancelRequestWithError:) сообщение UIApplicationWillResignActiveNotification. Это вызовет остановку для ткани.

обратите внимание, что существует задержка между действием на устройстве, и когда данные становятся видимыми в приборной панели. Особенно для Активные Пользователи. Это занимает около 20-30 секунд после того, как расширение представлено. Но когда расширение закрыто, оно может занять до 5 минут перед уменьшением активных пользователей.