FlickrKit 1.0.9

FlickrKit 1.0.9

测试已测试
语言编程语言 Obj-CObjective C
许可证 BSD
发布最后发布2016年12月

David Casserly维护。



FlickrKit 1.0.9

  • 作者:
  • David Casserly

FlickrKit 是一个由 David Casserly 编写的用于访问 Flickr API 的 iOS Objective-C 库。它被用于 galleryr pro iPad 应用程序

主构建状态


功能


当我们已经有 ObjectiveFlickr 的时候,还需要 FlickrKit 做什么?为什么不要呢?我使用 ObjectiveFlickr 很久了,这个库中的一些方法就源于 ObjectiveFlickr。然而,有时调试 ObjectiveFlickr 会遇到问题,因为其网络代码是定制的,对我来说不熟悉。此外,我在 FlickrKit 上走了更远的路,并提供了比 ObjectiveFlickr 更多的功能...继续阅读...

  • 您可以通过几种方式调用方法 - 使用字符串方法名称/字典参数 - 或者使用为每个 Flickr API 调用生成的模型类!由您选择 - 或者混合使用!
  • 所有方法返回一个 NSOperation 子类,因此您可以轻松地取消请求,请求被加入到操作队列中。
  • 尽可能使用最新的 iOS 库构建 FlickrKit,并附带 ARC 和使用块回调。因此,其内部结构应该是熟悉的。
  • 错误被妥善包装到 NSError 对象中,再次增加了熟悉感。
  • 有默认的磁盘缓存来缓存 Flickr 响应 - 允许您缓存最多 24 小时。您可以指定每个请求的缓存时间。
  • 代码易于阅读和调试,因为它使用了标准 iOS 网络组件的最简单方式。
  • 它已经(部分)经过了单元测试。
  • 提供了一个示例项目来查看其用法。
  • 有一个大大简化的身份验证机制,这是使用 Flickr API - 即使在使用 ObjectiveFlickr 时 - 最复杂的一部分。
  • 模型类是自动生成的,包括所有错误码、参数、验证和文档。如果需要重新生成,代码生成项目也包含在源代码中。
  • 也许还有更多我忘记提及的功能…试一试吧!
限制

我不支持 Mac OS X(因为我从未与之合作..抱歉! - 欢迎提供端口!)。我不支持旧的认证方法或迁移 - 它仅使用 OAuth - 而 Flickr 现在 OAuth 也已经几乎一年了。它只支持单个用户认证 - 因此不支持多个 Flickr 账户

要求


FlickrKit 需要iOS 6.0及以上版本,使用ARC。可能与旧操作系统兼容,但尚未测试。

如果您在非ARC项目中使用FlickrKit,您需要在所有FlickrKit源文件上设置-fobjc-arc编译器标志。

要在Xcode中设置编译器标志,请转到您的活动目标并选择“构建阶段”选项卡。现在选择所有FlickrKit源文件,按Enter键,输入-fobjc-arc然后点击“完成”以启用FlickrKit的ARC。


将此行添加到您的Podfile目标中

pod 'FlickrKit'

运行pod install,一切就绪!

手动安装


  1. 将FlickrKit.xcodeproj拖到您的项目中。
  2. 在项目目标中,构建阶段,目标依赖项...添加FlickrKit作为依赖项
  3. 在项目目标中,构建阶段,与库链接二进制...添加libFlickrKit.a
  4. 在构建设置 > 头文件搜索路径...中指向FlickrKit类目录,递归搜索
  5. 包含SystemConfiguration.framework

使用说明


源文件中包含一个示例项目,展示如何开始。它有一些示例用法。UI可能不吸引人! - 但重要的是代码中API的使用。

API说明
  • 您需要使用initializeWithAPIKey:sharedSecret:开始库,这您可以从您的Flickr账户中获取。
  • 完成回调不在主线程上调用,因此您必须确保在主线程上执行任何与UI相关的工作。
  • Flickr允许您缓存最多12小时内的响应,您可以传递maxCacheAge缓存此内容的时间(分钟)。
  • 如果您想提供自己的缓存实现并在其中插入FlickrKit,请参阅[FlickrKit.h]。
  • 您可以使用字符串/字典调用方法 - 或者您可以使用模型API,在这种情况下,您使用模型类。模型类的优点是它们内置的清晰度、验证/错误消息以及包含Flickr文档。它们是自动从Flickr API生成的,并且如果API更新,可以使用FKAPIBuilder类重新生成。
