AWSTextract 2.36.7

AWSTextract 2.36.7

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 的 Escape Hatch 访问此底层的 SDK。

您可以通过访问 Swift Amplify Library 文档 了解所有功能。您还可以使用 AWS Amplify 与 现有的 AWS 云资源 一起使用。如果您在 Amplify 中找不到所需的功能,请打开 Swift Amplify Library 的 GitHub 仓库中的 issue,我们将乐意考虑您的请求。

如果您仍然希望直接使用 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.swift),这样使用 SDK 的应用程序无需下载整个源代码仓库即可使用二进制目标。

  3. 您将看到指定版本的SDK的仓库规则,Swift包管理器将安装该版本。选择第一个规则,即版本,并选择直到下一个小版本,因为它将从main分支检测到的最新兼容依赖项版本。然后单击 下一步

    Dependency version options

    注意:iPhone的AWS移动SDK不使用语义版本控制,可能在小版本发布中引入破坏性API更改。我们建议将您的版本规则设置为直到下一个小版本,并评估小版本发布以确保与您的应用程序兼容。

  4. 请选择您要添加到项目的库。始终选择AWSCore SDK。要安装的其余SDK将根据您要安装的SDK而异。大多数SDK仅依赖于AWSCore,但关于完整依赖项列表,请参阅README-spm-support文件

    注意:由于与二进制依赖项冲突,目前通过Swift包管理器不支持在arm64架构上为AWSLex提供支持。

    Select dependencies

    选择所有合适的选项,然后单击完成

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

CocoaPods

  1. iPhone的AWS移动SDK可通过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)
    

Cardagine

XC框架(推荐)

Cardagine支持Xcode 12或以上版本的XC框架。按照以下步骤使用XC框架来摄入AWS SDK for iOS:

  1. 安装Cardagine 0.37.0或以上版本。

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

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

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

从Cardagine发布说明中可以看出,Carthage 0.37.0及以后版本不支持使用XC框架构建的预构建二进制文件,如所提及 - https://github.com/Carthage/Carthage/releases/tag/0.37.0

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

带有“fat库”的框架(不推荐)

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

  1. 安装Carthage的最新版本。

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

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

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

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

    • AWSAuthCore.framework
    • AWSCognitoIdentityProvider.framework
    • AWSCognitoIdentityProviderASF.framework
    • AWSCore.framework
    • AWSMobileClient.framework
    • AWSPinpoint.framework
  6. 在您的 Target 中的“Build Phases”选项卡下,点击左上角的 + 按钮,然后选择“New Run Script Phase”。然后按照以下方式设置构建阶段。请确保此阶段位于“Embed Frameworks”阶段下方。

     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 https://releases.amplify.aws/aws-sdk-ios/latest/aws-ios-sdk.zip。较旧版本的 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 中的“Build Phases”选项卡下,点击左上角的 + 按钮,然后选择“New Run Script Phase”。然后按照以下方式设置构建阶段。请确保此阶段位于“Embed Frameworks”阶段下方。

     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 框架或 XCFramework。选择所有 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)。此单例方法创建一个与服务配置 defaultServiceConfiguration 相关联的客户端,这是您在第 5 步中设置的,并保留对客户端的强引用。

使用 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)。此单例方法创建一个与服务配置 defaultServiceConfiguration 相关联的客户端,这是您在第 5 步中设置的,并保留对客户端的强引用。

与 AWSTask 一起工作

SDK在处理异步操作时会返回AWSTask对象,以避免阻塞UI线程。

AWSTask类是Bolts框架中BFTask的重命名版本。有关Bolts的完整文档,请参见Bolts-iOS仓库

日志

从本SDK的2.5.4版本开始,日志使用了灵活、快速的开源日志框架CocoaLumberjack。它支持许多功能,包括为输出目标设置不同的日志级别,例如,将简短的消息记录到控制台,将详细消息记录到日志文件。

CocoaLumberjack的日志级别是累加的,即当级别设置为verbose时,所有verbose级别以下的日志都会被记录。还可以设置自定义日志以满足您的需求。更多信息,请参见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文件。