AWSTranscribe 2.36.7

AWSTranscribe 2.36.7

AWS Mobile SDK 工具AWS 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 的访问。您可以通过 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 for iOS SDK,请查看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 Package Manager、Carthage 或动态框架),某些模块的名称后缀为 XCF,以解决Swift 问题。《AWSMobileClient》的名称为《AWSMobileClientXCF》,《AWSLocation》的名称为《AWSLocationXCF》。要使用《AWSMobileClient》或《AWSLocation》 SDK,请按照以下方式导入:

import AWSMobileClientXCF
import AWSLocationXCF

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

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

Swift 包管理器

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

    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. 您将看到 Swift 包管理器为要安装的 SDK 版本设置的仓库规则。选择第一个规则,即 版本,并选择 直到下一个次要版本,这样它将使用从 main 分支检测到的最新兼容版本,然后点击 下一步

    Dependency version options

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

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

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

    Select dependencies

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

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

CocoaPods

  1. 可以通过 CocoaPods 获取 AWS Mobile SDK for iOS。如果您尚未安装 CocoaPods,可以运行以下命令进行安装。

     $ gem install cocoapods
     $ pod setup
    

    根据您的系统设置,您可能需要在以下命令中添加 sudo 来安装 cocoapods

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

     $ pod init
    
  3. 编辑 podfile 以包含要集成到项目中的 pods。例如,如果您需要认证,可以使用 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 支持使用 XCFrameworks 在 Xcode 12 或更高版本中。按照以下步骤使用 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. 在您的应用程序目标的“通用”设置标签页中,在“嵌入的二进制文件”部分,将每个要使用的 xcframework 从磁盘上的 Carthage/Build 文件夹拖拽到其中。

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

为了构建具有多个架构的二进制文件的平台特定框架包(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
    

注意:当前,iOS AWS SDK 使用最新发布的 Xcode 版本构建 Carthage 二进制文件。要使用预构建的二进制文件,你的 Xcode 版本需要相同,否则你必须在机器上通过向 carthage update 命令传递 --no-use-binaries 标志来构建框架。

框架

XCFramework 设置

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

  1. 下载最新的 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. 在你的 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框架或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日志级别是累加的,因此当级别设置为详细级别时,都会记录低于详细级别的所有消息。还可以设置自定义日志以满足您的需求。有关更多信息,请参阅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

许可证

更多信息请参阅许可证文件。