Подтвердить что ты не робот

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

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

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

Ответ 1

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

  • Добавьте Crashlytics Run Script Build Phase в вашу цель расширения (скопируйте/вставьте то же, что вы добавили в основное приложение)

  • Добавьте Crashlytics.framework в ваши библиотеки, связанные с расширением (например, просто проверьте цель расширения в своем инспекторе файлов)

  • Добавьте Crashlytics.startWithAPIKey("yourApiKey") к вашему контроллеру вида расширения initWithCoder. (В шаблоне расширения Apple сегодня он называется TodayViewController по умолчанию)

    > Если у вас пока нет метода initWithCoder, он должен выглядеть следующим образом:

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

Ответ 2

Вот собственное руководство Twitter по его реализации:

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

Итак, скопируйте библиотеки, например, если вы используете CocoaPods, вы можете добавить Fabric и Crashlytics к цели расширения:

В подпикселе

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 Запустить Script на этапах сборки в целевую задачу Today Extension и скопируйте запись Fabric из информационного слоя из основного приложения в ваш текущий информационный слой

Ответ 3

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

  • Добавьте эту строку в свой viewController initWithCoder метод Fabric.with([Crashlytics.self])
  • Скопируйте словарь "Fabric" из основного приложения Info.plist и вставьте в расширение. Info.plist.
  • Скопируйте/вставьте Запуск Script Фаза сборки из основной цели приложения в расширение. Запустите Script Фаза сборки.

И... тебе хорошо идти!

Ответ 4

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

Ответ 5

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

Я заметил, что для моего расширения Share на панели мониторинга Fabric Answers не отображаются фактические данные для:

  • Активные пользователи
  • Среднее общее время, потраченное на приложение на пользователя

Это приложение для компаньона. Поэтому мне было интересно, как это определит SDK Answers. Кажется, что наиболее логичным является мониторинг уведомлений UIApplication. Поскольку жизненный цикл расширения связан с ViewController, эти уведомления об использовании UIA не публикуются. И, следовательно, Fabric не знает, когда Extension активен.

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

  • В 'viewDidLoad' основного ViewController Extensions введите сообщение UIApplicationDidBecomeActiveNotification, которое инициирует запуск для Fabric.
  • До закрытия расширения (через completeRequestReturningItems: completeHandler: или cancelRequestWithError:) post UIApplicationWillResignActiveNotification. Это вызовет остановку для Fabric.

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