Skip to content

Instantly share code, notes, and snippets.

@ryanisnhp
Created January 16, 2020 17:01
Show Gist options
  • Select an option

  • Save ryanisnhp/82a38b15d4912fbb650eb7d563b317f8 to your computer and use it in GitHub Desktop.

Select an option

Save ryanisnhp/82a38b15d4912fbb650eb7d563b317f8 to your computer and use it in GitHub Desktop.
import UIKit
import LinkPresentation
class ViewController: UIViewController {
@IBOutlet weak var richView: UIView!
private lazy var linkView = LPLinkView()
private var metaData: LPLinkMetadata = LPLinkMetadata() {
didSet {
DispatchQueue.main.async {
self.addRichLinkToView(view: self.richView, metadata: self.metaData)
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://www.apple.com/airpods-pro/")!
fetchURLPreview(url: url)
//Open this code below to custom meta data
//let metadata = fetchPreviewManually(title: "[Custom Link] Apple AirPods Pro", originalURL: url, fileName: "airpods_pro", fileType: "jpg")
//self.metaData = metadata!
}
func addRichLinkToView(view: UIView, metadata: LPLinkMetadata) {
linkView = LPLinkView(metadata: metadata)
view.addSubview(linkView)
linkView.frame = view.bounds
}
@available(iOS 13.0, *)
func fetchPreviewManually(title: String, originalURL: URL, fileName: String, fileType: String) -> LPLinkMetadata? {
let metaData = LPLinkMetadata()
metaData.title = title
metaData.originalURL = originalURL
let path = Bundle.main.path(forResource: fileName, ofType: fileType)
metaData.imageProvider = NSItemProvider(contentsOf: URL(fileURLWithPath: path ?? ""))
return metaData
}
@available(iOS 13.0, *)
func fetchURLPreview(url: URL) {
let metadataProvider = LPMetadataProvider()
metadataProvider.startFetchingMetadata(for: url) { (metadata, error) in
guard let data = metadata, error == nil else {
return
}
self.metaData = data
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment