我需要为MAC OS X开发一个应用程序,它将把所选文件上传到亚马逊网络服务。但为此我需要aws sdk for mac。我在网上找不到任何东西。是否可以修改AWS SDK for iOS以便它可以用于Mac?
此外,AWS SDK文档没有解释如何将文件上传到S3。有没有人有一个如何做到这一点的例子?
由于
答案 0 :(得分:7)
我已经创建了一个AWS iOS SDK的分支,可以构建并用于Mac OS X开发。看看:https://github.com/amberdixon/aws-sdk-ios。在自述文件中,我已经包含了有关如何构建AWS iOS SDK框架的Mac OS X版本的说明。 tomandersen repo似乎使用了更旧版本的iOS SDK,我创建的版本更新一些。
答案 1 :(得分:6)
根据a discussion on this topic中的AWS Developer Forums判断,似乎还没有适用于MacOS X的官方AWS开发工具包,但iOS版本已接近可用。该线程的一个贡献者已经为至少一些服务发布了a modified version that allegedly works on MacOS X。我没有任何个人经验,但看起来值得一看。
答案 2 :(得分:5)
在previous answer之后,我分叉并修改了适用于iOS的AWS开发工具包的v2.2,现在它为Mac OS X构建(在Yosemite 10.10.3中测试):https://github.com/johnabender/aws-sdk-ios 还要检查tvos
分支机构!
它们提供了一个命令行工具,用于将SDK组件打包为.framework
个对象。运行Scripts/SdkPackage.sh AWSS3
,它将构建S3框架和任何依赖项。运行Scripts/Package.sh
以构建所有框架。如果构建它们,构建的框架将在AWS SDK目录的根/build
中结束。
但是,他们的文件非常糟糕。例如,如果您想使用访问密钥而不是Cognito身份,则必须完成代码并弄清楚如何(至少可能!)。想列出S3存储桶的内容?祝好运。大多数必需的类甚至没有列在documentation中。并且您必须在项目中包含libz.dylib
以使用S3 SDK构建它们 - 它们也不会告诉您。
无论如何,这里有一些代码可以帮助任何人开始:
// This is helpful, also basically undocumented.
AWSLogger.defaultLogger().logLevel = .Verbose
let credentials = AWSStaticCredentialsProvider(accessKey: accessKeyId, secretKey: secretAccessKey)
let config = AWSServiceConfiguration(region: AWSRegionType.USWest2, credentialsProvider: credentials)
let listRequest = AWSS3ListObjectsRequest()
listRequest.bucket = "mybucket"
listRequest.prefix = "folder/"
// The key name allows you to set up multiple, global S3 configurations
// -- in case you'd ever want to do that, in violation of OO programming principles.
// But there's no way to make S3 requests using only a local config.
AWSS3.registerS3WithConfiguration(config, forKey: "s3")
AWSS3.S3ForKey("s3").listObjects(listRequest).continueWithBlock { (task: AWSTask!) -> AnyObject! in
if task.error != nil {
NSLog("error %@", task.error)
}
if task.result != nil {
NSLog("finished %@", task.result!.description)
}
return nil
}
答案 3 :(得分:0)
正如Caleb所说:OS X没有正式的AWS SDK。
完成S3文件上传的最简单方法是使用ASIHTTPRequest
。它是CFNetwork的包装器,易于使用。缺点是没有ARC支持,所以你必须自己处理内存管理......
答案 4 :(得分:0)
我需要AWS SDK for Mac来支持为我的iOS应用程序预先填充数据库,并且对它不存在感到惊讶(考虑到生产它将如何与iOS版本非常相似)。我下载了上面Amber提到的github MacOS SDK以及上面AWS链接中提到的那个。然而,两者都没有直接建立,所以我决定自己修改iOS SDK,以便我能理解这个过程是什么。 以下是我在MacOS 10.9上使用XCode 5.0.2进行DynamoDB的步骤:
1.下载iOS AWS 1.7.0 SDK,复制文件夹并将文件夹重命名为aws-MacOS-sdk-1.7.0(少量条件编译,如果构建脚本中的if / else将取消这一步)
2.Modify src / Scripts / Framework.sh - 这是所有AWS框架的构建工具 - 将所有四个xcodebuild行(30-39)替换为:
`xcodebuild -configuration Release -project "${PROJECT}.xcodeproj" -target "${PROJECT}" -sdk macosx10.9`
用以下方法替换唇线(82-87)
FRAMEWORK_INPUT_MAC_FILES="build/Release/lib${PROJECT}.a"
cp "$FRAMEWORK_INPUT_MAC_FILES" "$FRAMEWORK_DIR/Versions/Current/$FRAMEWORK_NAME"
3.在src文件夹中,每个框架都有一个XCode项目,每个项目都需要:
<UIKit/UIKit.h>
替换<Cocoa/Cocoa.h>
,[[UIDevice currentDevice] systemName]
替换为[[NSProcessInfo processInfo] operatingSystemVersionString]
< / LI>
为了让DynamoDB正常工作,我必须构建四个框架 - 这是相当轻松的