AWSAPIGateway 2.36.7

AWSAPIGateway 2.36.7

测试已测试
语言语言 Obj-CObjective C
许可证 NOASSERTION
发布时间上次发布时间2024年8月

AWS Mobile SDK ToolsAWS Amplify Swift Ops 维护。



  • Amazon Web Services

AWS SDK for iOS

Release CocoaPods Carthage compatible CircleCI Discord

AWS SDK for iOS 为开发者提供了库和文档,以便他们使用 AWS 构建连接的移动应用程序。

我们建议使用 AWS Amplify Library for Swift 的最新 v2 版本来快速实现常见的应用程序用例,如身份验证、存储、推送通知等,这些用例遵循 Swift 的模式,如 async/await。

注意:Swift Amplify Library 的 v2 版本(目前为 GA)建立在 AWS SDK for Swift 之上,并且仅提供对 AWS SDK for Swift 的访问,该 SDK 目前处于开发者预览阶段。您可以通过 AWS Amplify 的逃生舱访问此底层 SDK。

您可以访问 Swift Amplify Library 文档 以了解更多功能。您还可以使用 AWS Amplify 与 现有的 AWS 云资源。如果您在 Amplify 中找不到所需的功能,请向 Swift Amplify Library GitHub 仓库 提交问题,我们将乐意考虑您的请求。

如果您仍然希望直接使用 AWS SDK for iOS,请参阅 此处 AWS SDK 文档 并遵循下面的设置说明。您还可以查看 AWS SDK for iOS 示例仓库 中的示例应用程序。

设置

要开始使用 AWS SDK for iOS,请查看iOS 开发者指南。您可以设置 SDK 并开始创建新项目,或在现有项目中集成 SDK。您还可以运行示例以了解 SDK 的工作原理。

要使用 AWS SDK for iOS,您需要在您的开发机器上安装以下软件

  • Xcode 11.0 或更高版本
  • iOS 9 或更高版本

在现有应用程序中集成 iOS SDK

我们有一些示例应用程序,展示了如何使用 AWS SDK for iOS。请注意,这些示例应用程序中的代码不是生产质量,应被视为正是我们所称的:示例。

有几种方法可以集成 AWS Mobile SDK for iOS 到您的项目中

您应该只使用以下方法中的一种来导入 AWS Mobile SDK。以多种方式导入 SDK 会导致项目中将 SDK 加载多次,并引发编译器/链接器错误。

注:如果您在使用 XCFrameworks(即 Swift 包管理器、Carthage 或动态框架),某些模块的命名带有 XCF 后缀,以解决一个 Swift 问题AWSMobileClient 被命名为 AWSMobileClientXCF,而 AWSLocation 被命名为 AWSLocationXCF。要使用 AWSMobileClientAWSLocation SDK,请导入它们为以下格式:

import AWSMobileClientXCF
import AWSLocationXCF

并在您的应用程序代码中使用它,无需使用 XCF 后缀。

AWSMobileClient.default().initialize() 
let locationClient = AWSLocation.default()

