iOS) 위젯으로 앱의 특정 뷰로 이동(widgetURL)
👉 위젯을 통해 앱의 특정 뷰로 이동
- QR Code 위젯을 선택하면 아래와 같이 화면전환이 적용된 QR Code 인식 뷰로 이동하도록 하겠습니다.
👉 [widgetURL(:)](https://developer.apple.com/documentation/swiftui/view/widgeturl(:))
위젯을 클릭했을 때 containing app 에서 열릴 URL 을 설정합니다.
Overview
widgetURL modifier 는 view hierarchy 에서 하나만 지원합니다. 여러 뷰에 widgetURL 이 있는 경우 동작이 정의되지 않습니다.
struct QRCodeEnytryView : View {
var entry: QRCodeProvider.Entry
var body: some View {
Image("widgetQr")
.resizable()
.scaledToFill()
// ✅
.widgetURL(URL(string: "openQRCode"))
}
}
👉 scene(_:openURLContexts:)
Asks the delegate to open one or more URLs.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
let qrcodeURL: String = "openQRCode"
guard let url = URLContexts.first?.url,
let urlComponents = URLComponents(url: url, resolvingAgainstBaseURL: true) else { return }
if qrcodeURL == urlComponents.path {
guard let nextViewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "NextViewController") as? NextViewController else { return }
window?.rootViewController?.present(nextViewController, animated: true, completion: nil)
}
}
widgetURL 로 설정한 URL 이 들어오게 되면 containing app 의 특정 뷰로 화면전환하도록 하였습니다.