测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可协议 | MIT |
发布上次发布 | 2017年6月 |
SwiftSwift 版本 | 2.3 |
SPM支持 SPM | ✗ |
由 ricohapi 维护。
此开源库允许您将 Ricoh 媒体存储集成到您的 Swift 应用程序中。
了解更多信息请访问 http://docs.ricohapi.com/
您还需要
如果您没有,请从 THETA 开发者网站 注册您自己和您的客户端。
本节向您展示了两种不同方法在您的应用程序中安装 Ricoh Media Storage for Swift。
查看 Media Storage 示例 以测试 Ricoh Media Storage for Swift 的示例。
$ git clone --recursive https://github.com/ricohapi/media-storage-swift.git
打开新的 media-storage-swift
目录,并将 RicohAPIMStorage.xcodeproj
拖到项目的项目导航器中。
它应该出现在您应用程序蓝色项目图标下。它是否位于所有其他 Xcode 组上方或下方并不重要。
在 Xcode 的方案菜单中选择 RicohAPIAuth 方案并运行。
选择您自己的应用程序方案并运行以加载 RicohAPIMStorage 模块。
安装完成!查看 示例流程 以获取编码示例。
// Import
import RicohAPIAuth
import RicohAPIMStorage
// Set your Ricoh API Client Credentials
var authClient = AuthClient(
clientId: "<your_client_id>",
clientSecret: "<your_client_secret>"
)
@IBAction func uploadButtonTapped(sender: AnyObject) {
// Set your resource owner credentials (Ricoh ID)
authClient.setResourceOwnerCreds(
userId: "<your_user_id>",
userPass: "<your_password>"
)
// Initialize a MediaStorage object with the AuthClient object
let mstorage = MediaStorage(authClient: authClient)
// Connect to the server
mstorage.connect(){result, error in
//Prepare an NSData object in your way
let mediaUrl = NSBundle.mainBundle().URLForResource("<your_media_name>", withExtension: "jpg")
let mediaData = NSData(contentsOfURL: mediaUrl!)!
// Upload
mstorage.upload(data: mediaData){result, error in
if !error.isEmpty() {
print("status code: \(error.statusCode)")
print("error message: \(error.message)")
} else {
print("media id : \(result.id)")
print("media contentType : \(result.contentType)")
print("media bytes : \(result.bytes)")
print("created at : \(result.createdAt)")
}
}
}
}
var authClient = AuthClient(
clientId: "<your_client_id>",
clientSecret: "<your_client_secret>"
)
authClient.setResourceOwnerCreds(
userId: "<your_user_id>",
userPass: "<your_password>"
)
var mstorage = MediaStorage(authClient: authClient)
mstorage.connect(){result, error in
if error.isEmpty() {
var accessToken: String = result.accessToken
// do something
}
}
let data: NSData = ...
mstorage.upload(data: data){result, error in
if error.isEmpty() {
var id: String = result.id
var contentType: String = result.contentType
var bytes: Int = result.bytes
var createdAt: String = result.createdAt
// do something
}
}
mstorage.download(mediaId: "<media_id>"){result, error in
if error.isEmpty() {
var data: NSData = result.data
// do something
}
}
如果您在第1个参数上没有任何设置或传递一个空的字典
对象,您将获得一个默认列表。
mstorage.list(){result, error in
if error.isEmpty() {
var mediaList: Array = result.mediaList
for media in mediaList {
var id: String = media.id
}
var pagingNext: String? = result.paging.next
var pagingPrevious: String? = result.paging.previous
// do something
}
}
您还可以使用如下所示的字典
对象列出选项。可用的选项有limit
、after
和before
。
mstorage.list(["limit": 25, "after": "<media_id>"]){result, error in
// do something
}
您可以将另一个含filter
键的字典
对象添加到列表选项中,以通过用户元数据进行搜索。
mstorage.list(["limit": 25, "after": "<media_id>",
"filter": ["meta.user.<key1>": "<value1>", "meta.user.<key2>": "<value2>"]]){result, error in
// do something
}
mstorage.delete(mediaId: "<media_id>"){error in
if error.isEmpty() {
// do something
}
}
mstorage.info(mediaId: "<media_id>"){result, error in
if error.isEmpty() {
var id: String = result.id
var contentType: String = result.contentType
var bytes: Int = result.bytes
var createdAt: String = result.createdAt
// do something
}
}
您可以将您的原始元数据定义为'用户元数据'。对于相同的键,现有元数据值将被覆盖。一次可以附加多达10个用户元数据到媒体数据。
mstorage.addMeta(mediaId: "<media_id>", userMeta: ["user.<key1>": "<value1>", "user.<key2>": "<value2>"]){error in
if error.isEmpty() {
// do something
}
}
mstorage.meta(mediaId: "<media_id>"){result, error in
if error.isEmpty() {
var exif: [String: String] = result.exif
var gpano: [String: String] = result.gpano
var userMeta: [String: String] = result.userMeta
// do something
}
}
mstorage.meta(mediaId: "<media_id>", fieldName: "exif"){result, error in
if error.isEmpty() {
var exif: [String: String] = result
// do something
}
}
mstorage.meta(mediaId: "<media_id>", fieldName: "gpano"){result, error in
if error.isEmpty() {
var gpano: [String: String] = result
// do something
}
}
mstorage.meta(mediaId: "<media_id>", fieldName: "user"){result, error in
if error.isEmpty() {
var userMeta: [String: String] = result
// do something
}
}
mstorage.meta(mediaId: "<media_id>", fieldName: "user.<key>"){result, error in
if error.isEmpty() {
var value: String = result["<key>"]!
// do something
}
}
mstorage.removeMeta(mediaId: "<media_id>", fieldName: "user"){error in
if error.isEmpty() {
// do something
}
}
mstorage.removeMeta(mediaId: "<media_id>", fieldName: "user.<key>"){error in
if error.isEmpty() {
// do something
}
}