Swift 包管理器

  1. Swift 包管理器与 Xcode 一起分发。要将 AWS SDK 添加到您的 iOS 项目中,请在 Xcode 中打开您的项目,选择 文件 > Swift 包 > 添加包依赖项

    Add package dependency

  2. 在搜索栏中输入 AWS SDK for iOS Swift 包管理器 GitHub 仓库的 URL(https://github.com/aws-amplify/aws-sdk-ios-spm),然后点击 下一步

    Search for repo

    注意: 此URL SDK的主URL。我们为该库在单独的仓库中维护Swift Package Manager的清单文件(Package.swift),这样使用SDK的应用不需要下载整个源代码仓库即可包含二进制目标。

  3. 您将看到Swift Package Manager要安装的SDK哪个版本。选择第一个规则,版本,并选择至下一个次版本,因为它将使用从main分支中检测到的最新兼容版本的依赖项,然后点击下一步

    Dependency version options

    注意: AWS Mobile SDK for iOS 不使用语义版本控制,可能在次版本发布中引入破坏性的API更改。我们建议将您的版本规则设置为至下一个次版本,并评估次版本发布以确保它们与您的应用兼容。

  4. 选择您要添加到项目的库。始终选择AWSCore SDK。要安装的其他SDK将根据您尝试安装的SDK有所不同。大多数SDK仅依赖AWSCore,但对于完整的依赖项列表,请参阅README-spm-support文件

    注意:由于与打包的二进制依赖项冲突,AWSLex当前不通过Swift Package Manager支持arm64架构。

    Select dependencies

    选择所有适当的库,然后点击完成

    您可以通过打开项目的Swift Packages选项卡来随时更改项目中包含的SPM包:点击Xcode导航器中的项目文件,然后点击您的项目图标,选择Swift Packages选项卡。

CocoaPods

  1. AWS Mobile SDK for iOS通过CocoaPods提供。如果您没有安装CocoaPods,请运行以下命令安装:

     $ gem install cocoapods
     $ pod setup
    

    根据您的系统设置,您可能需要使用sudo来安装cocoapods,如下所示:

     $ sudo gem install cocoapods
     $ pod setup
    
  2. 在您的项目目录(包含您的*.xcodeproj文件的目录)中,使用以下命令创建项目中的Podfile

     $ pod init
    
  3. 编辑Podfile以包含您想要集成到项目中的库。例如,如果您需要身份验证,您可以使用AWSMobileClient,如果您需要分析,请添加AWSPinpoint。因此,您的Podfile可能看起来像这样:

target 'YourTarget' do
    pod 'AWSMobileClient'
    pod 'AWSPinpoint'
end

有关我们的Pods的完整列表,请查阅此项目的根目录中的.podspec文件。

  1. 然后运行以下命令:

     $ pod install --repo-update
    
  2. 要打开您的项目,使用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

推荐使用 XCFrameworks

Carthage 支持 Xcode 12 或更高版本中的 XCFrameworks。以下步骤可使用 XCFrameworks 消费 AWS SDK for iOS:

  1. 安装 0.37.0 或更高版本的 Carthage。

  2. 在您的 Cartfile 中添加以下内容

     github "aws-amplify/aws-sdk-ios"
    
  3. 然后运行以下命令:

     $ carthage update --use-xcframeworks --no-use-binaries
    

从 Carthage 的发布说明中可以看到,从 Carthage 0.37.0 版本开始,不支持使用 XCFrameworks 的预编译二进制文件 - https://github.com/Carthage/Carthage/releases/tag/0.37.0

  1. 在您的应用目标的项目设置中,在“通用设置”选项卡的“嵌入的二进制文件”部分,将想使用的每个 xcframework 从磁盘上的 Carthage/Build 文件夹中拖放到其中。

不推荐使用包含“胖库”的 Frameworks

为了构建具有多个架构的二进制文件的特定平台框架束(Xcode 11 及以下版本)

  1. 安装最新的 Carthage 版本。

  2. 在您的 Cartfile 中添加以下内容

     github "aws-amplify/aws-sdk-ios"
    
  3. 然后运行以下命令:

     $ carthage update
    
  4. 在 Xcode 中打开项目后,选择您的 Target。在“通用”选项卡下,查找“框架、库和嵌入内容”,然后单击 + 按钮。

  5. 单击 添加其他... 按钮,然后在弹出菜单中单击“添加文件...”,然后导航到 Carthage > Build > iOS 下的 AWS<#ServiceName#>.framework 文件,并选中它们。如果提示,请不要选择“目标:如有需要则复制项”复选框。为特定的用例添加所需的框架。例如,如果您正在使用 AWSMobileClient 和 AWSPinpoint,则希望添加以下框架

    • AWSAuthCore.framework
    • AWSCognitoIdentityProvider.framework
    • AWSCognitoIdentityProviderASF.framework
    • AWSCore.framework
    • AWSMobileClient.framework
    • AWSPinpoint.framework
  6. Target 下的 构建阶段 标签中,单击左上角的 + 按钮,然后选择 新建运行脚本阶段。然后设置构建阶段如下。确保此阶段在 嵌入框架 阶段下方。

     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 版本需要与其相同;否则,您必须通过在 carthage update 命令中传递 --no-use-binaries 标志在您的机器上构建框架。

框架

XCFramework 设置

从 AWS SDK iOS 版本 2.22.1 开始,SDK 二进制文件以 XCFramework 的形式发布。按照以下步骤安装 XCFramework。

  1. 下载最新版本的 SDK,请访问 最新 SDK。旧的 SDK 版本可以从 https://releases.amplify.aws/aws-sdk-ios/aws-ios-sdk-#.#.#.zip 下载,其中 #.#.# 代表版本号。因此,对于版本 2.23.3,下载链接是 https://releases.amplify.aws/aws-sdk-ios/aws-ios-sdk-2.23.3.zip

注意1:如果您使用的是版本 < 2.22.1,请参阅下面的 "Legacy framework setup" 部分。注意2:要下载版本 < 2.23.3,请使用此链接 https://sdk-for-ios.amazonwebservices.com/aws-ios-sdk-#.#.#.zip

  1. 解压缩 ZIP 文件
  2. 在您的应用程序目标“通用”设置选项卡中,在嵌入的二进制文件部分,将每个要从下载文件夹中使用的 xcframework 拖动并放置其中。

旧框架设置

  1. 使用 https://sdk-for-ios.amazonwebservices.com/aws-ios-sdk-#.#.#.zip 下载所需的 SDK,其中 #.#.# 代表版本号。因此,对于版本 2.10.2,下载链接是 https://sdk-for-ios.amazonwebservices.com/aws-ios-sdk-2.10.2.zip

注意:如果您使用的是版本>2.22.0,请参阅上面的“XCFramework 设置”部分。

  1. 在 Xcode 中打开项目后,选择您的 目标。在 通用 选项卡下,找到 嵌入的二进制文件,然后单击 + 按钮。

  2. 点击 添加其他... 按钮,导航到 AWS<#ServiceName#>.framework 文件并选择它们。当提示时,勾选 目标:如有需要,复制项目 复选框。添加您特定用例所需的框架。例如,如果您正在使用 AWSMobileClient 和 AWSPinpoint,您将想要添加以下框架

    • AWSAuthCore.framework
    • AWSCognitoIdentityProvider.framework
    • AWSCognitoIdentityProviderASF.framework
    • AWSCore.framework
    • AWSMobileClient.framework
    • AWSPinpoint.framework
  3. Target 下的 构建阶段 标签中,单击左上角的 + 按钮,然后选择 新建运行脚本阶段。然后设置构建阶段如下。确保此阶段在 嵌入框架 阶段下方。

     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

  1. 在您的项目目录中运行以下命令。CocoaPods 会自动获取新更改。

     $ pod update
    

    注意:如果您的 pod 存在问题,您可以通过删除 Podfile.lockPods/,然后运行 pod install 来干净地安装 SDK。

    image

Carthage

  1. 在您的项目目录中运行以下命令。Carthage 会自动获取新更改。

     $ carthage update
    

框架

  1. 在 Xcode 的 项目导航器 中,键入 "AWS" 以找到您手动添加到项目的 AWS 框架或 XCFrameworks。选择所有 AWS 框架,然后在您的键盘上按 删除 键。然后选择 移动到废纸篓

  2. 按照上述安装过程添加 SDK 的新版本。

开始学习Swift

  1. 在应用代理中导入AWSCore头文件。

    import AWSCore
  2. 在应用代理方法的application:didFinishLaunchingWithOptions:中添加以下代码片段以创建默认服务配置。

    let credentialsProvider = AWSCognitoCredentialsProvider(
        regionType: CognitoRegionType,
        identityPoolId: CognitoIdentityPoolId)
    let configuration = AWSServiceConfiguration(
        region: DefaultServiceRegionType,
        credentialsProvider: credentialsProvider)
    AWSServiceManager.default().defaultServiceConfiguration = configuration
  3. 在您想要使用SDK的Swift文件中,导入您所使用服务的相应头文件。头文件导入约定为import AWSServiceName,如下例所示

    import AWSS3
    import AWSDynamoDB
    import AWSSQS
    import AWSSNS
  4. 调用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

  1. 在应用代理中导入AWSCore头文件。

    @import AWSCore;
  2. 在应用代理方法的application:didFinishLaunchingWithOptions:中添加以下代码片段以创建默认服务配置。

    AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:CognitoRegionType
                                                                                                    identityPoolId:CognitoIdentityPoolId];
    AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:DefaultServiceRegionType
                                                                         credentialsProvider:credentialsProvider];
    AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
  3. 导入您所使用服务的相应头文件。头文件导入约定为@import AWSServiceName;,如下例所示

    @import AWSS3;
    @import AWSDynamoDB;
    @import AWSSQS;
    @import AWSSNS;
  4. 调用AWS服务。

    AWSSNS *sns = [AWSSNS defaultSNS];
    AWSSNSListTopicsInput *listTopicsInput = [AWSSNSListTopicsInput new];
    [[sns listTopics:listTopicsInput] continueWithBlock:^id(AWSTask *task) {
        // Do something with the response
        return nil;
    }];

注意:大多数服务客户端类都有一个单例方法来获取默认客户端。命名约定为+ defaultSERVICENAME(例如,上面的代码片段中的+ defaultS3SNS)。此单例方法使用您在步骤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用户交流。

作者

Amazon Web Services

许可协议

有关更多信息,请参阅LICENSE文件。