Deep_Dev
article thumbnail
[Xcode][SwiftUI] MixPanel๋กœ ์•ฑ ๋‚ด ์‚ฌ์šฉ์ž events ์ถ”์ ํ•˜๊ธฐ

๐Ÿ“š MixPanel ์‚ฌ์šฉhttps://docs.mixpanel.com/docs/what-is-mixpanel What is Mixpanel? - Mixpanel Docs docs.mixpanel.com  ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๊ฐ€ ๊ฑฐ์˜ ๋งˆ๊ฐ์ด ๋˜์–ด๊ฐ€๊ณ , ๋ฐฐํฌํ•˜๊ธฐ ์ „์ธ๋ฐ ์•ฑ ๋‚ด์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š”๋™์•ˆ์˜ Events๋ฅผ ์ถ”์ ํ•ด๋ณด๋ผ๋ผ๋Š” ์กฐ์–ธ์„ ์–ป์—ˆ๊ณ , ๊ทธ๊ฒƒ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด MixPanel ์ด๋ผ๋Š”๊ฒƒ์„ ์ถ”์ฒœ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ( Firebase๊ฐ™์€ ๊ฒƒ๋“ค๋„ ๋˜์ง€๋งŒ, ์ธ์‚ฌ์ดํŠธ๋กœ ํ†ต๊ณ„๋ฅผ ํ™•์ธํ•˜๋Š”๋ฐ์— ์žˆ์–ด์„œ MixPanel์ด ํŽธํ•˜๋‹ค๊ณ  ํ•˜๋„ค์š” ! )  ๊ทธ๋Ÿฐ๋ฐ, ์ •์ž‘ ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋ฉด MixPanel์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ๋งŽ์ด ์•ˆ๋‚˜์™”์Šต๋‹ˆ๋‹ค ! ๋”ฐ๋กœ ํ…Œ์ŠคํŠธ์šฉ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์‹œ๋„ํ–ˆ๊ณ , ์›ํ•˜๋Š”๋Œ€๋กœ ์„ฑ๊ณตํ•ด์„œ ๊ธฐ๋กํ•˜์—ฌ ๋‚จ๊ฒจ๋ด…๋‹ˆ๋‹ค.   ..

article thumbnail
[Xcode ์—…๋กœ๋“œ ์—๋Ÿฌ] Invalid Bundle ( ํ™”๋ฉด ๋ฐฉํ–ฅ ์„ค์ •์‹œ )

๐Ÿ“š Invalid Bundle( ํ™”๋ฉด ๋ฐฉํ–ฅ์ธ orientations ์„ค์ •์‹œ ๋งˆ์ฃผํ•  ์ˆ˜ ์žˆ๋Š” ์—๋Ÿฌ )   ์–ด์ œ iPadOS ์•ฑ์„ TestFlight์— ๋“ฑ๋กํ•˜๋‹ค๊ฐ€ ๋งŒ๋‚œ ์—๋Ÿฌ์ด๋‹ค. ํ™”๋ฉด์„ ๊ฐ€๋กœ๋ชจ๋“œ๋กœ ๊ณ ์ •์‹œํ‚ค๋Š๋ผ, ํ•ด๋‹น ์„ค์ • ํ›„ ๋‹ค์‹œ TestFlight์— ์˜ฌ๋ฆด๋•Œ ๋ฐœ๊ฒฌ๋œ ๊ฒƒ์ธ๋ฐ, ํ™”๋ฉด์„ ๊ฐ€๋กœ๋ชจ๋“œ, ์„ธ๋กœ๋ชจ๋“œ ์„ค์ •ํ•  ๋•Œ ๋ณดํ†ต PROJECT - TARGET - Build Setting์—์„œ์ด ์˜ต์…˜์„ ์„ค์ •ํ•ด์ค„ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ™”๋ฉด ๋ฐฉํ–ฅ์„ ์„ค์ •ํ•˜๊ณ , TestFlgith์„ ์˜ฌ๋ฆด๋•Œ Archive๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ๋‚˜๋ฉด ํ…Œํ”Œ์— ์˜ฌ๋ผ๊ฐ€์ง€์•Š๊ณ ERROR ITMS-90474: "Invalid Bundle. iPad Multitasking support requires these orientations: 'UIInterfaceOrientati..

article thumbnail
[SwiftUI] Invalid frame dimension
๐ŸŽ iOS/SwiftUI 2024. 8. 19. 20:25

๐Ÿ“š Error : Invalid frame dimension SwiftUI๋กœ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ํ”„๋ ˆ์ž„์„ ๊ฐ€๋กœ๋กœ ๊ฐ€๋“ ์ฑ„์šฐ๋ ค๊ณ  width์— .infinity๋ฅผ ์ ์šฉํ•˜์˜€๋”๋‹ˆ ๋ณด๋ผ์ƒ‰ ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์—ˆ๋‹ค.  ์ด๊ฒŒ ๋ญ๋ƒ๋ฉด .. ํ”„๋ ˆ์ž„์˜ ์น˜์ˆ˜๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค !   โœ… Solve1. width๊ฐ€ ์•„๋‹Œ maxWidth๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ( ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ๋ฐฉ๋ฒ• ) Text("Hi") .frame(maxWidth: .infinity) .frame(height: 100, alighment: .center)  2. UIScreen ์‚ฌ์ด์ฆˆ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.Text("Hi") .frame(width: UIScreen.main.bounds.width, height: 100, alighment: .center)

article thumbnail
[Xcode ์—…๋กœ๋“œ ์—๋Ÿฌ] Invalid App Store Icon.

App Icon์„ ์ถ”๊ฐ€ํ•˜๊ณ  Test Flight์„ ์˜ฌ๋ฆฌ๋ ค๊ณ , Archive ํ•  ๋•Œ ๋ฐœ๊ฒฌํ•œ ์—๋Ÿฌ์ด๋‹ค. ERROR : Invalid App Store Icon. The App Store Icon in the asset catalog in '์•ฑ์ด๋ฆ„' can't be tranparent nor contain an alpha chaennel.ํ•ด์„ : ์ž˜๋ชป๋œ ์•ฑ์Šคํ† ์–ด ์•„์ด์ฝ˜์ž…๋‹ˆ๋‹ค. '์•ฑ์ด๋ฆ„'์˜ ์ž์‚ฐ ์นดํƒˆ๋กœ๊ทธ์— ์žˆ๋Š” App Store ์•„์ด์ฝ˜์€ ํˆฌ๋ช…ํ•˜๊ฑฐ๋‚˜ ์•ŒํŒŒ ์ฑ„๋„์„ ํฌํ•จํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.  ์ฆ‰, Xcode์—์„œ 1024x1024์‚ฌ์ด์ฆˆ์˜ ์•ฑ ์•„์ด์ฝ˜ ์‚ฌ์ง„์„ ๋„ฃ์—ˆ์„ํ…๋ฐ, ํ•ด๋‹น ํŒŒ์ผ์— ํˆฌ๋ช…๋„๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.์ด ํˆฌ๋ช…๋„๋ฅผ ์—†์• ์ฃผ๊ณ  ๋‹ค์‹œ ์˜ฌ๋ ค์ฃผ๋ฉด ๋œ๋‹ค !   1. ์•„์ด์ฝ˜์œผ๋กœ ์ถ”๊ฐ€ํ•œ ์ด๋ฏธ์ง€ํŒŒ์ผ์„ ๋ฐ”ํƒ•ํ™”๋ฉด์— ๋ณต์‚ฌ๋ณธ์„ ํ•˜๋‚˜ ๋งŒ๋“ ๋‹ค...

[SwiftUI] Onboarding ํ™”๋ฉด ๋งŒ๋“ค๊ธฐ
๐ŸŽ iOS/SwiftUI 2024. 8. 10. 15:50

๐ŸŽ Onboarding ์ด๋ฒˆ MC3 ํ”„๋กœ์ ํŠธ์—์„œ ์˜จ๋ณด๋”ฉํ™”๋ฉด ๊ตฌํ˜„์„ ๋งก์•˜์–ด์„œ,์˜›๋‚ ์— ์˜จ๋ณด๋”ฉ์„ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ๊ทธ๋ƒฅ ๋˜๋Š”๋Œ€๋กœ ๋ง‰ ๊ตฌํ˜„์„ ํ•ด์„œ ์ •๋ฆฌ๊ฐ€ ์•ˆ๋˜์—ˆ์ง€๋งŒ์ด๋ฒˆ์— ๋‹ค์‹œํ•˜๋Š” ๊น€์— ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.  1. ์žฌ์‹œ์ž‘ ์—ฌ๋ถ€๋ฅผ ์ €์žฅํ•  ๋กœ์ปฌ ๋ฐ์ดํ„ฐ ๋ณ€์ˆ˜ + ์ตœ์ดˆ ์‹คํ–‰์‹œ ์˜จ๋ณด๋”ฉ ํ™”๋ฉด ๋„์šฐ๊ฒŒ ํ•˜๋Š” ์ž‘์—…์•ฑ์ด ์žฌ์‹œ์ž‘ ์—ฌ๋ถ€๋ฅผ ๊ธฐ์–ตํ•˜๊ธฐ ์œ„ํ•ด์„ , ๊ธฐ๊ธฐ์— ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.@AppStorage๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.์ตœ์ดˆ ๊ตฌ๋™์‹œ์—๋งŒ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ๊ฐ’์ด true์ด๋ฏ€๋กœ ์˜จ๋ณด๋”ฉํ™”๋ฉด์ด .fullScreen์œผ๋กœ ๋„์›Œ์ง€๊ณ , ์ดํ›„์— false๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด์„œ์žฌ์‹คํ–‰์‹œ์—๋„ ๋œจ์ง€ ์•Š๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.import SwiftUIstruct ContentView: View { // ์˜จ๋ณด๋”ฉ ํ™”๋ฉด์„ ์•ฑ ์ตœ์ดˆ ์‹คํ–‰๋•Œ ํ•œ๋ฒˆ๋งŒ ๋„์šฐ๋„๋ก ํ•˜๋Š” ๋กœ์ปฌ ๋ณ€์ˆ˜ @AppStorage("..

article thumbnail
[WatchOS][SwiftUI] NavigationLink - PlainButtonStyle()
๐ŸŽ iOS/WatchOS 2024. 7. 7. 16:28

๐Ÿ“š WatchOS - SwiftUINavigationLink - PlainButtonStyle๋กœ ๋ฒ„ํŠผ์˜ ์‹œ๊ฐ์  ์š”์†Œ ์ ์šฉ X  PlainButtonStyle()๋ชจ๋“  OS์—์„œ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ ์Šคํƒ€์ผ๋กœ, ์œ ํœด ์ƒํƒœ(IDLE)์—์„œ๋Š” ๋ฒ„ํŠผ์˜ ์ฝ˜ํ…์ธ ์— ์–ด๋– ํ•œ ์‹œ์ž‘์  ์š”์†Œ๋„ ์ ์šฉํ•˜์ง€ ์•Š์Œ  WatchOS๋ฅผ ๊ฐœ๋ฐœํ•˜๋˜์ค‘VGrid์•ˆ์— ForEach๋ฌธ์œผ๋กœ ๋ฐ์ดํ„ฐ๋“ค์˜ List๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ ,๊ฐ Cell๋“ค์„ NavigationLink๋กœ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ์ž‘์—…์„ ํ–ˆ๋‹ค. ๋จผ์ € CellView๋ฅผ ๊ทธ๋ฆฌ๋Š” ์ž‘์—…์„ ๋จผ์ € ํ–ˆ๊ณ , ์ดํ›„ NavigationLink๋กœ DetailView๋กœ ๋„˜์–ด๊ฐ€๊ฒŒ ์ˆ˜์ •ํ•˜์˜€๋‹ค.import SwiftUIstruct WatchMarkerListView: View { let tempData = [..

article thumbnail
[SwiftUI] Custom Alert View
๐ŸŽ iOS/SwiftUI 2024. 6. 16. 21:37

โœ… Custom Alert   ํ•ด์ปคํ†ค์„ ํ•  ๋•Œ,์ด๋Ÿฐ ๋ทฐ๋ฅผ ๊ตฌํ˜„ํ•ด์•ผํ–ˆ์—ˆ๋‹ค. ์ด๊ฒƒ์€ ๊ธฐ์กด์˜ Alert๋ฅผ Customํ•˜๋ฉด ๋‚˜์˜ค๋Š”๊ฒƒ์ด๋‹ค.  import SwiftUIstruct ContentView: View { @State private var isAlertPresented = false var body: some View { ZStack { VStack { Button("Show Custom Alert") { isAlertPresented.toggle() } .padding() ..

article thumbnail
[SwiftUI] View -> Flip ๊ธฐ๋Šฅ
๐ŸŽ iOS/SwiftUI 2024. 6. 16. 20:28

โœ… ๋ทฐ๋ฅผ ์ „ํ™˜์‹œํ‚ค๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์ธ Flip ๊ธฐ๋Šฅ   1. MainViewimport SwiftUIstruct ContentView: View { @State var isFlipped = false var body: some View { VStack(spacing: 0) { ZStack { if isFlipped { FrontView() } else { BackView() } } .scaleEffect(x: isFlipped ? -1 : 1) .f..