Uploadcare for iOS
已弃用。请查看我们全新的 Swift 库。
Uploadcare 是一个提供文件处理机制 PaaS,用于网站和应用程序。这还包括使用 Uploadcare CDN API 的即时图像处理。
Uploadcare for iOS 是一个开源的 Objective-C 组件,可以使您的 iOS 应用程序获得 Uploadcare 的功能。它由两个关键部分组成: UploadcareKit 和 Uploadcare Widget。
UploadcareKit 负责在上传和下载任务内进行 API 通信的核心抽象层。
Uploadcare Widget 是一个现代且具备云意识的 iOS 文件选择器。嗯,如果 iOS 有文件的概念也许就是这样。由于它没有,您可以认为 Uploadcare Widget 是一个 物品 选择器——一个可以插入的组件,允许用户从他们的数字 物品(照片、文档等等)中选择和上传到您的网站或应用程序。
它的样子看起来像这样,
快速入门
安装
Uploadcare for iOS 使用了 CocoaPods,这是一个 Objective-C 项目的库依赖管理工具。将 Uploadcare 实现到您的项目中,只需将以下一行添加到您的 Podfile 文件中。
pod 'Uploadcare'
然后,在项目目录中运行 pod install
。
请确保从此使用 .xcworkspace
文件。
设置
环境
将 Uploadcare.h
文件头导入您的实现中。从 这里获取 您的 Uploadcare API 密钥,并在您的应用程序代理中使用一个公钥,如下所示。
#import <Uploadcare/Uploadcare.h>
/* ... */
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[UCClient defaultClient] setPublicKey:<#your key#>];
return YES;
}
icloud 权限
Uploadcare Widget 使用了 UIDocumentMenuViewController
,所以您需要在您的应用程序中启用 iCloud。转到 目标 -> 能力,并启用 iCloud。启用 Key-value storage
和 iCloud Documents
选项,
自定义 URL 规约
Uploadcare小组件在iOS 9+设备上使用SFSafariViewController
,在之前的版本上使用UIWebView
进行认证。这允许它通过应用程序代理方法中的自定义URL方案处理URL回调。
// IOS 9+
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options {
return [[UCClient defaultClient] handleURL:url];
}
// IOS 8
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[UCClient defaultClient] handleURL:url];
}
添加自定义URL方案需要执行以下步骤:
- 转到目标 -> 信息 -> URL类型。
- 添加一个类似下面的新URL方案,格式为 uc-
。 - 最终结果应类似于以下示例:
NSPhotoLibraryUsageDescription
in iOS 10
Uploadcare小组件使用UIImagePickerController
从相机胶卷上传文件。不要忘记在您的项目的Info.plist
文件中添加NSPhotoLibraryUsageDescription
键,以防止程序在运行时崩溃。
显示
初始化并显示小插件
显示Uploadcare小插件是通过创建并初始化一个UCMenuViewController
实例实现的,该实例是通过调用initWithProgress:completion:
方法创建的,
#import <Uploadcare/Uploadcare.h>
/* ... */
UCMenuViewController *menu = [[UCMenuViewController alloc] initWithProgress:^(NSUInteger bytesSent, NSUInteger bytesExpectedToSend) {
// handle progress here
} completion:^(NSString *fileId, id response, NSError *error) {
if (!error) {
// handle success
} else {
// handle error
}
}];
然后,使用presentFrom:
方法显示它,
[menu presentFrom:self];
自定义
您可以通过实现自己的菜单轻松自定义社交源列表的外观。为了接收可用的社交源,您可以使用UCSocialManager
中的fetchSocialSourcesWithCompletion:
方法。收到社交源列表后,您可以选择一个源并使用以下方法通过瞬时实例化UCGalleryVC
,
- (id)initWithSource:(UCSocialSource *)source
rootChunk:(UCSocialChunk *)rootChunk
progress:(UCProgressBlock)progress
completion:(UCWidgetCompletionBlock)completion;
仅核心级功能
为了仅集成核心级功能,例如本地和远程文件上传操作,您可以使用以下子规范
pod 'Uploadcare/Core'
请注意,在这种情况下,不会包含 Uploadcare.h
头文件,您需要使用 UploadcareKit.h
代替。
示例应用
这里是一个 示例项目。
联系
如果您有任何问题、错误报告或建议——给我们发邮件。
贡献者
安全问题
如果您认为在上传关注库中遇到了可能具有安全影响的问题,请与我们联系 [email protected] 或 Hackerone。
我们将尽快通过合作修复问题,并在任何公开披露之前与您个人联系。
授权
Uploadcare iOS遵循MIT许可证(见授权
)。