美文网首页
LinkPresentation框架详细解析 (一) —— 基本

LinkPresentation框架详细解析 (一) —— 基本

作者: 刀客传奇 | 来源:发表于2020-03-31 11:59 被阅读0次

版本记录

版本号 时间
V1.0 2020.03.31 星期二

前言

随着iOS 13.0的更新,新的SDK也加入了苹果的大家庭,其中一个就是LinkPresentation。下面我们在这个专题一起来学习下这个框架。

Overview

首先看一下框架环境

可见,LinkPresentation是iOS 13新增的OC和Swift都支持的新的Framework

Link Presentation使您能够以一致的方式表示内容丰富的url。从URL检索元数据,在应用程序中显示丰富的链接内容,并在iOS中提供共享表单体验的链接元数据。

更多信息,可以参考WWDC 2019 session 262: Embedding and Sharing Visually Rich Links


Topics

1. Link Metadata

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

Declaration

@interface LPLinkMetadata : NSObject

使用LPLinkMetadata来存储关于URL的元数据,包括它的标题、图标、图像和视频。

使用LPMetadataProvider获取元数据。对于远程url,将元数据缓存在本地,以避免每次显示时从internet获取数据的数据和性能成本。LPLinkMetadata是可序列化的NSSecureCoding

对于本地文件url,如果可能,QuickLookThumbnailing将检索文件的代表性缩略图。

Provide Custom Metadata

假设你的应用程序已经有一个链接数据库,其中的标题和图像不是由LPMetadataProvider获取的。您不必从internet获取新的元数据来加速共享表或显示丰富的链接。相反,您可以自己填写LPLinkMetadata字段。

创建一个LPLinkMetadata对象,并至少填写originalURLURL字段,以及您拥有的任何其他信息。

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,同时获取的链接的元数据通过网络。一旦链接的图标和标题可用,预览就会更新。

如果您已经有一个用于URLLPLinkMetadata对象,那么将其传递到共享工作表以立即显示预览,而无需通过网络获取数据。在activityViewControllerLinkMetadata:的实现中,返回元数据对象。

func activityViewControllerLinkMetadata(_: UIActivityViewController) -> LPLinkMetadata? {
    return self.metadata
}

如果用户选择共享消息,则相同的元数据将直接通过,从而提供流畅和无缝的体验,而无需进行不必要的加载。

2. Rich Links

3. Reference

后记

本篇主要讲述了LinkPresentation框架基本概览,感兴趣的给个赞或者关注~~~

相关文章

网友评论

      本文标题:LinkPresentation框架详细解析 (一) —— 基本

      本文链接:https://www.haomeiwen.com/subject/zvxwuhtx.html