Sharing Data với UIActivityViewController trên iOS
Bài đăng này đã không được cập nhật trong 5 năm
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é:
- A video on the same topic from WWDC17: Extend Your App’s Presence With Sharing
- Another tutorial that leverages UIActivityViewController: Requesting App Ratings and Reviews Tutorial for iOS.
- If you’re interested to know how to make your app show up as an option within UIActivityViewController, you may want to watch iOS App Extensions video tutorial series.
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