Skip to content

Instantly share code, notes, and snippets.

View ryanisnhp's full-sized avatar

RyanisNHP ryanisnhp

View GitHub Profile
@ryanisnhp
ryanisnhp / fetchURLPreview.swift
Last active January 15, 2020 17:51
Fetch metadata
import LinkPresentation
class ViewController: UIViewController {
private var metaData: LPLinkMetadata = LPLinkMetadata()
@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 {
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 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
}
func addRichLinkToView(view: UIView, metadata: LPLinkMetadata) {
linkView = LPLinkView(metadata: metadata)
view.addSubview(linkView)
linkView.frame = view.bounds
}
import UIKit
import LinkPresentation
class ViewController: UIViewController {
@IBOutlet weak var richView: UIView!
private lazy var linkView = LPLinkView()
private var metaData: LPLinkMetadata = LPLinkMetadata() {
didSet {
class LinkPresentationItemSource: NSObject, UIActivityItemSource {
var linkMetaData = LPLinkMetadata()
//Prepare data to share
func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) -> LPLinkMetadata? {
return linkMetaData
}
//Placeholder for real data, we don't care in this example so just return a simple string
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
func shareURLWithMetadata(metaData: LPLinkMetadata) {
let metadataItemSource = LinkPresentationItemSource(metaData: metaData)
let activity = UIActivityViewController(activityItems: [metadataItemSource], applicationActivities: [])
present(activity, animated: true)
}
func getMetadataForSharingManually(title: String, url: URL, fileName: String, fileType: String) -> LPLinkMetadata {
let linkMetaData = LPLinkMetadata()
let path = Bundle.main.path(forResource: fileName, ofType: fileType)
linkMetaData.iconProvider = NSItemProvider(contentsOf: URL(fileURLWithPath: path ?? ""))
linkMetaData.originalURL = url
linkMetaData.title = title
return linkMetaData
}
import UIKit
import LinkPresentation
class ViewController: UIViewController {
@IBOutlet weak var sharingButton: UIButton!
private var metaData: LPLinkMetadata = LPLinkMetadata() {
didSet {
DispatchQueue.main.async {
private let notificationFeedbackGenerator = UINotificationFeedbackGenerator()
notificationFeedbackGenerator.notificationOccurred(.error)
//or
notificationFeedbackGenerator.notificationOccurred(.success)
//or
notificationFeedbackGenerator.notificationOccurred(.warning)