0

Sharing Data với UIActivityViewController trên iOS

1. UIActivityViewController là gì?

A view controller that you use to offer standard services from your app.

=> là 1 view controller mà bạn có thể sử dụng để cung cấp các dịch vụ tiêu chuẩn từ ứng dụng của bạn.

iOS có cung cấp 1 số dịch vụ tiêu chuẩn như: copy pastedboard, posting content lên social, gửi email, SMS, ... Ngoài ra các ứng dụng cũng có thể custom lại các services đó. Ứng dụng của bạn có thể thay đổi cài đặt, presenting, dismissing view controller này.

Nhưng trong bài viết này mình sẽ chỉ đề cập đến dịch vụ chia sẽ của UIActivityViewController thôi nhé.

(ảnh lấy từ: https://medium.com/ios-os-x-development/extending-uiactivityviewcontroller-f24410308699)

2. Cách sử dụng

2.1. Share Text

Để chia sẻ text bạn có thể code theo ví dụ sau:

    func shareOnlyText() {
        let text = "This is shared text"
        let textShare = [text]
        let activityViewController = UIActivityViewController(activityItems: textShare , applicationActivities: nil)
        activityViewController.popoverPresentationController?.sourceView = self.view
        self.present(activityViewController, animated: true, completion: nil)
    }

Kết quả thu được: UIActivityViewController sẽ tự tìm những ứng dụng trong device có thể sử dụng để chia sẻ text cho người dùng chọn:

2.2. Share Image

Để chia sẻ ảnh bạn có thể code theo ví dụ sau:

func shareOnlyImage() {
        let image = UIImage(named: "image_name")!
        let imageShare = [image]
        let activityViewController = UIActivityViewController(activityItems: imageShare , applicationActivities: nil)
        activityViewController.popoverPresentationController?.sourceView = self.view
        self.present(activityViewController, animated: true, completion: nil)
    }

Kết quả thu được: UIActivityViewController sẽ tự tìm những ứng dụng trong device có thể sử dụng để chia sẻ ảnh cho người dùng chọn:

2.3. Share File

Tương tự như trên, bạn có thể thêm File vào activityItems

func shareFile() {
        let fileManager = FileManager.default
        let docsurl = try! fileManager.url(for:.documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
        let documentUrl = docsurl.appendingPathComponent("yourfile.pdf")
        if fileManager.fileExists(atPath: documentUrl.path), let pdfData = try? Data(contentsOf: documentUrl) {
            let activityViewController = UIActivityViewController(activityItems: [pdfData], applicationActivities: nil)
            self.present(activityViewController, animated: true) {() -> Void in }
        }
    }

2.4. Share All

Bạn có thể chia sẻ chung cho nhiều loại media bằng cách truyền tất cả vào mảng cho activityItems

func shareAll() {
        let text = "This is shared text"
        let image = UIImage(named: "image_name")!
        let myWebsite = URL(string:"https://fb.com")!
        let shareAll = [text, image, myWebsite] as [Any]
        let activityViewController = UIActivityViewController(activityItems: shareAll, applicationActivities: nil)
        activityViewController.popoverPresentationController?.sourceView = self.view
        self.present(activityViewController, animated: true, completion: nil)
    }

Kết quả thu được:

Ngoài ra bạn có thể tham khảo những cách khác để chia sẽ data trong app nhé:

Kết luận

Thông qua bài viết mong rằng bạn có thể thêm chức năng chia sẻ vào app để nâng cao trải nghiệm của người dùng nhé.

Tài liệu tham khảo


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí