- Today
- Yesterday
- Total
메이쁘
[Swift] iOS의 Native 기능인 공유하기(Share) 를 구현해보자! 본문
안녕하세요.
*** 버전 체크 하고 진행하세요!
- Swift : 5
- XCode : 11.5
- iOS : min 9.0
주로 특정 파일, URL, TEXT 를 카카오톡, SNS, 메세지 등 다른 앱에다 공유하고자 할 때 사용됩니다.
그럼 공유하기 의 동작 원리를 조금 자세히 파악해보겠습니다.
타 블로그(출처 맨 하단) 게시글을 참고하자면,
공유하기 시 타 앱에 직접 접근하는 것이 아닌 앱 패키지 내에 존재하는 Extension 에 접근하여 전달한다고 합니다.
*** Extension : 애플리케이션의 특정 기능을 다른 앱에서 사용할 수 있게 하는 기능
이러한 익스텐션(Extension) 은 크게 Action, Share 이 있고, 그 외에 더 있습니다!
그래서 앱 설치 시 Extension 도 만들어지고, 삭제 시 같이 지워집니다.
여하튼, 공유하기를 통해 타 앱을 클릭할 경우
해당 앱이 실행되는 것이 아니라, 앱의 Extension이 실행되어 공유하는 작업을 진행하게 되는데요.
진행이 완료된 경우 Extension이 종료되면서 바로 앱 또한 종료됩니다!!
*** 공유하기는 앱 <-> 앱 이 아닌, 앱 <-> 앱의 익스텐션 입니다.
특정 앱에 공유를 하기 위해서는 그 앱이 App Groups 에 같이 포함되어있고, 그 앱이 Extension을 가지고 있는 경우에 가능합니다.
말이 길어졌네요.
그럼, 위에서 설명드린 Native 기능 중 하나인 공유하기(Share) 기능을 구현해보겠습니다.
// 공유하기 기능
@IBAction func shareInfo(_ sender: Any) {
var objectsToShare = [String]()
if let text = textField.text {
objectsToShare.append(text)
print("[INFO] textField's Text : ", text)
}
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityVC.popoverPresentationController?.sourceView = self.view
// 공유하기 기능 중 제외할 기능이 있을 때 사용
// activityVC.excludedActivityTypes = [UIActivityType.airDrop, UIActivityType.addToReadingList]
self.present(activityVC, animated: true, completion: nil)
}
*** 해당 함수는 @IBAction 함수로, 특정 버튼을 클릭했을 때 발생하는 함수입니다. 유의해주세요!
- TextField 에 입력된 값을 가져와 공유하는 기능입니다.
- ViewController 에서 진행하였습니다. (self : ViewController)
- 주석에도 적어놨듯이, 공유하기 기능 중 제외할 기능이 있으면 UIActivityViewController.excludedActivityTypes = [] 를 사용하시면 됩니다.
- 마지막은 present 함수를 통해 화면에 출력합니다.
- UIActivityViewController의 인자 중 activityItems 의 값으로 공유하고자 하는 데이터를 넣으면 됩니다.
궁금한 사항 또는 질문이 있으면 댓글 부탁드립니다.
감사합니다!
참고 사이트
https://g-y-e-o-m.tistory.com/91
'Technology > iOS - Xcode' 카테고리의 다른 글
[Swift] iOS의 Native 기능인 Dialog (AlertDialog, ActionSheetDialog) 를 구현해보자!! (0) | 2020.07.11 |
---|