Swift/학습

[Swift] UIActivityController에 대하여 알아보자!

언클린 2020. 6. 8. 15:01
728x90

이번 글에서 알아보고자 하는 것은 iOS 어플에서 공유 부분을 만들 때 사용하는 UIActivityController입니다. 

보통 크게 공유하는 것으로는 

  • 1. 이미지
  • 2. URL
  • 3. 텍스트
  • 4. 위의 혼합

등이 있습니다. 어떤 식을 사용하는 지 또 어떠한 기능을 제공하는지 간단히 알아보겠습니다.


1. 생성

생성에는 공유할 아이템(이미지, 링크, 텍스트 등) 과 커스텀 지원의 파라미터가 존재합니다.

이 두 파라미터는 nil을 사용하실 수 있습니다.

let items: Array<Any> = [공유할 아이템]
let activities: Array<UIActivity> = [커스텀 액티비티]

let activityVC: UIActivityViewController = UIActivityViewController(activityItems: items, applicationActivities: activities)

2. 제외 설정

기본 생성이 완료가 되셨다면 공유 항목에서 필요 없는 것을 제외시킬 수가 있습니다.

(보통은 공유 아이템에 따라서 자동으로 정해지는 항목도 있습니다. 예를 들어 공유 액티비티가 이미지를 지원하지 않는다면 자동으로 그 항목은 제외되어집니다.)

무의미한 항목을 제외시키고 싶을 때 사용합니다.

필수 과정은 아니기 때문에 생략해도 됩니다.

항목

let excludedTypes: Array<UIActivity.ActivityType> = [
            .addToReadingList,
            .airDrop,
            .assignToContact,
            .copyToPasteboard,
            .mail,
            .message,
            .openInIBooks,
            .postToFacebook,
            .postToFlickr,
            .postToTencentWeibo,
            .postToTwitter,
            .postToVimeo,
            .postToWeibo,
            .print,
            .saveToCameraRoll,
            .markupAsPDF] // 해당 배열에 제외시키고 싶은 것을 지정한다.
        
 activityVC.excludedActivityTypes = excludedTypes

3. 실행

이제 마무리 단계입니다. 

ActivityView가 실행된 후 처리를 담당합니다. 

activityVC.completionWithItemsHandler = { (activityType: UIActivity.ActivityType?, completed: Bool, returnedItems: [Any]?, activityError: Error?) in
	guard completed else { return }
    // 처리
}

이 단계도 필수는 아니기 때문에 생략 가능합니다.

 

각 단계의 설정이 완료되셨다면 ActivityView를 화면에 띄우기 위하여 present를 실행합니다.

(UIActivityViewController는 UIViewController를 계승합니다.)

self.present(activityVC, animated: true, completion: nil)

4. 마무리

이번 글에서는 공유 기능을 담당하는 UIActivityViewController에 대하여 알아보았습니다. 

궁금하신 부분이나 지적사항이 있으신 분은 댓글에 부탁드립니다.

많은 도움이 되었으면 좋겠습니다.

감사합니다.


환경 

Xcode 11.3.1

Swift 5

 

 

 

 

728x90