FavIcon 是一个用于下载表示网站的 favicon 的小型 Swift 库。
等等,为什么会需要一个库来做这件事呢?这显然只是对 /favicon.ico
的简单 HTTP GET,对吧?对吧?好。去读一下这个 StackOverflow 文章 这篇文章,然后看看你感觉如何。
快速开始
Swift 包管理器
将其添加到您的 Package.swift
依赖项中
// swift-tools-version:5.0
import PackageDescription
let package = Package(
...
dependencies: [
.package(url: "https://github.com/leonbreedt/FavIcon.git", from: "3.1.0"),
],
)
ImpactPods
注释:需要ImpactPods(1.4.0或更高版本)。
将其添加到您的Podfile
文件。
use_frameworks!
pod 'FavIcon', '~> 3.1.0'
Carthage
将它添加到你的Cartfile
中。
github "leonbreedt/FavIcon" ~> 3.1.0
特性
- 检测是否存在
/favicon.ico
- 解析URL中的HTML,并扫描使用Apple、Google或Microsoft约定引用图标的适当的
<link>
或<meta>
标签。 - 发现并解析Web应用程序清单JSON文件以获取图标列表。
- 发现并解析Microsoft浏览器配置XML文件以获取图标列表。
是的。这些都是表明您的网站有一个可用户界面使用的图标的潜在方法。做得好,编程同行们。
使用示例
或许你在用户界面中有一个位置想要展示用户当前访问的网站的图标?
try FavIcon.downloadPreferred("https://apple.com") { result in
if case let .success(image) = result {
// On iOS, this is a UIImage, do something with it here.
// This closure will be executed on the main queue, so it's safe to touch
// the UI here.
}
}
这将检测该URL上所有可用的图标,如果它能够确定它们的尺寸,将会尝试找到尺寸最接近所需尺寸的图标,否则,它会优先选择最大的图标。如果它对任何一个图标的尺寸都没有任何了解,它会优先选择找到的第一个图标。
当然,如果你觉得这种方法过于模糊,可以使用downloadAll(url:completion:)
下载所有图标。
或者也许你想稍后自行尝试下载它们,根据自己的标准选择图标,在这种情况下,scan(url:completion:)
将提供有关检测到的图标的详细信息,您可以将这些信息传递给download(url:completion:)
以方便地下载。
示例项目
查看Example/目录中的iOS项目,了解如何简单使用此库的示例。
许可
Apache 2.0