【SwiftUI】FirebaseAnalytics用にModifierを作ってみた
9252 ワード
この記事について
Firebase×SwiftUIで作成されたアプリの場合
どのようにして画面が表示された際に
EventやUserPropertyを送ろうか考えた際に試してみた内容を記事にしてみました。
最後の方におまけとしてこれもできるのかな〜と
と思ったことを試してみたのも添えてありますのでご興味があればぜひ!
ViewのExtensionにAnalytics用のメソッドを追加
Viewのextensionで追加してみる
FirebaseAnalyticsTracker.swift
final class FirebaseAnalyticsTracker {
enum Event: String {
case login
}
func sendEventLog(_ event: Event, parameters: [String: Any] = [:]) {
Analytics.logEvent(event.rawValue, parameters: parameters)
}
enum UserProperty: String {
case level
}
func setUserProperty(key: UserProperty, value: String) {
Analytics.setUserProperty(value, forName: key.rawValue)
}
}
extension View {
func sendEventLog(_ eventName: FirebaseAnalyticsTracker.Event, parameters: [String: Any] = [:]) -> Self {
FirebaseAnalyticsTracker().sendEventLog(eventName, parameters: parameters)
return self
}
func setUserProperty(key: FirebaseAnalyticsTracker.UserProperty, value: String) -> Self {
FirebaseAnalyticsTracker().setUserProperty(key: key, value: value)
return self
}
}
struct FirebaseAnalyticsTestView: View {
var body: some View {
VStack {
Text("Send Analytics Data to Firebase")
}
.sendEventLog(.login)
.setUserProperty(key: .level, value: "5")
}
}
DebugViewで確認
無事loginEventとlevelが5であるというUserPropertyが送れてました
課題
@State
や@ObservedObject
で変更が通知され
Viewが再描画される際にFirebaseAnalytics用のModifierがある場合余分にEvent,UserPropertyが送信されているようでした。
ここに関しては引き続き検証をしていこうと思っておりますので進捗あり次第更新します
おまけ
Viewにコメント付与,logを出すModifierもできる
extension View {
func comment(_ text: String) -> Self {
return self
}
func log(_ text: String) -> Self {
print(text)
return self
}
}
struct ContentView: View {
var body: some View {
VStack {
Text("Send Analytics Data to Firebase")
.comment("こんな感じでいける")
.log("text")
}
}
}
Author And Source
この問題について(【SwiftUI】FirebaseAnalytics用にModifierを作ってみた), 我々は、より多くの情報をここで見つけました https://qiita.com/giiiita/items/051f89bae38409e2b029著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .