티스토리 뷰

2022-04-13 Xcode 13.3 기준

URL Scheme 추가하기

프로젝트의 Info 수정하기

프로젝트를 생성하면 기존의 Info.plist가 기본적으로 표시되진 않는다. 이제 Xcode 프로젝트 파일에 일부 통합되어 관리된다.

Xcode 프로젝트 > Targets (대상 앱) > Info

Group 2

Info 탭에서 URL Types를 하나 추가하게 되면 Info.plist 파일이 생성되는 모습을 볼 수 있다. URL Schemes에 원하는 Scheme을 입력해준다. 본문에선 마그넷 URI를 앱으로 연결하기 위해 magnet을 입력했다.

URL 핸들링하기

기존에는 UIApplicationDelegate가 갖고 있던 application(_:open:options:) 델리게이트 메소드를 iOS 14+의 SwiftUI에선 onOpenURL(perform:)로 대체 가능하게 되었다.

@main
struct SwiftUIPlaygroundApp: App {
    @State private var receivedValue = ""

    var body: some Scene {
        WindowGroup {
            ContentView(receivedValue: $receivedValue)
                .onOpenURL { url in
                    receivedValue = url.absoluteString
                }
        }
    }
}

URL에 대한 동작을 추가하려면 App 파일에서 호출하는 뷰에 .onOpenURL 수정자를 추가해주면 된다. 본문에선 받은 값을 뷰에 텍스트로 표시할 것이다.

struct ContentView: View {
    @Binding var receivedValue: String

    var body: some View {
        Text("Received URL or File: \(receivedValue)")
    }
}

Simulator Screen Recording - iPhone 13 Pro - 2022-04-13 at 10.43.32

파일 확장자 연결하기

Group 3

Document Types와 Exported Type Identifiers에 각각 항목을 추가하고 Exported Type Identifiers에서 Extensions에 원하는 확장자를 입력한다. Conforms To에는 public.data를 입력해준다.

그리고 Document Types와 Exported Type Identifiers를 연결해주어야 하는데 Exported Type Identifiers의 Identifier와 Document Types의 Type을 같은 고유한 값으로 설정해주면 된다.

.onOpenURL { url in
    if url.scheme == "file" {
        receivedValue = url.lastPathComponent
    } else {
        receivedValue = url.absoluteString
    }
}

파일의 경우 file Scheme을 갖게 되는데 .onOpenURL의 핸들러에 Scheme이 file인 경우 파일에 대한 처리를 해주면 된다. 위 코드에선 파일인 경우에 파일명만 표시하도록 할 것이다.

Simulator Screen Recording - iPhone 13 Pro - 2022-04-13 at 11.05.19

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/04   »
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
글 보관함