我需要为 MAC OS X 开发一个应用程序,可以将选定的文件上传到 Amazon Web Services。但是为此需要 Mac 版 AWS SDK。我在网上没有找到相关资源。请问是否可以修改 AWS SDK for iOS 以便在 Mac 上使用?
另外,AWS SDK 文档没有说明如何上传文件到 S3。有没有人有这方面的示例代码?
谢谢。
我需要为 MAC OS X 开发一个应用程序,可以将选定的文件上传到 Amazon Web Services。但是为此需要 Mac 版 AWS SDK。我在网上没有找到相关资源。请问是否可以修改 AWS SDK for iOS 以便在 Mac 上使用?
另外,AWS SDK 文档没有说明如何上传文件到 S3。有没有人有这方面的示例代码?
谢谢。
在之前的答案基础上,我fork并修改了AWS SDK for iOS 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存储桶的内容?祝好运。大多数所需的类甚至都没有列在文档中。而且,您必须在项目中包含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
}
'AWSCore/AWSCore.h'文件未找到
。我是否漏掉了什么?非常感谢! - Chris P我需要AWS SDK for Mac来支持为我的iOS应用程序预填充数据库,惊讶的是它并不存在(考虑到它将会与iOS版本非常相似,因此生成起来非常简单)。我下载了Amber提到的github MacOS SDK和AWS链接中提到的SDK。然而,两者都不能直接构建,所以我决定修改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.修改src/Scripts/Framework.sh - 这是所有AWS框架的构建工具 - 将所有四个xcodebuild行(30-39)替换为:
`xcodebuild -configuration Release -project "${PROJECT}.xcodeproj" -target "${PROJECT}" -sdk macosx10.9`
将lipo行(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项目,您需要:
为了使DynamoDB工作,我必须构建四个框架——这相当容易。
ASIHTTPRequest
。它是CFNetwork的包装器,易于使用。缺点是没有ARC支持,因此您必须自己处理内存管理...