URLEmbeddedView
特点
- 简单的接口用于获取 Open Graph 数据
- 能够显示 Open Graph 数据
- 自动缓存 Open Graph 数据
- 自动缓存 Open Graph 图片
- 可触摸处理
- 可清除图片缓存
- 可清除数据缓存
- 支持 Swift3.2 (直到 0.11.x)
- 支持 Swift4.x (直到 0.17.1)
- 支持 Swift5 (自 0.18.0)
- 从 0.11.1 开始支持 Carthage
- 从 0.16.0 开始支持 tvOS
- 对 OGData 缓存的定制实现
用法
要运行示例项目,首先从仓库克隆,然后从 Example 目录运行 carthage update
let embeddedView = URLEmbeddedView()
embeddedView.loadURL(urlString)
布局
- 默认
- 无图片
- 无响应
自定义
embeddedView.textProvider[.Title].font = .boldSystemFontOfSize(18)
embeddedView.textProvider[.Title].fontColor = .lightGrayColor()
embeddedView.textProvider[.Title].numberOfLines = 2
//You can use ".Title", ".Description", ".Domain" and ".NoDataTitle"
数据及图像缓存
您可以使用 OGDataProvider
获取 Open Graph 数据。
OGDataProvider.shared.fetchOGData(urlString: String, completion: ((OpenGraph.Data, Error?) -> Void)? = nil) -> String?
OGDataProvider.shared.deleteOGData(urlString: String, completion: ((Error?) -> Void)? = nil)
OGDataProvider.shared.deleteOGData(_ ogData: OpenGraph.Data, completion: ((Error?) -> Void)? = nil)
您可以配置 OGData 下次更新的时间间隔。默认为10天。
OGDataProvider.shared.updateInterval = 10.days
您可以使用 OGImageProvider
获取 UIImage。
OGImageProvider.shared.loadImage(urlString: String, completion: ((UIImage?, Error?) -> Void)? = nil) -> NSURLSessionDataTask?
OGImageProvider.shared.clearMemoryCache()
OGImageProvider.shared.clearAllCache()
自定义数据缓存实现
默认缓存功能使用 Core Data。如果您想使用其他缓存功能,请使用 OGDataCacheManagerProtocol
实现缓存管理器。例如,URLEmbeddedView 有 OGDataNoCacheManager
该功能不使用缓存。如果您想使用该功能,可以像这样使用。
OGDataProvider.shared.cacheManager = OGDataNoCacheManager()
您可以实现自定义缓存功能并像这样使用它。
class MemoryCacheManager: OGDataCacheManagerProtocol {
// implementation of required methods
}
OGDataProvider.shared.cacheManager = MemoryCacheManager()
OpenGraph.Data 属性
public let imageUrl: URL?
public let pageDescription: String?
public let pageTitle: String?
public let pageType: String?
public let siteName: String?
public let sourceUrl: URL?
public let url: URL?
OpenGraphDataDownloader
您只能这样使用 OGData 的下载功能 OpenGraphDataDownloader
。
let urlString = ...
OpenGraphDataDownloader.shared.fetchOGData(urlString: urlString) { result in
switch result {
case let .success(data, isExpired):
// do something
case let .failure(error, isExpired):
// do something
}
}
如果您将 OGDataProvider
与 OGDataNoCacheManager
一起使用,过程几乎相同。
OGDataProvider.shared.cacheManager = OGDataNoCacheManager()
let urlString = ...
OGDataProvider.shared.fetchOGData(urlString: urlString) { ogData, error in
// do something
}
安装
CocoaPods
URLEmbeddedView 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
# Uncomment the next line to define a global platform for your project
# platform :ios, '8.0'
target 'Your Project Name' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for URLEmbeddedViewSample
pod "URLEmbeddedView"
end
Carthage
如果您使用的是 Carthage,只需将 NoticeObserveKit 添加到您的 Cartfile
github "marty-suzuki/URLEmbeddedView"
Objective-C 使用示例
#import <URLEmbeddedView/URLEmbeddedView-Swift.h>
- (void)viewDidLoad {
[super viewDidLoad];
URLEmbeddedView *embeddedView = [[URLEmbeddedView alloc] init];
[self.view addSubView:embeddedView];
[embeddedView loadURL:@"https://github.com/" completion:nil];
}
- (void)setUpdateInterval {
[OGDataProvider sharedInstance].updateInterval = [NSNumber days:10];
}
- (void)fetchOpenGraphData {
[[OGDataProvider sharedInstance] fetchOGDataWithUrlString:self.textView.text
completion:^(OpenGraphData *data, NSError *error) {
NSLog(@"OpenGraphData = %@", data);
}];
}
这里 有 Objective-C 的示例。
特别感谢
- CryptoSwift 是用于 Swift 的密码相关函数和辅助工具。 (由 @krzyzanowskim 创建)
要求
- Xcode 10.2 或更高版本
- iOS 8.0 或更高版本
- tvOS 10.0 或更高版本
- UIKit
- CoreData
- CoreGraphics
其他
- MisterFusion - Swift DSL for AutoLayout
- NoticeObserveKit (type-safe Notification Centre Wrapper) is used in this sample.
- Android 版本可以在这里找到 这里。 (由 @kaelaela 创建)
作者
铃木贵彦,[email protected]
许可协议
URLEmbeddedView 适用于 MIT 许可协议。有关更多信息,请参阅 LICENSE 文件。