Куда поместить трассировку производительности Firebase

Я пытаюсь определить, какое место лучше всего подходит для размещения трассировки производительности firebase. Я хочу посмотреть, сколько времени требуется моему приложению для извлечения данных.

В моем ВК у меня есть следующее

  func pullAllUsersCards() {
// 1 Start Here?
FirebaseUtility.shared.getCards { (cards, errMessage) in
  if let theCards = cards {
    if theCards.count < 1 {
      if let addVC = self.storyboard?.instantiateViewController(withIdentifier: StoryboardKeys.addCardViewControllerStoryboardID) as? AddCardViewController {
        let addNavigation = UINavigationController(rootViewController: addVC)
        if UIDevice.current.userInterfaceIdiom == .pad {
          self.splitViewController?.present(addNavigation, animated: true, completion: nil)
        } else {
          self.present(addNavigation, animated: true, completion: nil)
        }
      }
    } else {
      // 2 Start Here?
      MBProgressHUD.showAdded(to: self.view, animated: true)
      self.cardArray = theCards
      self.tableView.reloadData()
      MBProgressHUD.hide(for: self.view, animated: true)
    }
  }
 }
}

Первоначально я хотел поместить трассировку в свой одноэлементный класс FirebaseUtility, где находится метод getCards.

  func getCards(completion: @escaping (_ cards: [Card]?, _ errorMessage: String?) -> Void) {
//    let testTrace = Performance.startTrace(name: "Test")
guard let userID = user?.uid else {
  let error = "Unknown error occured! User is not logged in."
  completion(nil, error)
  return
}

let userCardRef = ref.child(FirebaseKeys.newCards).child(userID)
userCardRef.observe(.value, with: { (snapshot) in // changed from Single Event
  let enumerator = snapshot.children
  var cards = [Card]()

  while let cardSnapshot = enumerator.nextObject() as? DataSnapshot {
    if let cardDict = cardSnapshot.value as? [String : Any] {
      let card = Card(id: cardSnapshot.key, cardDict: cardDict)
      cards.append(card)
    }
  }
  completion(cards, nil)
})
//    testTrace?.stop()
}

однако, когда я пытаюсь использовать его там, я получаю сообщение об ошибке, говорящее о том, что Firebase Performance не поддерживает расширения в настоящее время.


person RubberDucky4444    schedule 13.02.2018    source источник


Ответы (1)


используете ли вы Firebase Performance в контексте расширения приложения (например, часы, клавиатура, сегодня и т. д.)? Это сообщение вызывается этой строкой в ​​файле FirebasePerformance.h:

NS_EXTENSION_UNAVAILABLE («FirebasePerformance в настоящее время не поддерживает расширения приложений».)

В настоящее время Firebase Performance поддерживает только обычные приложения для iOS.

person Eric Shieh    schedule 13.02.2018
comment
У меня есть сегодняшнее расширение, но я на 90% уверен, что этот конкретный метод не используется расширением (не на компьютере) - person RubberDucky4444; 14.02.2018
comment
Можете ли вы дважды проверить, на каком этапе процесса сборки появляется сообщение об ошибке? Возможно, ваша цель расширения Today зависит от файла Firebase Performance .h, что вызывает это сообщение. - person Eric Shieh; 15.02.2018