AWS SDK for iOS
The AWS SDK for iOS provides a library and documentation for developers to build connected mobile applications using AWS.
特性 / API
- 身份验证: 为希望创建用户身份验证体验的开发者提供 API 和构建块。
- 分析: 简单收集您的应用分析数据。分析数据包括用户会话和其他您想追踪的应用中的自定义事件。
- API: 在进行 HTTP 请求时提供简单解决方案。它提供了一个自动的、轻量级的签名过程,符合 AWS 签名版本 4。
- 存储: 提供了一种简单机制,用于在公共、受保护或私有存储桶中管理您的应用的用户内容。
- 推送通知: 允许您通过 Amazon Pinpoint 目标和活动管理支持在您的应用中集成推送通知。
- 消息发布/订阅: 提供与云基消息中间件的连接。
- 生成的 AWS 服务接口: 提供与任何 AWS 服务的直接交互。
网站了解Amplify框架更多信息。
访问我们的设置
要开始使用AWS SDK for iOS,请查看iOS开发者指南。您可以为全新项目设置SDK,也可以将它集成到现有项目中。您还可以运行示例,了解SDK的工作方式。
为了使用AWS SDK for iOS,您需要在您的开发机器上安装以下内容
- Xcode 11.0或更高版本
- 大多数SDK需要iOS 8或更高版本。AWSCognitoAuth、AWSMobileClient和AWSTranscribeStreaming需要iOS 9。
在现有应用程序中包含iOS SDK
我们有一些示例应用程序展示了如何使用AWS SDK for iOS。请注意,这些示例应用程序中的代码不是生产级别,应被视为示例。
将AWS Mobile SDK for iOS集成到您的项目中有三种方法
您应该仅使用其中一种方法来导入AWS Mobile SDK。以多种方式导入SDK会在项目中加载SDK的重复副本,导致编译器和链接器错误。
CocoaPods
-
AWS Mobile SDK for iOS可以通过CocoaPods获得。如果您尚未安装CocoaPods,请运行以下命令进行安装
$ gem install cocoapods $ pod setup
根据您的系统设置,您可能需要使用
sudo
安装cocoapods
,如下所示$ sudo gem install cocoapods $ pod setup
-
在您的项目目录(即包含您的
*.xcodeproj
文件所在目录)中,运行以下命令以创建项目中的Podfile
。$ pod init
-
编辑 Podfile 以包含您想要整合到项目中的 pods。例如,如果您需要认证,可以使用 AWSMobileClient,如果您需要分析,请添加 AWSPinpoint。因此,您的 Podfile 可能看起来像这样
target 'YourTarget' do
pod 'AWSMobileClient'
pod 'AWSPinpoint'
end
关于我们所有 pods 的完整列表,请查看该项目根目录中的 .podspec 文件。
-
然后运行以下命令
$ pod install --repo-update
-
要打开项目,请使用 XCode 打开项目目录中的新生成的
*.xcworkspace
文件。您可以在项目文件夹中执行以下命令完成此操作$ xed .
注意:请不要使用
*.xcodeproj
。如果您打开项目文件而不是工作空间,则可能会收到以下错误ld: library not found for -lPods-AWSCore clang: error: linker command failed with exit code 1 (use -v to see invocation)
Carthage
-
安装最新版本的 Carthage。
-
将以下内容添加到您的
Cartfile
github "aws-amplify/aws-sdk-ios"
-
然后运行以下命令
$ carthage update
-
在 Xcode 中打开您的项目后,选择您的 目标。在 常规 选项卡下,找到 框架、库和嵌入式内容,然后单击 + 按钮。
-
单击 添加其他... 按钮,然后弹出菜单中“添加文件...”,接着导航到 Carthage > Build > iOS 目录下的
AWS<#ServiceName#>.framework
文件并选择它们。如果遇到提示,请不要勾选 目标:如有必要复制项目 复选框。按照您的特定用例添加所需的框架。例如,如果您正在使用 AWSMobileClient 和 AWSPinpoint,那么您将希望添加以下框架AWSAuthCore.framework
AWSCognitoIdentityProvider.framework
AWSCognitoIdentityProviderASF.framework
AWSCore.framework
AWSMobileClient.framework
AWSPinpoint.framework
-
在您的 目标 中的 构建阶段 选项卡下,点击左上角的 + 按钮,然后选择 新运行脚本阶段。然后按照以下方式设置构建阶段。确保这个阶段在
嵌入框架
阶段下面。Shell /bin/sh bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/AWSCore.framework/strip-frameworks.sh" Show environment variables in build log: Checked Run script only when installing: Not checked Input Files: Empty Output Files: Empty
注意:目前,AWS SDK for iOS 使用最新发布的 Xcode 版本构建 Carthage 二进制文件。要使用预构建的二进制文件,您需要在 Xcode 中设置相同版本的 Xcode。如果不是,您必须通过将
--no-use-binaries
标志传递给carthage update
命令来在您的计算机上构建框架。
框架
-
下载最新的 SDK。旧版本的 SDK 可以从
https://sdk-for-ios.amazonwebservices.com/aws-ios-sdk-#.#.#.zip
下载,其中#.#.#
代表版本号。因此,对于 2.10.2 版本,下载链接是 https://sdk-for-ios.amazonwebservices.com/aws-ios-sdk-2.10.2.zip。 -
在 Xcode 中打开您的项目后,选择您的 目标。在 常规 选项卡下,找到 嵌入的二进制文件,然后单击 + 按钮。
-
点击添加其他...按钮,导航到
AWS«ServiceName».framework
文件并选择它们。在提示时,勾选目的地:如有需要复制项目复选框。为您的特定用例添加所需的框架。例如,如果您正在使用AWSMobileClient和AWSPinpoint,则需要添加以下框架AWSAuthCore.framework
AWSCognitoIdentityProvider.framework
AWSCognitoIdentityProviderASF.framework
AWSCore.framework
AWSMobileClient.framework
AWSPinpoint.framework
-
在您的 目标 中的 构建阶段 选项卡下,点击左上角的 + 按钮,然后选择 新运行脚本阶段。然后按照以下方式设置构建阶段。确保这个阶段在
嵌入框架
阶段下面。Shell /bin/sh bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/AWSCore.framework/strip-frameworks.sh" Show environment variables in build log: Checked Run script only when installing: Not checked Input Files: Empty Output Files: Empty
更新到较新版本的SDK
当我们发布SDK的新版本时,您可以按照以下说明获取更改。
CocoaPods
-
在项目目录中运行以下命令。CocoaPods将自动拾取新的更改。
$ pod update
注意:如果您的Pod有问题,您可以删除
Podfile.lock
和Pods/
然后运行pod install
以干净地安装SDK。
Carthage
-
在项目目录中运行以下命令。Carthage将自动拾取新的更改。
$ carthage update
Frameworks
-
在Xcode的项目导航器中,键入"AWS"以找到手动添加到您的项目中的AWS框架。手动选择所有AWS框架,然后在键盘上按删除键。然后选择移动到垃圾箱。如果您正在遵循上述使用AWSMobileClient和AWSPinpoint的示例,您将删除
AWSAuthCore.framework
AWSCognitoIdentityProvider.framework
AWSCognitoIdentityProviderASF.framework
AWSCore.framework
AWSMobileClient.framework
AWSPinpoint.framework
-
按照上述安装过程来包含SDK的新版本。
Swift入门教程
-
在应用程序代理中导入AWSCore头。
import AWSCore
-
通过在
application:didFinishLaunchingWithOptions:
应用程序代理方法中添加以下代码片段来创建默认服务配置。let credentialsProvider = AWSCognitoCredentialsProvider( regionType: CognitoRegionType, identityPoolId: CognitoIdentityPoolId) let configuration = AWSServiceConfiguration( region: DefaultServiceRegionType, credentialsProvider: credentialsProvider) AWSServiceManager.default().defaultServiceConfiguration = configuration
-
在你想使用的SDK的Swift文件中,导入所使用服务的适当头文件。头文件导入约定为
import AWSServiceName
,如下面的例子所示import AWSS3 import AWSDynamoDB import AWSSQS import AWSSNS import AWSCognito
-
调用AWS服务。
let dynamoDB = AWSDynamoDB.default() let listTableInput = AWSDynamoDBListTablesInput() dynamoDB.listTables(listTableInput!).continueWith { (task:AWSTask<AWSDynamoDBListTablesOutput>) -> Any? in if let error = task.error as? NSError { print("Error occurred: \(error)") return nil } let listTablesOutput = task.result for tableName in listTablesOutput!.tableNames! { print("\(tableName)") } return nil }
注意:大多数服务客户端类都有一个单例方法来获取默认客户端。命名约定为+ defaultSERVICENAME
(例如,上面的代码片段中的+ defaultDynamoDB
)。此单例方法创建一个使用您在步骤5中设置的defaultServiceConfiguration
的客户端,并维护对客户端的强引用。
Objective-C入门教程
-
在应用程序代理中导入AWSCore头。
@import AWSCore;
-
通过在
application:didFinishLaunchingWithOptions:
应用程序代理方法中添加以下代码片段来创建默认服务配置。AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:CognitoRegionType identityPoolId:CognitoIdentityPoolId]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:DefaultServiceRegionType credentialsProvider:credentialsProvider]; AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
-
导入所使用服务的适当头文件。头文件导入约定为
@import AWSServiceName;
,如下面的例子所示@import AWSS3; @import AWSDynamoDB; @import AWSSQS; @import AWSSNS; @import AWSCognito;
-
调用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
的客户端,并维护对客户端的强引用。
使用AWSTask
SDK在执行异步操作时返回AWSTask
对象,以避免阻塞UI线程。
AWSTask类是Bolts框架中BFTask的重命名版本。有关Bolts的完整文档,请参阅Bolts-iOS仓库
日志记录
自从本SDK 2.5.4版本开始,日志记录采用的是CocoaLumberjack,这是一个灵活、快速的开源日志框架。它支持许多功能,包括为输出目标设置日志级别,例如,将简洁的消息记录到控制台,将详细消息记录到日志文件。
CocoaLumberjack的日志级别是累加的,这意味着当日志级别设置为详细时,所有低于详细级别的消息都会被记录。还可以设置自定义日志以满足需求。更多详细信息,请参阅CocoaLumberjack
更改日志级别
Swift
AWSDDLog.sharedInstance.logLevel = .verbose
以下日志级别选项可用:
.off
.error
.warning
.info
.debug
.verbose
Objective-C
[AWSDDLog sharedInstance].logLevel = AWSDDLogLevelVerbose;
以下日志级别选项可用:
AWSDDLogLevelOff
AWSDDLogLevelError
AWSDDLogLevelWarning
AWSDDLogLevelInfo
AWSDDLogLevelDebug
AWSDDLogLevelVerbose
我们建议在发布到Apple App Store之前将日志级别设置为Off
。
定位日志输出
CocoaLumberjack可以将日志输出到文件,或作为一个框架与Xcode控制台集成。
要初始化文件日志,请使用以下代码
Swift
let fileLogger: AWSDDFileLogger = AWSDDFileLogger() // File Logger
fileLogger.rollingFrequency = TimeInterval(60*60*24) // 24 hours
fileLogger.logFileManager.maximumNumberOfLogFiles = 7
AWSDDLog.add(fileLogger)
Objective-C
AWSDDFileLogger *fileLogger = [[AWSDDFileLogger alloc] init]; // File Logger
fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling
fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
[AWSDDLog addLogger:fileLogger];
要初始化Xcode控制台日志,请使用以下代码
Swift
AWSDDLog.add(AWSDDTTYLogger.sharedInstance) // TTY = Xcode console
Objective-C
[AWSDDLog addLogger:[AWSDDTTYLogger sharedInstance]]; // TTY = Xcode console
开源贡献
我们欢迎来自社区的任何贡献!在提交任何PR之前,请确保阅读我们的贡献指南这里。谢谢!<3
联系我们
访问我们的GitHub 问题 留言反馈并与SDK的其他用户建立联系。
作者
亚马逊网络服务
许可证
更多信息请参阅 许可证 文件。