TLMetaResolver 是一个由 Swift 编写的 UIWebView 扩展,它可以解析加载的网页中的元标签并提取有关可以从该页面深度链接的本地应用的信息。这种方法用于 Twitter 和 Facebook 从发布的网页深度链接到本地应用。TLMetaResolver 处理的元标签定义包括
TLMetaResolver 为 UIWebView 添加了一个功能,该功能在加载的网页上下文中评估 JavaScript 脚本。此脚本返回一个 app id 和 url。该 app id 是 iTunes 上本地应用的 id,而 url 是用于触发本地应用的特殊 url。
通过使用 app id,扩展在 iTunes 上执行搜索,调用 iTunes 搜索 API 来获取应用名称和图标 url。然后下载图标图像,创建一个 TLNativeAppInfo 对象并在回调中返回。此对象可用于创建在 UIActivityViewController 中显示的 TLNativeAppActivity。当执行活动时,会通过 UIApplication.sharedApplication().openURL()
返回指向本地应用的 url。
一旦您的页面加载完成,请调用一个 resolveMetaTags()
函数,并提供符合 TLMetaResolverComplete
类型的闭包。检查示例项目以了解可能的实现,您可以使用 pod try TLMetaResolver
。
请注意的一个关键点是 UIWebViewDelegate 的 webViewDidFinishLoad
函数可能被调用多次,因此您应该处理这种情况以避免不必要的 resolveMetaTags()
调用。TLMetaResolver 在此级别不进行任何特殊处理。
resolveMetaTags()
有两个版本,参数略有不同
func resolveMetaTags (onComplete: TLMetaResolverComplete)
两个版本都有一个类型为 TLMetaResolvercomplete
的参数,该参数是在处理完成后被触发的回调。
func resolveMetaTags (fetchUrl: TLMetaResolverFetchURL?, _ fetchImage: TLMetaResolverFetchURL?, _ onComplete: TLMetaResolverComplete)
长版本有两个额外的参数,它们是用于调用iTunes Search API(fetchUrl
)和应用程序图标下载(fetchImage
)的闭包。你可以提供其中一个、两个或者都不提供(这适用于resolverMetaTags()
的短版本)。对于你没有提供的闭包,将使用默认实现NSURLSession.sharedSession()
。
您还可以使用以下命令来快速检查:
pod try TLMetaResolver
或者选择克隆仓库,并将Pod/目录下的代码和资源整合到您的项目中。
iOS >= 8.0
BrunoBerisso, [email protected]
TLMetaResolver可在MIT许可证下使用。有关更多信息,请参阅LICENSE文件。