身份验证
  • 您可以通过beginAuthWithCallbackURL开始身份验证,按照Flickr将回调到您的应用程序的url - 完成回调给您一个可以在webview中展示的URL。
  • 一旦用户登录并且Flickr回调到您的应用程序,您可以将其传递给completeAuthWithURL。
  • 我们将身份验证令牌存储在NSUserDefaults中 - 因此当您再次启动应用程序时,您可以调用checkAuthorizationOnSuccess以查看用户是否已经经过验证。
  • 调用注销将删除所有存储的令牌,用户必须重新进行身份验证。

启动

您可以从Flickr账户中获取API密钥和密钥。您需要这些才能使用API。

swift
FlickrKit.sharedFlickrKit().initializeWithAPIKey(apiKey, sharedSecret: secret)
objective-c
[[FlickrKit sharedFlickrKit] initializeWithAPIKey:@"YOUR_KEY" sharedSecret:@"YOUR_SECRET"];

加载数据库图片 - Flickr Explore

此示例演示了使用生成的Flickr API模型类。

swift
let flickrInteresting = FKFlickrInterestingnessGetList()
flickrInteresting.per_page = "15"
FlickrKit.sharedFlickrKit().call(flickrInteresting) { (response, error) -> Void in
        dispatch_async(dispatch_get_main_queue(), { () -> Void in
            if (response != nil) {
                    // Pull out the photo urls from the results
                    let topPhotos = response["photos"] as! [NSObject: AnyObject]
                    let photoArray = topPhotos["photo"] as! [[NSObject: AnyObject]]
                    for photoDictionary in photoArray {
                        let photoURL = FlickrKit.sharedFlickrKit().photoURLForSize(FKPhotoSizeSmall240, fromPhotoDictionary: photoDictionary)
                        self.photoURLs.append(photoURL)
                    }
                } 
       })
}
Objective-C
FlickrKit *fk = [FlickrKit sharedFlickrKit];
FKFlickrInterestingnessGetList *interesting = [[FKFlickrInterestingnessGetList alloc] init];
[fk call:interesting completion:^(NSDictionary *response, NSError *error) {
    // Note this is not the main thread!
    if (response) {             
        NSMutableArray *photoURLs = [NSMutableArray array];
        for (NSDictionary *photoData in [response valueForKeyPath:@"photos.photo"]) {
            NSURL *url = [fk photoURLForSize:FKPhotoSizeSmall240 fromPhotoDictionary:photoData];
            [photoURLs addObject:url];
        }
        dispatch_async(dispatch_get_main_queue(), ^{
            // Any GUI related operations here
        });
    }   
}];

您的照片流图片

此示例使用调用FlickrKit的字符串/字典方法,这是使用模型类之外的另一个选择。它还演示了传递一个一小时的缓存时间,这意味着如果在一小时内再次调用它,则会命中缓存而不是网络。快!

[[FlickrKit sharedFlickrKit] call:@"flickr.photos.search" args:@{@"user_id": self.userID, @"per_page": @"15"} maxCacheAge:FKDUMaxAgeOneHour completion:^(NSDictionary *response, NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^{
        if (response) {
            // extract images from the response dictionary  
        } else {
            // show the error
        }
    });         
}];

上传照片

上传一张照片并观察其进度。imagePicked来自UIImagePickerControllerDelegate,但可以是任何UIImage。

self.uploadOp = [[FlickrKit sharedFlickrKit] uploadImage:imagePicked args:uploadArgs completion:^(NSString *imageID, NSError *error) {
    dispatch_async(dispatch_get_main_queue(), ^{
        if (error) {
            // oops!
        } else {
            // Image is now in flickr!
        }            
       });
}];    
[self.uploadOp addObserver:self forKeyPath:@"uploadProgress" options:NSKeyValueObservingOptionNew context:NULL];

单元测试


有一些单元测试,但您应该运行覆盖API的一些方面的演示项目,这些项目既用了Swift也用了Objective-C。对测试不足表示歉意!

许可和保修


代码许可包含在项目中;基本上是一个带有归属的BSD许可。

您可以在商业、封闭源代码、开源、免费软件或任何其他类型的软件中使用它,前提是您适当地为我提供信用。

FlickrKit代码不提供任何类型的保修。我希望它对您有用(它对我肯定是有用的),但我对其功能或其他方面不作保证。

联系方式


我不能回答有关如何使用代码的问题,但欢迎使用电子邮件告诉我您正在使用它,或者只是表示感谢。

如果您创建了一个使用此代码的应用程序,我也希望知道。您可以在以下列表中找到我的联系细节。

同样,如果您想提交功能请求或错误报告,请随时与我联系。更好的方法是,您可以从代码中分叉,自行实现功能/修复,然后提交拉取请求。

尽情享受吧!

谢谢,

David Casserly

我: http://www.davidjc.com
我的工作: http://www.devedup.com
推特: http://twitter.com/devedup
雇佣我: http://linkedin.davidjc.com