要开始使用 iPhone AWS SDK,您可以设置 SDK 并开始构建一个新的项目,或者您可以将 SDK 集成到现有的项目中。您还可以运行示例来了解 SDK 的工作方式。
iPhone AWS Mobile SDK 支持以下版本的软件
您可以查看 SDK 源代码。
这些 示例应用程序 是独立的模板,已经为您设置好了。您还可以将 iOS SDK 集成到现有的应用程序中。如果您有一个希望使用 AWS 的现有应用程序,有两种方法可以将 iPhone Mobile SDK 包含到您的项目中:
从我们的 AWS 移动 SDK 页面下载 SDK。SDK 存储在一个名为 aws-ios-sdk-#.#.#
的压缩文件存档中(其中 #.#.#
代表版本号,因此对于 2.0.0 版本,文件名为 aws-ios-sdk-2.0.0
)。
注意: AWSiOSSDKv2.framework 的大小大于 65MB;然而,在导入到项目中时,它不会为您的应用程序二进制文件添加超过 65MB,因为
只有您在应用程序中使用到的对象才包含在从框架到您的应用程序的二进制文件中的对象
AWSiOSSDKv2.framework 包含一个静态库,而库中的目标代码在构建时会集成到您的应用程序二进制文件中。当未使用 -ObjC
和 -all_load
链接器标志时,Xcode 足够智能,可以确定框架中哪些对象对您的应用程序是必要的,并只包括那些对象。《AWSiOSSDKv2.framework》是打包的,因此您不需要包括这些链接器标志。(如果您使用需要您包括 -ObjC
或 -all_load
链接器标志的第三方框架,您可以使用 -force_load
来代替包括这些框架。)
例如,如果您的应用仅使用Amazon DynamoDB,并不使用其他支持的服务,则您的应用将不会包括其他服务的目标代码。除非您使用框架中的每个对象,否则仅将框架代码的一部分包含到您的应用中。
框架包含五种架构,而设备上的应用最多需要三种。
我们当前为iOS的AWS Mobile SDK编译五个架构:armv7
、armv7s
、arm64
、i386
和x86_64
。如果您想优化应用以适应包括iPhone 6和iPhone 5S在内的64位设备,则需要使用arm64
支持来构建应用。AWS SDK for iOS支持的32位iOS设备使用armv7
和armv7s
架构。
64位iPhone模拟器使用x86_64
,32位模拟器使用i386
,因为它们在Mac上运行。我们支持这些架构,以便开发者可以在模拟器上运行我们的框架进行测试。x86_64
和i386
支持对测试至关重要,但代码对于App Store中的应用是不必要的。即使您使用了AWS Mobile SDK中的每个对象,您提交给苹果的应用中也不包括框架中约五分之二代码。
App Store中的应用已被压缩。
将您的应用提交给苹果后,它将被加密以保护DRM,并重新压缩。这导致更小的尺寸。
在Xcode中打开您的项目后,按住Control键单击框架,然后单击“添加文件到“项目名称“...”。
在Finder中,导航到AWS<#ServiceName#>.framework
文件,并选择它们。
AWSCore.framework
AWSAutoScaling.framework
AWSCloudWatch.framework
AWSDynamoDB.framework
AWSEC2.framework
AWSElasticLoadBalancing.framework
AWSIoT.framework
AWSKinesis.framework
AWSLambda.framework
AWSMachineLearning.framework
AWSMobileAnalytics.framework
AWSS3.framework
AWSSES.framework
AWSSimpleDB.framework
AWSSNS.framework
AWSSQS.framework
extras/AWSCognito.framework
- 用于Amazon Cognito Sync更新目标项目,选择构建阶段,展开链接二进制与库,单击+按钮,并添加libsqlite3.tbd
、libz.tbd
、CFNetwork.framework
、Security.framework
、SystemConfiguration.framework
和UIKit.framework
。
当我们发布SDK的新版本时,您可以按照以下方法获取更改。
在Xcode中选择以下框架,然后按键盘上的删除键。然后选择移动到废纸篓。
AWSCore.framework
AWSAutoScaling.framework
AWSCloudWatch.framework
AWSDynamoDB.framework
AWSEC2.framework
AWSElasticLoadBalancing.framework
AWSIoT.framework
AWSKinesis.framework
AWSLambda.framework
AWSMachineLearning.framework
AWSMobileAnalytics.framework
AWSS3.framework
AWSSES.framework
AWSSimpleDB.framework
AWSSNS.framework
AWSSQS.framework
AWSCognito.framework
按照上述安装过程包括SDK的新版本。
iOS 9的发布包括一些可能影响您的应用与某些AWS服务交互的更改。如果您使用Apple的iOS 9 SDK(或Xcode 7)编译您的应用,Apple的App Transport Security (ATS)功能可能会影响应用连接到某些AWS服务端点的功能。为了确保受影响的继续成功连接到AWS端点,您需要配置它们以通过向info.plist
文件添加这些属性来适当地与Apple的ATS交互。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>amazonaws.com</key>
<dict>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
<key>amazonaws.com.cn</key>
<dict>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.0</string>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
如果您受到此问题的影响,需要了解如何进行识别和解决,请按照AWS开发者指南中的说明操作。
使用Xcode创建一个Objective-C桥接头文件。
在桥接头中,导入您使用的服务的适当头文件。头文件导入约定为#import "<AWSServiceName/AWSServiceName.h>"
,以下是示例
#import <AWSCore/AWSCore.h>
#import <AWSS3/AWSS3.h>
#import <AWSDynamoDB/AWSDynamoDB.h>
#import <AWSSQS/AWSSQS.h>
#import <AWSSNS/AWSSNS.h>
#import <AWSCognito/AWSCognito.h>
从您的目标 > 编译设置 > Objective-C桥接头,将Objective-C桥接头指向您刚才创建的桥接头。
在application:didFinishLaunchingWithOptions:
应用程序代理方法中添加以下代码片段以创建默认服务配置。
let credentialsProvider = AWSCognitoCredentialsProvider(
regionType: CognitoRegionType,
identityPoolId: CognitoIdentityPoolId)
let configuration = AWSServiceConfiguration(
region: DefaultServiceRegionType,
credentialsProvider: credentialsProvider)
AWSServiceManager.defaultServiceManager().defaultServiceConfiguration = configuration
调用AWS服务。
let dynamoDB = AWSDynamoDB.defaultDynamoDB()
let listTableInput = AWSDynamoDBListTablesInput()
dynamoDB.listTables(listTableInput).continueWithBlock{ (task: AWSTask!) -> AnyObject? in
if let error = task.error {
print("Error occurred: \(error)")
return nil
}
let listTablesOutput = task.result as AWSDynamoDBListTablesOutput
for tableName : AnyObject in listTablesOutput.tableNames {
print("\(tableName)")
}
return nil
}
注意:大多数服务客户端类都有一个单例方法来获取默认客户端。命名约定为+ defaultSERVICENAME
(例如,在上面的代码片段中为+ defaultDynamoDB
)。此单例方法使用在步骤5中设置的defaultServiceConfiguration
创建服务客户端,并维持对客户端的强引用。
在应用程序代理中导入AWSCore头文件。
#import <AWSCore/AWSCore.h>
在application:didFinishLaunchingWithOptions:
应用程序代理方法中添加以下代码片段以创建默认服务配置。
AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:CognitoRegionType
identityPoolId:CognitoIdentityPoolId];
AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:DefaultServiceRegionType
credentialsProvider:credentialsProvider];
AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
导入您使用的服务的适当头文件。头文件导入约定为#import "<AWSServiceName/AWSServiceName.h>"
,以下是示例
#import <AWSCore/AWSCore.h>
#import <AWSS3/AWSS3.h>
#import <AWSDynamoDB/AWSDynamoDB.h>
#import <AWSSQS/AWSSQS.h>
#import <AWSSNS/AWSSNS.h>
#import <AWSCognito/AWSCognito.h>
调用AWS服务。
AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
uploadRequest.bucket = yourBucket;
uploadRequest.key = yourKey;
uploadRequest.body = yourDataURL;
uploadRequest.contentLength = [NSNumber numberWithUnsignedLongLong:fileSize];
[[transferManager upload:uploadRequest] continueWithBlock:^id(AWSTask *task) {
// Do something with the response
return nil;
}];
注意:大多数服务客户端类都有一个单例方法来获取默认客户端。命名约定为+ defaultSERVICENAME
(例如,在上面的代码片段中为+ defaultS3TransferManager
)。此单例方法使用在步骤5中设置的defaultServiceConfiguration
创建服务客户端,并维持对客户端的强引用。
iOS SDK中的原生AWSTask支持可以让您链接异步请求而不是嵌套它们,这使逻辑更清晰,同时使代码更易于阅读。阅读这篇博客文章了解如何使用AWSTask。
在开发过程中更改日志级别可能会使调试更容易。您可以通过导入AWSCore.h并调用以下方法来更改日志级别:
Swift
AWSLogger.defaultLogger().logLevel = .Verbose
以下是一些日志级别选项:
None
Error
(这是默认设置。只打印错误日志到控制台。)Warn
Info
Debug
Verbose
Objective-C
[AWSLogger defaultLogger].logLevel = AWSLogLevelVerbose;
以下是一些日志级别选项:
AWSLogLevelNone
AWSLogLevelError
(这是默认设置。只打印错误日志到控制台。)AWSLogLevelWarn
AWSLogLevelInfo
AWSLogLevelDebug
AWSLogLevelVerbose
AWS SDK for iOS包括了一些示例应用,演示了常见用例。
此示例演示了如何通过Facebook、Google和登录亚马逊等登录提供者安全地管理和同步您的移动应用数据以及创建唯一标识。
该示例演示了如何使用 DynamoDB 对象映射插入/更新/删除/查询项目。
该示例演示了如何使用 S3 转发管理器同时上传/下载多个文件。它还显示如何暂停、恢复和取消上传/下载文件。
该示例演示了如何使用 Amazon S3 预签名 URL 构造函数在后台下载/上传文件。
该示例演示了如何设置 Amazon SNS 移动推送并通过 Amazon 移动分析记录事件。
该示例演示了如何使用 AWS IoT 发布和订阅数据。
该示例演示了使用 Cognito 认证访问设备阴影;它与 AWS IoT 嵌入式设备 JavaScript SDK 中的温度控制示例程序协同工作。
Apple iOS版的AWS移动SDK压缩文件包含DocSets格式的文档,您可以在Xcode内查看。安装文档的最简单方法是使用Mac OS X终端。
打开Mac OS X终端,打开包含展开存档的目录。例如
$ cd ~/Downloads/aws-ios-sdk-2.0.0
注意:请记住把上面示例中的2.0.0替换成您实际下载的AWS iOS SDK的实际版本号。
创建一个名为~/Library/Developer/Shared/Documentation/DocSets
的目录
$ mkdir -p ~/Library/Developer/Shared/Documentation/DocSets
将SDK安装文件中的Documentation/com.amazon.aws.ios.docset
(或移动)到上一步创建的目录中
$ mv Documentation/com.amazon.aws.ios.docset ~/Library/Developer/Shared/Documentation/DocSets/
如果在执行此过程时Xcode正在运行,请重新启动Xcode。要浏览文档,请转到帮助,点击文档和API参考,然后选择AWS SDK for iOS v2.0 文档(其中'2.0'是适当的版本号)。
访问我们的GitHub 问题留言反馈并与SDK的其他用户建立联系。
亚马逊网络服务
AWS移动SDK for iOS使用Apache许可证提供。有关更多信息,请参阅LICENSE
文件。