[swift] 파일 앱 간 공유하기

iOS 앱 개발에서 파일을 공유하는 기능은 매우 중요합니다. 사용자들은 다른 앱과 데이터를 공유할 수 있는 기능을 원하며, 파일 앱 간의 공유는 이러한 요구를 충족시키는 방법 중 하나입니다.

이번 튜토리얼에서는 Swift를 사용하여 파일 앱 간에 파일을 공유하는 방법을 알아보겠습니다.

1. 파일 공유를 위한 확장자 등록

먼저, 파일을 다른 앱과 공유하기 위해서는 확장자를 등록해야 합니다. 이를 통해 운영체제는 해당 파일을 다른 앱들과 연결시킬 수 있습니다.

Info.plist 파일에서 CFBundleDocumentTypes 키를 추가하고, 각 파일 유형에 대한 특정 확장자와 유형을 지정합니다. 예를 들어, .txt 파일을 공유하려면 다음과 같은 설정을 추가합니다.

<key>CFBundleDocumentTypes</key>
<array>
    <dict>
        <key>CFBundleTypeName</key>
        <string>Plain Text</string>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>LSHandlerRank</key>
        <string>Owner</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.plain-text</string>
        </array>
    </dict>
</array>

위의 예제에서는 public.plain-text와 같은 UTI(Universal Type Identifier)를 사용하여 파일 형식을 지정합니다.

2. 공유 기능 구현하기

파일을 공유하기 위해서는 UIDocumentInteractionController 클래스를 사용할 수 있습니다. 이 클래스는 파일을 다른 앱과 공유하기 위한 인터페이스를 제공합니다.

다음은 파일을 공유하기 위해 UIDocumentInteractionController를 사용하는 간단한 예제입니다.

import UIKit

class ViewController: UIViewController, UIDocumentInteractionControllerDelegate {

    var documentController: UIDocumentInteractionController!

    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 공유할 파일 경로
        let fileURL = URL(fileURLWithPath: "path_to_file")
        
        // UIDocumentInteractionController 인스턴스 생성
        documentController = UIDocumentInteractionController(url: fileURL)
        documentController.delegate = self
    }
    
    @IBAction func shareButtonTapped(_ sender: UIButton) {
        // 파일을 공유할 때 사용할 메뉴를 표시
        documentController.presentOptionsMenu(from: sender.frame, in: self.view, animated: true)
    }
    
    // UIDocumentInteractionControllerDelegate 메서드 구현
    func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
        return self
    }
}

위의 예제에서는 presentOptionsMenu 메서드를 사용하여 파일 공유 옵션 메뉴를 표시합니다. 이 메서드는 사용자에게 파일을 공유할 앱을 선택할 수 있는 메뉴를 제공합니다.

documentInteractionControllerViewControllerForPreview 메서드는 파일을 미리 볼 때 미리 보기 뷰 컨트롤러를 반환합니다.

3. 실행 및 테스트

위의 코드를 실행하고 파일 공유 버튼을 탭하여 파일을 공유해 보세요. 파일 공유 메뉴가 열리고, 사용자가 앱을 선택하여 파일을 공유할 수 있습니다.

참고 자료