๐ MixPanel ์ฌ์ฉ
https://docs.mixpanel.com/docs/what-is-mixpanel
What is Mixpanel? - Mixpanel Docs
docs.mixpanel.com
์ฌ์ด๋ ํ๋ก์ ํธ๊ฐ ๊ฑฐ์ ๋ง๊ฐ์ด ๋์ด๊ฐ๊ณ , ๋ฐฐํฌํ๊ธฐ ์ ์ธ๋ฐ
์ฑ ๋ด์์ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋๋์์ Events๋ฅผ ์ถ์ ํด๋ณด๋ผ๋ผ๋ ์กฐ์ธ์ ์ป์๊ณ ,
๊ทธ๊ฒ์ ์ ์ฉํ๊ธฐ ์ํด MixPanel ์ด๋ผ๋๊ฒ์ ์ถ์ฒ๋ฐ์์ต๋๋ค.
( Firebase๊ฐ์ ๊ฒ๋ค๋ ๋์ง๋ง, ์ธ์ฌ์ดํธ๋ก ํต๊ณ๋ฅผ ํ์ธํ๋๋ฐ์ ์์ด์ MixPanel์ด ํธํ๋ค๊ณ ํ๋ค์ ! )
๊ทธ๋ฐ๋ฐ, ์ ์ ๊ตฌ๊ธ๋ง์ ํด๋ณด๋ฉด MixPanel์ ๋ํ ์ ๋ณด๊ฐ ๋ง์ด ์๋์์ต๋๋ค !
๋ฐ๋ก ํ ์คํธ์ฉ ํ๋ก์ ํธ ํ์ผ์ ๋ง๋ค์ด์ ํ ์คํธ๋ฅผ ์๋ํ๊ณ , ์ํ๋๋๋ก ์ฑ๊ณตํด์ ๊ธฐ๋กํ์ฌ ๋จ๊ฒจ๋ด ๋๋ค.
1. ์ผ๋จ MixPanel ์ฌ์ดํธ์์ ํ๋ก์ ํธ ํ์ผ์ ๋ง๋ค๋ฉด MixPanel์ Setttingํ๋ ํ๋ฉด์ด ๋์ต๋๋ค.
๋์ค์ ๋ฐ๋ก ๋ค์ด ๊ฐ ๊ฒฝ์ฐ, ์ฐ์ธก ์๋จ ๋ฉ๋ด์์ Set Up MixPanel์ ์ ํํ๋ฉด ๋จ !
2. SetUp ์์
STEP 1์์ SetUp์ ์์ํ๋๋ฐ, ์ ๋ PersonalizeSetup์ ์ ํํด์ ๋์ด๊ฐ์คฌ์ต๋๋ค.
๊ทธ๋ผ ๋๋ฒ์งธ ๋จ๊ณ๊ฐ ๋์ค๋๋ฐ, ์ด๋ค Events๋ค์ ์ถ์ ํ ๊ฑด์ง ์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
Sign Up, ContentView, Share, Purchase ๊ฐ ์ ํ์๋๊ฑด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ์์ ธ์๋ ๊ฒ๋ค์ด๊ณ
์ ๋ ํ๋ก์ ํธ ๋ด์์ 3๊ฐ์ ๋ฒํผ์ด ์ผ๋ง๋ Tapped๋๋๋ฅผ ์ถ์ ํ ๊ฒ์ด์๊ธฐ ๋๋ฌธ์, 3๊ฐ์ ๋ฒํผ Events๋ก ๋ฐ๊ฟ์ค๊ฒ์.
์ด๋ ๊ฒ ์์ ์ํ๊ณ , Next๋ฅผ ๋๋ฅด๋ฉด
๊ฐ ์ด๋ฒคํธ์ ์ด๋ ํ ํ๋กํผํฐ๋ช ์ ์ฐ๊ฒฐํด์ค๊ฑด์ง ์ค์ ํ๋ ํ๋ฉด์ด ๋์ต๋๋ค.
์ฌ๊ธฐ์ ํ๋กํผํฐ๋, ํ๋ก์ ํธ๋ด์์ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฅผ ํ๋กํผํฐ๋ก ๋์ MixPanel ํ๋กํ์ ์ ๋ฌํด์, ์์น๋ฅผ ์ด๋ป๊ฒ ์ฆ๊ฐ์ํฌ๊ฑด์ง ์ค์ ํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ๋ณด๋ฉด ๋ฉ๋๋ค. ( ์๋ง ? )
์ ๋ ์ด๋ ๊ฒ, Marker1์ ํด๋นํ๋ ํ๋กํผํฐ๋ช ์ TappedMarker1์ผ๋ก ํด์ค๊ฒ์.
๊ทธ๋ฆฌ๊ณ ํ๊ฐ์ Events์ ์ฌ๋ฌ๊ฐ์ Properties๋ฅผ ํ ๋นํ ์ ์์ผ๋ฏ๋ก, ๊ฐ ์ด๋ฒคํธ๋ง๋ค ํด๋ฆญํด์ ๋์ด๊ฐ๋ฉด ๋ฉ๋๋ค.
์ด๋ ๊ฒ์.
๋ชจ๋ ํ๋กํผํฐ ๋ํ ์ค์ ์ด ๋๋ฌ๋ค๋ฉด, Next๋ฅผ ๋๋ฌ ๋์ด๊ฐ๋๋ค.
์ด๋ฐ ํ๋ฉด์ด ๋์ค๋ฉด์, ์ค์ ํ๋ ์ด๋ฒคํธ์ ํ๋กํผํฐ๋ฅผ ํ์ธํ๊ณ
Connect your data๋ฅผ ํด๋ฆญํ๋ฉด
์ด๋ ๊ฒ MixPanel ์ ํ ์ ๋๋ฌ์ต๋๋ค. !
์ฐ์ธก ์๋จ์ ๋ณด๋ฉด, token ์ด ๋์์๋๋ฐ ์ด token์ด ํ๋ก์ ํธ ํ์ผ ๋ด์์ ๋์ Mixpanelํ๋ก์ ํธ์ ์ฐ๊ฒฐ์ํฌ ํ ํฐ ๊ฐ์ด ๋๋ฏ๋ก,
๊ณต๊ฐ๋์ง ์๊ฒ ์ ๋ณต์ฌํด์ ์ฌ์ฉํ์๋ฉด ๋ฉ๋๋ค. ( ๋ฌผ๋ก MixPanel ์ฌ์ดํธ๋ด์์ ์์๋ก ํ์ธ ๊ฐ๋ฅ )
๊ทธ๋ฆฌ๊ณ ์์ง ๊ฐ์ง๋๋ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ๋๋ฌธ์, ํ์ฌ STEP 3์์ ์ผ์ชฝ ํ๋จ์ Skip for Now๋ก ์ผ๋จ ์ค์ ํ๋ฉด์ ๋๊ฐ์ค๋๋ค.
Xcode
์ ์ด์ Xcode์ ํ๋ก์ ํธ ํ์ผ์ ์์ฑํด์ฃผ๊ณ , MixPanel ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐ์์ผ์ค์ผํฉ๋๋ค.
Add Package์์ https://github.com/mixpanel/mixpanel-swift ์ด ๊ฐ์ URL์ ๋ฃ์ด์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํด์ค๋๋ค.
( ์ถ๊ฐ ํ, MixPanel์ด ์ ๋๋ก import๊ฐ ์๋ ์๋ ์๋๋ฐ Xcode๋ฅผ ์ข ๋ฃ์์ผฐ๋ค๊ฐ ๋ค์ ์คํ์ ํด์ค๋๋ค. )
Mixpanel์ด ์ ์ถ๊ฐ๊ฐ ๋์๋ค๋ฉด
@main ํ์ผ์์ Mixpanel์ ์ฐ๊ฒฐ์ํค๊ธฐ ์ํด, ํ ํฐ๊ฐ์ ํตํด์ ์ด๊ธฐํ ์์ผ ์ค๋๋ค.
( ** trackAutomaticEvents: true ์ด ๊ฐ์.. ์์ผ๋ฉด ์๋ฌ๊ฐ ๋ ์ ๋ฃ์ด๋จ์๋๋ฐ, ์ค์ ๋ก ์ ๊ฐ ํ๋ก์ ํธ์ ์ ์ฉํ ๋๋ ์์ด์ผ ํ๋๋ผ๊ณ ์ ? ์กฐ๊ธ ๋ ์ฐพ์๋ด์ผ ํ ๊ฒ ๊ฐ๊ธดํ๋ฐ.. ์์ด๋ ๋์ด๋ณด์ ๋๋ค ! )
๊ทธ๋ฆฌ๊ณ ๋ด๊ฐ ์ถ์ ํ ์ด๋ฒคํธ๊ฐ ์๋ ๋ทฐ ( ํ์ฌ ํฌ์คํ ์์ ContentView ) ์์, ์ด๋ฒคํธ๋ฅผ ์ถ์ ํ๋ ํจ์๋ฅผ ์์ฑํ๊ณ ์ ์ฉํด์ฃผ๋ฉด ๋ฉ๋๋ค.
import SwiftUI
import Mixpanel
struct ContentView: View {
var body: some View {
VStack(spacing: 30) {
Button {
trackButtonTapped1()
} label: {
Text("MixPanelTapped1")
.background(.blue)
.foregroundColor(.white)
}
Button {
trackButtonTapped2()
print("ButtonTapped")
} label: {
Text("MixPanelTapped2")
.background(.blue)
.foregroundColor(.white)
}
Button {
trackButtonTapped3()
print("ButtonTapped")
} label: {
Text("MixPanelTapped3")
.background(.blue)
.foregroundColor(.white)
}
}
.padding()
}
func trackButtonTapped1() {
Mixpanel.mainInstance().track(event: "Marker1")
Mixpanel.mainInstance().people.increment(property: "TappedMarker1", by: 1)
}
func trackButtonTapped2() {
Mixpanel.mainInstance().track(event: "Marker2")
Mixpanel.mainInstance().people.increment(property: "TappedMarker2", by: 1)
}
func trackButtonTapped3() {
Mixpanel.mainInstance().track(event: "Marker3")
Mixpanel.mainInstance().people.increment(property: "TappedMarker3", by: 1)
}
}
ํจ์๋ฅผ ๊ฐ๋จํ ์ค๋ช ํด์ฃผ์๋ฉด ..
โ Mixpanel.mainInstance().track(event: "Marker2")
๋ด๊ฐ Mixpanel ์ฌ์ดํธ์์ ์ถ์ ํ ์ด๋ฒคํธ๋ฅผ ์ ํด์ฃผ๋ ๊ฒ์ ๋๋ค.
โ
Mixpanel.mainInstance().people.increment(property: "TappedMarker2", by: 1)
๊ทธ๋ฆฌ๊ณ ์ถ์ ํ๋ ํด๋น ์ด๋ฒคํธ์ ํ๋กํผํฐ๋ ๋ฌด์์ด์๊ณ , ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ค ์์น๋ฅผ ๋ณํ์ํฌ๊ฑด์ง ?
by: 1 ์ด๋ผ ํจ์ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ํด๋น ํ๋กํผํฐ์ ์์น๋ฅผ 1์ฆ๊ฐ์ํค๊ฒ ๋ค๋ ๊ฒ์ ๋๋ค.
์ผ๋จ ๋ทฐ ์์ฒด๋ ๊ฐ๋จํ๊ฒ ์ด๋ ๊ฒ ๋ง๋ค์ด์คฌ์๊ณ ,,
์ด์ ์คํ์์ผ์ ๊ฐ ๋ฒํผ์ ๋๋ฌ๋ณด๋ฉด, ์ด๋ป๊ฒ ์ถ์ ๋๊ณ ๋ณด์ฌ์ง๋์ง ํ์ธํด๋ณผ๊น์ ?
์ ๊ทธ์ ์ !!!
์ ํ๋ฉด์ด ์๊น Mixpanel๋ง ์ธํ ํ ๋๋ Finish and Close๊ฐ ํ์ฑํ๊ฐ ์๋ ํ ๋ฐ,
์ค์ง์ ์ผ๋ก ์ถ์ ํ๋ ์ด๋ฒคํธ๊ฐ ์๊ณ , ํ๋ก์ ํธ์ ์ฐ๊ฒฐ๋์ด์์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐฉ๊ธ์ฒ๋ผ ๊ฐ๋ฐTool์์ ์ฐ๊ฒฐ์ํค๊ณ , ์คํ์ํค๋ฉด ๋ฐ๋ก Data detected๊ฐ ๋จ๋ฉด์ ๋ฐ๋๋๋ค.
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ผ๋, View Events๋ฅผ ๋๋ฌ์ ํ์ธํด๋ณผ๊น์ ?
( ํน์ ์ฌ์ดํธ ๋ด์ ์ผ์ชฝ ์๋จ Events๋ฅผ ๋๋ฌ์ ํ์ธํ ์๋ ์์ )
์ด๋ ๊ฒ ๋์ต๋๋ค !
์๊ฐ, device, city ๋ฑ๋ฑ ..
๊ทผ๋ฐ city๋ ์๊ฐ๋ณด๋ค ์ ํํ์ง ์๊ณ , ์๊ฐ์ด ์ข ์ง๋์ผ ์ ํํ ์ฒ๋ฆฌ๋๊ธด ํ๋ค๋๋ฐ ์์ง ํ์ธํด๋ณด์ง ๋ชปํ๋ค์ ใ ใ
๊ทธ๋ฆฌ๊ณ mixpanel ์ฐพ์๋ณผ๋ ๊ด๋ จ๋ ๋ ํผ๋ฐ์ค๋ค์ ๊ฐ์ด ์ฌ๋ ค๋ก๋๋ค !
https://mixpanel.mfitlab.com/blog/mixpanel-userflow-analysis-guide-advanced
[๋ฏน์คํจ๋ ์ฌ์ฉ๋ฒ] ์ฌ์ฉ์ ํ๋ ํจํด์ ๋ฏน์คํจ๋๋ก ๋ฐ๊ฒฌํ๊ณ ๋ถ์ํ๊ธฐ - ํ๋ก์ฐ ์ฐจํธ ํ์ฉ ์ฌํ -
์ด ๊ธ์ ์ฌ์ฉ์ ํ๋ ํจํด ๋ถ์์ ์ํ ๋ฏน์คํจ๋(Mixpanel)์ Flow ๋ฆฌํฌํธ๋ฅผ ํ์ฉ๋ฒ ์ฌํ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค.
mixpanel.mfitlab.com
https://flowkater.tumblr.com/post/131485056320/embed
Tumblr
flowkater.tumblr.com
'๐ iOS > APP ๋ฐฐํฌ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฑ์คํ ์ด ๋ฆฌ์ ] Performance - Accurate Metadata ๋ฆฌ์ ๋์ (0) | 2025.01.05 |
---|---|
[Xcode ์ ๋ก๋ ์๋ฌ] Invalid Bundle ( ํ๋ฉด ๋ฐฉํฅ ์ค์ ์ ) (0) | 2024.08.21 |
[Xcode ์ ๋ก๋ ์๋ฌ] Invalid App Store Icon. (0) | 2024.08.19 |
ENABLE_USER_SCRIPT_SANDBOXING ์๋ฌํด๊ฒฐ (0) | 2024.01.21 |
[iOS] ์ธ ๋ฒ์งธ ํ๋ก์ ํธ ( ๋ฏธ์ถ์ ) (1) | 2023.12.06 |