[英]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.