iOS 앱에서 UIActivityViewController 구현 방법: Swift로 Share Sheet 만들기

작성일 :

iOS 앱에서 UIActivityViewController 구현 방법: Swift로 Share Sheet 만들기

iOS 앱에서 데이터를 공유하는 기능은 사용자 경험을 크게 향상시킬 수 있습니다. 이를 쉽게 구현할 수 있는 방법 중 하나가 UIActivityViewController를 이용한 Share Sheet입니다. 이 글에서는 Swift를 사용하여 UIActivityViewController를 통해 Share Sheet를 만드는 방법을 단계별로 알아보겠습니다.

UIActivityViewController 소개

UIActivityViewController는 iOS에서 기본적으로 제공하는 공유 시트로, 다양한 활동(액티비티)에 콘텐츠를 제공할 수 있습니다. 예를 들어, 텍스트, URL, 이미지 등을 이메일, 메시지, 소셜 미디어 등으로 쉽게 공유할 수 있습니다. UIActivityViewController는 사용하기 쉽고 직관적인 사용자 인터페이스를 제공합니다.

UIActivityViewController 설정하기

먼저, Share Sheet를 구현하기 위해서 UIActivityViewController를 생성하고 설정하는 방법을 알아보겠습니다. 다음은 Swift 코드로 간단한 예제를 작성한 것입니다.

swift
import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func shareButtonTapped(_ sender: UIButton) {
        let textToShare = "Hello, World!"
        let items = [textToShare]
        let activityViewController = UIActivityViewController(activityItems: items, applicationActivities: nil)
        present(activityViewController, animated: true, completion: nil)
    }
}

위 코드에서는 공유할 텍스트를 배열로 묶어 activityItems로 전달하고, UIActivityViewController를 생성합니다. 이를 뷰 컨트롤러에서 프레젠트하여 Share Sheet를 보여줍니다.

다양한 사용 사례

UIActivityViewController는 텍스트뿐만 아니라 URL, 이미지 등을 공유할 수 있습니다. 각기 다른 유형의 예제를 살펴보겠습니다.

텍스트 공유하기

텍스트를 공유하는 것은 간단합니다. 위 예제에서와 같이 문자열을 배열로 묶어 전달하면 됩니다.

swift
let textToShare = "This is a sample text."
let activityViewController = UIActivityViewController(activityItems: [textToShare], applicationActivities: nil)

URL 공유하기

URL을 공유할 때는 URL 객체를 생성하여 배열에 추가합니다.

swift
if let url = URL(string: "https://www.example.com") {
    let activityViewController = UIActivityViewController(activityItems: [url], applicationActivities: nil)
}

이미지 공유하기

이미지는 UIImage 객체를 사용하여 공유할 수 있습니다.

swift
if let image = UIImage(named: "exampleImage") {
    let activityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil)
}

텍스트, URL, 이미지 함께 공유하기

여러 개의 데이터를 함께 공유할 수도 있습니다. 배열에 다양한 객체를 추가하면 됩니다.

swift
let textToShare = "Check this out!"
let urlToShare = URL(string: "https://www.example.com")
let imageToShare = UIImage(named: "exampleImage")

let itemsToShare = [textToShare, urlToShare as Any, imageToShare as Any]
let activityViewController = UIActivityViewController(activityItems: itemsToShare, applicationActivities: nil)
present(activityViewController, animated: true, completion: nil)

커스터마이징

UIActivityViewController는 여러 가지 커스터마이징이 가능합니다. 예를 들어, 특정 앱으로의 공유를 제외하거나, 컴플리선 핸들러를 설정할 수 있습니다.

특정 앱 제외하기

excludedActivityTypes 속성을 사용하여 특정 활동 유형을 제외할 수 있습니다.

swift
let activityViewController = UIActivityViewController(activityItems: [textToShare], applicationActivities: nil)
activityViewController.excludedActivityTypes = [.postToFacebook, .postToTwitter]

이렇게 하면 Facebook과 Twitter로의 공유가 제외됩니다.

완료 핸들러 설정하기

공유 동작이 완료된 후에 특정 작업을 수행하려면 completionWithItemsHandler를 설정할 수 있습니다.

swift
activityViewController.completionWithItemsHandler = { activity, completed, items, error in
    if completed {
        print("Sharing successful!")
    } else {
        print("Sharing canceled.")
    }
}

결론

이 글에서는 iOS 앱에서 UIActivityViewController를 사용하여 Share Sheet를 구현하는 방법을 살펴보았습니다. 텍스트, URL, 이미지 등 다양한 콘텐츠를 손쉽게 공유할 수 있으며, 커스터마이징을 통해 사용자 경험을 더욱 향상시킬 수 있습니다. UIActivityViewController를 잘 활용하면 앱의 경쟁력을 높일 수 있을 것입니다.