Cloudinary 5.0.0

Cloudinary 5.0.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2024年4月
SPM支持 SPM

Tal Lev-AmiNitzan JaitmanAsi SayagConstantine NathansonAdi Mizrahi维护。



  • Cloudinary

Cloudinary iOS SDK

Build Status

关于

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

使用 Cloudinary iOS SDK 手动操作

如果您希望不使用依赖管理器,您可以将 Cloudinary 作为子模块手动添加到项目中

打开终端并导航到您的项目顶级目录。

如果您的项目尚未初始化为 Git 仓库,运行以下命令:

git init

将 cloudinary 添加为 git 子模块,运行以下命令:

git submodule add https://github.com/cloudinary/cloudinary_ios.git

嵌入式框架

  1. Cloudinary.xcodeproj拖放到您应用程序的 Xcode 项目的“项目导航器”中。它应出现在您的应用程序的蓝色项目图标下。
  2. 选择Cloudinary.xcodeproj并确保其部署目标与您的应用程序目标相同。
  3. 选择您的应用程序项目。在“TARGETS”下选择您的应用程序,打开“通用”标签,点击“嵌入式二进制”下的“+”按钮,并选择“Cloudinary.framework”。

用法

设置

要使用 API,您需要一个 CLDCloudinary 实例,该实例使用 CLDConfiguration 实例初始化。

CLDConfiguration 必须设置了其 cloudNameapiKey 属性。其他属性是可选的。

有关详细信息,请参阅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的实例,允许取消、暂停或恢复等操作。

下载的图片既被缓存到内存中,也被缓存到磁盘上(可自定义)。磁盘缓存大小有限,可进行更改。

贡献

请参阅贡献指南

获取帮助

如果您遇到问题或有疑问,您可以

关于Cloudinary

Cloudinary是一款既适用于网站又适用于移动应用的强大媒体API,它允许开发者通过多个CDN有效地管理、转换、优化和交付图片和视频。最终,观众可以享受到响应式和个性化的视觉媒体体验,无论使用何种查看设备。

其他资源

许可

在MIT许可下发布。