티스토리 뷰
내용
- 인앱에서 웹 연결
- 화면전환 다루기
🔌 SFSafariViewController
웹 브라우징을 위한 visible standard interface 를 제공하는 객체
Overview
Reader, AutoFill, Fraudulent Website Detection 및 컨텐츠 차단과 같은 Safari 기능이 포함되어있습니다. iOS 9 부터는 쿠키 및 기타 웹사이트 데이터를 사파리와 공유합니다. SFSafariViewController 와의 활동과 상호작용은 앱에 보여지지 않습니다. (앱에서 AutoFill data, browsing history, or website data 는 접근할 수 없습니다.) 그래서 앱과 Safari 간에 데이터를 보호할 필요가 없습니다. 원한다면 iOS 11 이상에서 ASWebAuthenticationSession 를 사용하세요.
⚠️ Important
App Store Review Guidelines 에 따르면 이 view controller 는 정보를 유저에게 시각적으로 표시하는데 사용해야합니다. 다른 뷰 혹은 레이어에 의해서 숨겨지거나 가려져서는 안됩니다. 또한 앱은 사용자 동의 없이 SFSafariViewController 를 사용하여 사용자를 추적할 수 없습니다.
UI features 는 다음이 포함됩니다.
- A read-only address field with a security indicator and a Reader button
- An Action button that invokes an activity view controller offering custom services from your app, and activities, such as messaging, from the system and other extensions
- A Done button, back and forward navigation buttons, and a button to open the page directly in Safari
- On devices that support 3D Touch, automatic Peek and Pop for links and detected data
Choosing the Best Web Viewing Class
- 앱을 통해서 웹사이트를 볼 수 있다면 SFSafariViewController 클래스를 사용하세요.
- 앱이 웹 컨텐츠 표시를 커스텀하거나 상호작용 또는 제어하는 경우는 WKWebView 를 사용하세요.
SFSafariViewController 를 적용하고 사용자가 링크를 눌러 이동하면 앱 내에서 웹 컨텐츠를 볼 수 있습니다. Done
을 탭하면 사용자는 웹 컨텐츠가 로드되기 전 표시되었던 뷰 컨트롤러로 돌아갑니다.
기본적으로 다음과 같이 push 로 화면전환이 이루어집니다.
그런데 해당 화면전환을 변경하고싶다면 UIViewControllerTransitioningDelegate
프로토콜을 채택해서 화면전환을 해당 뷰컨트롤러에서 담당한다고 명시하면됩니다!
guard let url = URL(string: "https://www.naver.com") else { return }
let safariVC = SFSafariViewController(url: url)
// 🔥 delegate 지정 및 presentation style 설정.
safariVC.transitioningDelegate = self
safariVC.modalPresentationStyle = .pageSheet
present(safariVC, animated: true, completion: nil)
// 🔥 UIViewControllerTransitioningDelegate 채택.
extension MypageVC: UIViewControllerTransitioningDelegate { }
결과
출처:
'iOS' 카테고리의 다른 글
iOS) 이미지 리사이징 (0) | 2022.04.10 |
---|---|
iOS) UITableView 에서 헤더 고정 해제하기 (0) | 2022.04.02 |
iOS) 인앱에서 mail 보내기 - MFMailComposeViewController (0) | 2022.03.16 |
Swift) Swift API Design Guidelines (0) | 2022.03.13 |
iOS) Diffable Data Source 알아보기 (2) | 2022.02.26 |
- 2022 KAKAO TECH INTERNSHIP
- github
- Firebase
- Algorithm
- OpenSourceLibrary
- Notification
- WidgetKit
- RxCocoa
- Widget
- Objective-C
- containerBackground
- async/await
- MOYA
- YPImagePicker
- WWDC22
- UserDefaults
- Swift
- IOS
- MVVM
- rxswift
- SwiftUI
- CloneCoding
- urlsession
- watchOS
- Protocol
- 서버통신
- APNS
- projectsetting
- configurable widget
- WWDC
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday