简体   繁体   English

将 Firebase 分析与 SwiftUI 一起使用

[英]Using Firebase Analytics with SwiftUI

I recently installed Firebase Analytics in my SwiftUI app.我最近在我的 SwiftUI 应用程序中安装了 Firebase Analytics。 Everything works great except the automatic screen views.除了自动屏幕视图外,一切都很好。 Am I obligated to call AnalyticsEventScreenView for every view I would like to track?我是否有义务为我想跟踪的每个视图调用 AnalyticsEventScreenView?

Yes - due to the way SwiftUI views are structured, Analytics only sees NotifyingMulticolumnSplitViewController .是的 - 由于 SwiftUI 视图的结构方式,Analytics 只能看到NotifyingMulticolumnSplitViewController

You'll have to send screen views manually (as stated in the docs ), like this:您必须手动发送屏幕视图(如文档中所述),如下所示:

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()
  }
}

Same Peter's answer but automatically generating the ids彼得的答案相同,但会自动生成 ID

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()
  }
}

Firebase 9.0.0 has introduced new APIs that are specific to SwiftUI and have exited beta. Firebase 9.0.0 引入了特定于SwiftUI并已退出测试版的新 API。 There is now a View extension that implements a ViewModifier that provides you some functionality:现在有一个View扩展,它实现了一个ViewModifier ,它为您提供了一些功能:

func analyticsScreen(name: String, 
                     class: String = "View", 
                     extraParameters: [String: Any] = [:])

Analytics+SwiftUI.swift 分析+SwiftUI.swift

For example:例如:

struct MyView: View {
  var body: some View {
    Text("Hey")
       .analyticsScreen(
           name: "Screen Name", 
           extraParameters: [
              AnalyticsParameterScreenName: "\(type(of: self))",
              AnalyticsParameterScreenClass: "\(type(of: self))"
           ]
       )  
   }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM