Использование Firebase Analytics с SwiftUI

#firebase #swiftui #firebase-analytics

#firebase #swiftui #firebase-аналитика

Вопрос:

Недавно я установил Firebase Analytics в свое приложение SwiftUI. Все работает отлично, кроме автоматического просмотра экрана. Обязан ли я вызывать AnalyticsEventScreenView для каждого представления, которое я хотел бы отслеживать?

Ответ №1:

Да — из-за того, как структурированы представления SwiftUI, аналитика видит только NotifyingMulticolumnSplitViewController .

Вам придется отправлять просмотры экрана вручную (как указано в документах), например:

 import SwiftUI
import Firebase

struct ContentView: View {
  var body: some View {
    NavigationView {
      List {
        NavigationLink(destination: OneView()) {
          Text("One")
        }
        NavigationLink(destination: TwoView()) {
          Text("Two")
        }
      }
      .navigationTitle("Choose a screen")
      .onAppear() {
        Analytics.logEvent(AnalyticsEventScreenView,
                           parameters: [AnalyticsParameterScreenName: "(ContentView.self)",
                                        AnalyticsParameterScreenClass: "(ContentView.self)"])
      }
    }
  }
}

struct ContentView_Previews: PreviewProvider {
  static var previews: some View {
    ContentView()
  }
}
 
 import SwiftUI
import Firebase

struct OneView: View {
  var body: some View {
    Text("1")
      .onAppear() {
        Analytics.logEvent(AnalyticsEventScreenView,
                           parameters: [AnalyticsParameterScreenName: "(OneView.self)",
                                        AnalyticsParameterScreenClass: "(OneView.self)"])
      }
  }
}

struct OneView_Previews: PreviewProvider {
  static var previews: some View {
    OneView()
  }
}
 

Комментарии:

1. Спасибо за ответ! Я читал в документах, касающихся аналитики, в поисках подчеркивающего UIViewController, но хотел спросить, чтобы убедиться, что я ничего не пропустил. Ручной вызов AnalyticsEventScreenView отлично работает.

Ответ №2:

Тот же ответ Питера, но автоматически генерирующий идентификаторы

 import SwiftUI
import Firebase

struct OneView: View {
  var body: some View {
    Text("1")
      .onAppear() {
        Analytics.logEvent(AnalyticsEventScreenView,
                           parameters: [AnalyticsParameterScreenName: "(type(of: self))",
                                        AnalyticsParameterScreenClass: "(type(of: self))"])
      }
  }
}

struct OneView_Previews: PreviewProvider {
  static var previews: some View {
    OneView()
  }
}