Cloudinary iOS SDK
关于
Cloudinary iOS SDK 允许您快速轻松地将您的应用程序与 Cloudinary 集成。毫不费力地优化和转换云资产。
附加文档
此 Readme 提供了基本的安装和使用信息。对于完整文档,请参阅iOS SDK 指南。
目录
关键特性
版本支持
SDK 版本 | iOS 9+ | iOS 8 |
---|---|---|
2.0.0 - 2.10.1 | V | V |
3.0.0 - 4.0.0 | V | X |
安装
CocoaPods
CocoaPods 是 Swift 和 Objective-C Cocoa 项目的依赖管理器。要安装 CocoaPods:
sudo gem install cocoapods
如果您的项目还没有 Podfile
文件,可以通过运行以下命令来添加:
pod init
将 Cloudinary SDK 添加到您的 Podfile
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'MyApp' do
pod 'Cloudinary', '~> 3.0'
end
然后,运行以下命令:
pod install
Carthage
创建 Cartfile
touch Cartfile
打开 Cartfile
,并输入以下行
github "cloudinary/cloudinary_ios" ~> 3.0
然后,运行以下命令:
carthage update --use-xcframeworks
会出现一个 Cartfile.resolved
文件和一个 Carthage
目录,它们的路径与您的 .xcodeproj
或 .xcworkspace
相同。将构建好的 .xcframework
框架从 Carthage/Build
拖到您的应用程序 Xcode 项目的“框架和库”部分。
Swift Package Manager
- 文件 > 添加包... >
- 添加 https://github.com/cloudinary/cloudinary_ios.git
- 选择“更新到下一个主要版本”并将版本设置为 "3.0.0"。
使用 Cloudinary iOS SDK 手动操作
如果您希望不使用依赖管理器,您可以将 Cloudinary 作为子模块手动添加到项目中
打开终端并导航到您的项目顶级目录。
如果您的项目尚未初始化为 Git 仓库,运行以下命令:
git init
将 cloudinary 添加为 git 子模块,运行以下命令:
git submodule add https://github.com/cloudinary/cloudinary_ios.git
嵌入式框架
- 将
Cloudinary.xcodeproj
拖放到您应用程序的 Xcode 项目的“项目导航器”中。它应出现在您的应用程序的蓝色项目图标下。 - 选择
Cloudinary.xcodeproj
并确保其部署目标与您的应用程序目标相同。 - 选择您的应用程序项目。在“TARGETS”下选择您的应用程序,打开“通用”标签,点击“嵌入式二进制”下的“+”按钮,并选择“Cloudinary.framework”。
用法
设置
要使用 API,您需要一个 CLDCloudinary 实例,该实例使用 CLDConfiguration 实例初始化。
CLDConfiguration 必须设置了其 cloudName
和 apiKey
属性。其他属性是可选的。
有关详细信息,请参阅API、URL 和访问标识符。
初始化 CLDConfiguration 有几种方法。您可以直接用所需参数调用其构造函数
let config = CLDConfiguration(cloudName: "CLOUD_NAME", apiKey: "API_KEY")
另一种方法是通过传递以下格式的 URL:cloudinary://API_KEY:API_SECRET@CLOUD_NAME
let config = CLDConfiguration(cloudinaryUrl: "cloudinary://<API_KEY>:<API_SECRET>@<CLOUD_NAME>")
您还可以将相同的 URL 添加为环境参数,在 CLOUDINARY_URL
下,然后使用静态初始化器初始化 CLDConfiguration
let config = CLDConfiguration.initWithEnvParams()
现在您可以为工作创建一个 CLDCloudinary 实例
let cloudinary = CLDCloudinary(configuration: config)
转换和优化资产
以下示例生成了一个上传的 sample
图像的 URL
cloudinary.createUrl().generate("sample.jpg")
// http://res.cloudinary.com/CLOUD_NAME/image/upload/sample.jpg
以下示例生成了一个上传的 sample
图像的图像 URL,同时将其转换填充 100x150 矩形
let transformation = CLDTransformation().setWidth(100).setHeight(150).setCrop(.crop)
cloudinary.createUrl().setTransformation(transformation).generate("sample.jpg")
// http://res.cloudinary.com/CLOUD_NAME/image/upload/c_fill,h_150,w_100/sample.jpg
另一个例子,在生成90x90人脸检测缩略图的同时嵌入上传图片的较小版本。
let transformation = CLDTransformation().setWidth(90).setHeight(90).setCrop(.Thumb).setGravity(.Face)
cloudinary.createUrl().setTransformation(transformation).generate("sample.jpg")
// http://res.cloudinary.com/CLOUD_NAME/image/upload/c_thumb,g_face,h_90,w_90/sample.jpg
您可以提供Facebook用户名、Facebook个人资料或粉丝页面的数字ID。
将Facebook个人资料嵌入到您的图形设计中非常简单。
let url = cloudinary.createUrl().setTransformation(CLDTransformation().setWidth(90).setHeight(130).setGravity(.Face).setCrop(.Fill)).setType(.Facebook).generate("billclinton.jpg")
// http://res.cloudinary.com/CLOUD_NAME/image/facebook/c_fill,g_face,h_130,w_90/billclinton.jpg
您还可以连锁变换。
let transformation = CLDTransformation().setWidth(100).setHeight(150).chain().setCrop(.Fit)
let url = cloudinary.createUrl().setTransformation().generate("sample.jpg")
// http://res.cloudinary.com/CLOUD_NAME/image/facebook/h_150,w_100/c_fit/sample.jpg
文件上传
1. 已签名的上传
将文件上传到您的云存储非常直接。
以下示例中,位于 fileUrl
的文件被上传到您的云存储。
cloudinary.createUploader().upload(file: fileUrl)
fileUrl
可以指向本地或远程文件。
您也可以上传数据。
cloudinary.createUploader().upload(data: data)
上传的图片被分配一个随机生成的公共ID,该ID作为响应的一部分返回。
您可以将 CLDUploadRequestParams
的实例传递,作为您希望在上传请求中传递的额外参数。例如,您可以指定自己的公共ID而不是随机生成的ID。
有关可用的所有上传参数的完整列表,请参阅 上传API参考文档。
您还可以传递一个在数据传输期间定期调用的 progress
闭包,以及一个在请求完成后调用的 completionHandler
闭包,它持有响应对象或错误。
以下示例中,我们在上传请求中应用了传入的变换,该变换在将图像保存在云中的之前应用。我们还指定了公共ID,并传递了上传进度和完成处理的闭包。
let params = CLDUploadRequestParams()
params.setTransformation(CLDTransformation().setGravity(.NorthWest))
params.setPublicId("my_public_id")
let request = cloudinary.createUploader().upload(file: fileUrl, params: params, progress: { (bytes, totalBytes, totalBytesExpected) in
// Handle progress
}) { (response, error) in
// Handle response
}
上传预设的无签名上传。
2. 使用您可以在Cloudinary账户控制台创建一个上传预设,定义限制格式、转换、尺寸等规则的规则。一旦定义了预设,在调用上传时就会提供它的名称。只有当使用预设名称且资源在预设定义的限制范围内时,上传调用才会成功。
以下示例上传了一个本地资源,假设账户中已经存在名为'sample_preset'的预设
let request = cloudinary.createUploader().upload(url: file, uploadPreset: "sample_preset", params: CLDUploadRequestParams()).response({
(response, error) in
// Handle response
})
每次上传请求都会返回一个CLDUploadRequest实例,允许进行取消、暂停或恢复等操作。
文件下载
SDK提供了一些方便的方法,可以方便地从您的云中下载文件
cloudinary.createDownloader().fetchImage(url)
您还可以传递一个在数据传输期间定期调用的progress
闭包,以及一个一旦请求完成就被调用的completionHandler
闭包,其中包含获取的UIImage或错误。
let request = cloudinary.createDownloader().fetchImage(url, progress: { (bytes, totalBytes, totalBytesExpected) in
// Handle progress
}) { (responseImage, error) in
// Handle response
}
每次下载请求都返回一个实现CLDNetworkDataRequest的实例,允许取消、暂停或恢复等操作。
下载的图片既被缓存到内存中,也被缓存到磁盘上(可自定义)。磁盘缓存大小有限,可进行更改。
贡献
请参阅贡献指南。
获取帮助
如果您遇到问题或有疑问,您可以
- 在GitHub上打开一个问题(关于SDK的问题)
- 打开一个支持票据(有关您账户的问题)
关于Cloudinary
Cloudinary是一款既适用于网站又适用于移动应用的强大媒体API,它允许开发者通过多个CDN有效地管理、转换、优化和交付图片和视频。最终,观众可以享受到响应式和个性化的视觉媒体体验,无论使用何种查看设备。
其他资源
- Cloudinary转换和REST API参考:包含所有SDK的语法和示例的全面参考。
- MediaJams.dev:由Cloudinary开发者撰写的小巧教程
- DevJams:Cloudinary开发者YouTube播客。
- Cloudinary学院:免费的自学课程、导师引领的虚拟课程和现场课程。
- 代码探索者和功能演示:包含所有文档中找到的代码探索者、Postman收藏夹和功能演示的一站式商店。
- Cloudinary路线图:您有机会跟踪、投票或建议Cloudinary下一步应开发什么。
- Cloudinary Facebook社区:向其他Cloudinary开发者学习和提供帮助。
- Cloudinary账号注册:免费注册Cloudinary账号。
- Cloudinary网站
许可
在MIT许可下发布。