版本记录
版本号 | 时间 |
---|---|
V1.0 | 2020.03.31 星期二 |
前言
随着iOS 13.0的更新,新的SDK也加入了苹果的大家庭,其中一个就是LinkPresentation。下面我们在这个专题一起来学习下这个框架。
Overview
首先看一下框架环境
![](https://img.haomeiwen.com/i3691932/5beaf7f3297d7cca.png)
可见,LinkPresentation
是iOS 13新增的OC和Swift都支持的新的Framework
。
Link Presentation
使您能够以一致的方式表示内容丰富的url
。从URL检索元数据,在应用程序中显示丰富的链接内容,并在iOS中提供共享表单体验的链接元数据。
![](https://img.haomeiwen.com/i3691932/e05affcec2ac6ca7.png)
更多信息,可以参考WWDC 2019 session 262: Embedding and Sharing Visually Rich Links。
Topics
1. Link Metadata
-
LPMetadataProvider
- 为URL检索元数据的对象。
Declaration
@interface LPMetadataProvider : NSObject
使用LPMetadataProvider
获取URL的元数据,包括它的标题、图标和图像或视频链接。LPLinkMetadata
实例上的所有属性都是可选的。
注意:要使
macOS
客户端能够获取远程url
的元数据,请添加com.apple.security.net .client
权限。
Fetch Link Metadata from a URL
对于每个元数据请求,创建LPMetadataProvider
的一个实例,并调用startFetchingMetadataForURL:completionHandler:
。
在完成处理程序completion
中,检查错误。如果您的用户没有网络连接,则获取操作可能会失败。如果服务器没有响应或者响应速度太慢,则获取可能超时。或者,应用程序可能会取消请求,或者出现未知的错误。
否则,您可以随意使用元数据,例如,填充表视图单元格的标题。
let metadataProvider = LPMetadataProvider()
let url = URL(string: "https://www.apple.com/ipad")!
metadataProvider.startFetchingMetadata(for: url) { metadata, error in
if error != nil {
// The fetch failed; handle the error.
return
}
// Make use of fetched metadata.
}
有关处理链接表示错误的更多信息,请参见LPError
。
-
LPLinkMetadata
- 包含关于URL的元数据的对象。
Declaration
@interface LPLinkMetadata : NSObject
使用LPLinkMetadata
来存储关于URL的元数据,包括它的标题、图标、图像和视频。
使用LPMetadataProvider
获取元数据。对于远程url
,将元数据缓存在本地,以避免每次显示时从internet
获取数据的数据和性能成本。LPLinkMetadata
是可序列化的NSSecureCoding
。
对于本地文件url
,如果可能,QuickLookThumbnailing将检索文件的代表性缩略图。
Provide Custom Metadata
假设你的应用程序已经有一个链接数据库,其中的标题和图像不是由LPMetadataProvider
获取的。您不必从internet获取新的元数据来加速共享表或显示丰富的链接。相反,您可以自己填写LPLinkMetadata
字段。
创建一个LPLinkMetadata
对象,并至少填写originalURL
和URL
字段,以及您拥有的任何其他信息。
func activityViewControllerLinkMetadata(_: UIActivityViewController) -> LPLinkMetadata? {
let metadata = LPLinkMetadata()
metadata.originalURL = URL(string: "https://www.example.com/apple-pie")
metadata.url = metadata.originalURL
metadata.title = "The Greatest Apple Pie In The World"
metadata.imageProvider = NSItemProvider.init(contentsOf:
Bundle.main.url(forResource: "apple-pie", withExtension: "jpg"))
return metadata
}
Accelerate the Share Sheet Preview
对于共享url的现有应用程序,共享表单会自动显示链接的预览。预览首先显示了一个占位符链接图标旁边的基本URL,同时获取的链接的元数据通过网络。一旦链接的图标和标题可用,预览就会更新。
如果您已经有一个用于URL
的LPLinkMetadata
对象,那么将其传递到共享工作表以立即显示预览,而无需通过网络获取数据。在activityViewControllerLinkMetadata:
的实现中,返回元数据对象。
func activityViewControllerLinkMetadata(_: UIActivityViewController) -> LPLinkMetadata? {
return self.metadata
}
如果用户选择共享消息,则相同的元数据将直接通过,从而提供流畅和无缝的体验,而无需进行不必要的加载。
2. Rich Links
-
LPLinkView
- 链接的丰富的可视化表示。
3. Reference
后记
本篇主要讲述了LinkPresentation框架基本概览,感兴趣的给个赞或者关注~~~
![](https://img.haomeiwen.com/i3691932/032dfa4600350bc7.png)
网友评论