반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- nestjs
- graphql
- Bug
- init
- vim
- init?
- @Binding
- Operater
- ios14
- dismiss
- operator
- @Environment
- IOS
- typeorm
- swift6
- URL(string:)
- SwiftUI
- SWIFT
- Xcode
- Creating Operators
- RxCocoa
- @State
- NullObject
- subject
- nonisolated
- Operators
- RxSwift
- NavigationLink
- RFC1738/1808
- @EnvironmentObject
Archives
- Today
- Total
Tunko Development Diary
[iOS14][SwfitUI] SwiftUI2 life cycle 에서 딥링크 처리 본문
기존 Appdelegate를 사용할 땐 application(_:open:options:) 메서드를 통하여 URL를 라우팅해야 했지만 완전 다른 방식으로 바뀌었습니다.
import SwiftUI
@main
struct TestApp: App {
@Environment(\.scenePhase) var scenePhase
var body: some Scene {
WindowGroup {
ContentView()
.onOpenURL { url in
print("Received URL: \(url)")
}
}
}
}
}
위 코드를 보면 앱에 최상위 Scene에 url을 수신 할 수 있습니다.
변경된 방식의 장점은 앱 전체에 여러 url 핸들링을 적용할 수 있습니다.
즉 각 화면에서 필요한 딥링크를 개별적으로 선별해 화면별로 적용 할 수 있게 됩니다.
통합 관리하던 방식보다 필요한 화면에서 필요한 딥링크정보를 받아 처리할 수 있게 됩니다.
그럼 한번 해보자!
우선 화면별로 받을 수 있도록 SampleView1 이라는 SwiftUI View 를 생성했습니다.
var body: some Scene {
WindowGroup {
ContentView()
.onOpenURL { url in
if "\(url)".contains("ContentView") {
print("SempleView1 Received URL: \(url)")
}
}
SempleView1()
.onOpenURL { url in
if "\(url)".contains("SempleView1") {
print("SempleView1 Received URL: \(url)")
}
}
}
}
}
- 예제 프로젝트에 URL Schemes을 설정해줍니다.
- 앱을 시뮬레이터로 실행시킵니다.
- 터미널을 실행합니다.
-
xcrun simctl openurl booted tunkotest://ContentView
- xcode에서 콘솔 로그를 확인
- ContentView Received URL: tunkotest://ContentView 출력을 확인 할 수 있습니다.
-
xcrun simctl openurl booted tunkotest://SempleView1
- SempleView1 Received URL: tunkotest://SempleView1 출력을 확인 할 수 있습니다.
이상 iOS14에서 적용된 SwiftUI life cycle에서의 딥링크 처리 방법에 대해 정리해보았습니다.
반응형
'Development > iOS 개발' 카테고리의 다른 글
[iOS][SwiftUI] VStack, HStack, ZStack 정리 (0) | 2021.02.15 |
---|---|
[iOS][SwfitUI] SwiftUI life cycle에서 AppDelegate사용하기 (0) | 2021.02.14 |
[iOS14][SwfitUI] SwiftUI2 App life cycle 정리 (0) | 2021.02.14 |
[iOS][swiftUI] iOS13에서 분할된 AppDelegate와 추가된SceneDelegate이해하기 (0) | 2021.02.13 |
[iOS][swift]NavigattionBar 하단 라인 지우기 (0) | 2021.02.13 |
Comments