Где поставить трассировку Firebase Performance
Я пытаюсь определить, в каком месте лучше всего разместить трассировку производительности базы данных. Я хочу посмотреть, сколько времени уходит у моего приложения на получение данных.
В моем ВК есть следующее
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 не поддерживает расширения в настоящее время
1 ответ
Вы используете Firebase Performance в контексте расширения приложения (например, часы, клавиатура, сегодня и т. д.)? Это сообщение вызывается этой строкой в файле FirebasePerformance.h:
NS_EXTENSION_UNAVAILABLE ("FirebasePerformance в настоящее время не поддерживает расширения приложений.")
В настоящее время Firebase Performance поддерживает только обычные приложения на iOS.