Swift Open Graph 协议(OGP)的封装
OpenGraph 是 OGP(Open Graph protocol)的 Swift 封装。您可以使用以下方式获取 OpenGraph 并通过索引和枚举情况来访问属性。
OpenGraph.fetch(url: url) { result in
switch result {
case .success(let og):
print(og[.title]) // => og:title of the web site
print(og[.type]) // => og:type of the web site
print(og[.image]) // => og:image of the web site
print(og[.url]) // => og:url of the web site
case .failure(let error):
print(error)
}
}
对于 macOS 10.15、iOS 13、watchOS 6、tvOS 13 和更高版本,您可以使用 async/await 语法。
do {
let og = try await OpenGraph.fetch(url: url)
print(og[.title]) // => og:title of the web site
print(og[.type]) // => og:type of the web site
print(og[.image]) // => og:image of the web site
print(og[.url]) // => og:url of the web site
} catch {
print(error)
}
所有元数据均在此定义:此处。
此库不提供任何特定于平台的视图来显示 OGP 数据,以提高通用性。
此外,如果您想使用 Rx 接口来使用此库,请将以下扩展复制到您的项目中。
extension Reactive where Base: OpenGraph {
static func fetch(url: URL?) -> Observable<OpenGraph> {
return Observable.create { observer in
guard let url = url else {
observer.onCompleted()
return Disposables.create()
}
OpenGraph.fetch(url: url) { result in
switch result {
case .success(let og):
observer.onNext(og)
case .failure(let error):
observer.onError(error)
}
observer.onCompleted()
}
return Disposables.create()
}
}
}
要求
- Xcode 11.x / Swift 5.x (如果您使用 Xcode 10.x,可以使用 1.1.0。)
- iOS 10.0 或更高版本
- macOS 10.9 或更高版本
- tvOS 9.0 或更高版本
- watchOS 2.0 或更高版本
如果您使用 Swift 2.2 或 2.3,请使用 OpenGraph 的更旧版本。
安装
CocoaPods
将pod 'OpenGraph'
添加到您的Podfile中,并运行pod install
。
Carthage
将github "satoshi-takano/OpenGraph"
添加到您的Cartfile中,并运行carthage update
。
如何处理重定向
在大多数情况下,OpenGraph可以自动处理服务器端重定向。但是有些网页会在前端JavaScript中引发重定向。您可能可以通过如下更改User-Agent来处理这类重定向。
#43
许可协议
本库遵循MIT许可协议。