AWSConnect 2.36.7

AWSConnect 2.36.7

AWS Mobile SDK ToolsAWS Amplify Swift Ops 维护。



AWSConnect 2.36.7

  • Amazon Web Services

AWS SDK for iOS

Release CocoaPods Carthage compatible CircleCI Discord

AWS SDK for iOS 为开发者提供了构建使用 AWS 的连接式移动应用的库和文档。

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

注意:Swift Amplify Library 的 v2 版本(目前为 GA)基于 AWS SDK for Swift 构建,并且仅提供对 AWS SDK for Swift 的访问,后者目前处于开发者预览状态。您可以通过 AWS Amplify 的 Escape Hatch 访问此底层 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 中打开您的项目,然后选择 文件 > 快速包 > 添加快速包依赖

    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.swift),以一个单独的仓库行使,这样使用 SDK 的应用程序就不必下载整个源代码库以消费二进制目标。

  3. 您将看到 SDK 的版本规则,用于指定 Swift 包管理器应安装的 SDK 版本。选择第一个规则,版本,并选择 最高到下一个次要版本,因为它将使用从 main 分支检测到的最新兼容依赖项版本,然后单击 下一步

    Dependency version options

    注意:AWS 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标签。

  1. CocoaPods提供。如果您尚未安装CocoaPods,请运行以下命令安装CocoaPods:

     $ gem install cocoapods
     $ pod setup
    

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

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

     $ pod init
    
  3. 编辑podfile以包含您希望整合到项目中的pod。例如,如果您需要身份验证,您可以使用AWSMobileClient,如果您需要分析,您可以添加AWSPinpoint。因此,您的podfile可能如下所示:

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

要获取我们的完整pod列表,请查看此项目的根目录中的.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. 安装 Carthage 0.37.0 或更高版本。

  2. 将以下内容添加到您的 Cartfile

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

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

截至 Carthage 0.37.0,不支持使用 XCFrameworks 的预构建二进制文件,如 Carthage 发行说明中所述 - https://github.com/Carthage/Carthage/releases/tag/0.37.0

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

“胖库”框架(不推荐)

为了构建平台特定的框架包(Xcode 11 及以下版本),在二进制文件中使用多个架构

  1. 安装 Carthage 的最新版本。

  2. 将以下内容添加到您的 Cartfile

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

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

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

    • AWSAuthCore.framework
    • AWSCognitoIdentityProvider.framework
    • AWSCognitoIdentityProviderASF.framework
    • AWSCore.framework
    • AWSMobileClient.framework
    • AWSPinpoint.framework
  6. 在您的 目标构建阶段 选项卡下,单击左上角的 + 按钮,然后选择 新建运行脚本阶段。然后按照以下设置构建阶段。确保此阶段位于 嵌入框架 阶段之下。

     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 标志来在您的机器上构建框架。

框架

XCFrameork设置

从AWS SDK iOS版本2.22.1开始,SDK二进制文件以XCFrameworks形式发布。按照以下步骤安装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,请参阅下面的“旧框架设置”部分。注意事项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. 在您的 目标构建阶段 选项卡下,单击左上角的 + 按钮,然后选择 新建运行脚本阶段。然后按照以下设置构建阶段。确保此阶段位于 嵌入框架 阶段之下。

     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

以下是一些可用的日志级别选项

  • .关闭
  • .错误
  • .警告
  • .信息
  • .调试
  • .详细

Objective-C

[AWSDDLog sharedInstance].logLevel = AWSDDLogLevelVerbose;

以下是一些可用的日志级别选项

  • AWSDDLogLevelOff
  • AWSDDLogLevelError
  • AWSDDLogLevelWarning
  • AWSDDLogLevelInfo
  • AWSDDLogLevelDebug
  • AWSDDLogLevelVerbose

建议在发布到苹果应用商店之前将日志级别设置为关闭

定位日志输出

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

联系我们

访问我们的GitHub 问题页面提供反馈并与其他SDK用户交流。

作者

Amazon Web Services

许可协议

更多信息请参阅 LICENSE 文件。