22

С сегодняшнего дня расширения выполняются как разделенные процессом, я уверен, что они не будут регистрировать аварийные сообщения из коробки. Я предполагаю, что нам нужно инициализировать Crashlytics в виджетах отдельно. Например. в методе viewDidLoadTodayViewController.Как использовать Crashlytics с iOS/OS X сегодня просматривать расширения?

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

Я не мог использовать почти что-либо внутри расширений (Flurry не работает, crashlytics не работает, и даже файл .h, который у меня есть с некоторыми макросами asssert, не работает ...) – wolffan

+0

Это вопрос поддержки для Crashlytics.Пожалуйста, свяжитесь с ними напрямую. – Kerni

+0

@ wolffan до сих пор разочаровывает. –

ответ

24

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

  1. Добавьте Crashlytics Run Script Построить Фазу к цели вашего расширения, а также (копировать/вставить же вы добавили к вашему основному приложению)

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

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

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

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

Забыл упомянуть: поскольку для каждого расширения должен быть свой собственный идентификатор пакета, Crashlytics самостоятельно создает отдельное приложение на панели мониторинга. –

+0

Это не позволяет мне 50% времени. Это может быть проблема с несколькими расширениями (Today and Watch). В принципе, мне нужно постоянно перестраивать проект, потому что он терпит неудачу из-за того, что Crashlytics не находит dSYM каждый раз. – cyphers

+0

К сожалению, для меня это не сработало – marcelosalloum

5

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

+0

Действительно, это работает! Спасибо @edulpn –

6

Вот собственное руководство щебетать по его осуществлению:

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

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

В Podfile:

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

и запустить 0.И не забудьте установить 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; 
} 

и скопировать ткань Run Script в фазах сборки вашей цели сегодня Extension, и скопировать запись Ткань из информационного списка свойств из основного приложения в информации вашего Today Extension в PLIST

+0

это то, что я забыл «скопируйте сценарий запуска Fabric на этапах сборки в вашу цель« Расширение сегодня »» –

5

official how-to Здесь описано, как использовать Crashlytics в IOS Extensions:

  • Добавьте эту строку в ваш viewController «ы initWithCoderFabric.with([Crashlytics.self]) метод
  • Скопируйте„ткань“Словарь от Info.plist вашего основного приложения и вставить в Info.plist вашего расширения.
  • Скопируйте/вставьте этап запуска сценария запуска из целевого объекта вашего основного приложения в фазу создания сценария запуска.

И ... вам хорошо идти!

+1

Еще одна ошибка: вам нужно включить ответы в панели инструментов Fabric для расширения. Не знаю, является ли эта информация частью описанного выше руководства, так как меня приветствует «Извините, у вас нет доступа к этой теме!» когда я следую ссылке. – bfx

0

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

Я заметил, что на мою долю расширения, Тканевая Ответы панель сделал не показать фактические данные:

  1. активных пользователей
  2. Медиана Общее время нахождения в App на пользователя

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

Так я осуществил следующее решение, которое обеспечивает вышеуказанные данные в ткани Dashboard:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^