AWSTranscribeStreaming 2.36.7

AWSTranscribeStreaming 2.36.7

AWS Mobile SDK ToolsAWS Amplify Swift Ops维护。



  • 亚马逊云服务

AWS SDK for iOS

Release CocoaPods Carthage compatible CircleCI Discord

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

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

注意: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 Packages > 添加包依赖

    Add package dependency

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

    Search for repo

    注意:此 URL 不是 SDK 的主 URL。我们在此库的维护 Swift 包管理器清单(Package.swift)文件在一个单独的仓库中,这样使用 SDK 的应用程序不需要下载整个源代码库,就只是为了消费二进制目标。

  3. 您将看到如何为要安装的SDK版本设置存储库规则。选择第一条规则版本,然后选择到下一个次要版本,因为这将使用可以从main分支检测到的最新兼容的依赖项版本,然后点击下一步

    Dependency version options

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

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

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

    Select dependencies

    选择所有适当的选项,然后点击< strong>完成

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

CocoaPods

  1. 您可以通过CocoaPods获取iOS的AWS移动SDK。如果您尚未安装CocoaPods,请运行以下命令安装CocoaPods。

     $ gem install cocoapods
     $ pod setup
    

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

     $ sudo gem install cocoapods
     $ pod setup
    
  2. 在您的项目目录(您的< code>*.xcodeproj文件所在的目录)中,运行以下命令以在项目中创建一个< code>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打开您项目目录中的新创建的< code>*.xcworkspace文件。您可以在项目文件夹中执行以下命令来完成此操作。

     $ xed .
    

    注意:< strong>不要使用< code>*.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,由于 Carthage 发布说明中提到的 - https://github.com/Carthage/Carthage/releases/tag/0.37.0 - 不支持使用 XCFrameworks 预构建的二进制文件

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

不推荐的“fat libraries”框架

要在二进制中构建具有多个架构的平台特定框架包(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. 在您的 TargetBuild 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,请访问 最新 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. 在应用程序目标的“General”设置选项卡中,“ Embedded Binaries”部分,从下载文件夹中拖放每个xcframework以使用。

Legacy 框架安装

  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 setup”部分。

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

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

    • AWSAuthCore.framework
    • AWSCognitoIdentityProvider.framework
    • AWSCognitoIdentityProviderASF.framework
    • AWSCore.framework
    • AWSMobileClient.framework
    • AWSPinpoint.framework
  3. 在您的 TargetBuild 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
    

    注意:如果您的pods遇到问题,可以删除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

以下提供了日志级别选项:

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

Objective-C

[AWSDDLog sharedInstance].logLevel = AWSDDLogLevelVerbose;

以下提供了日志级别选项:

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

我们建议在发布到Apple App Store之前将日志级别设置为关闭

定位日志输出

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的用户交流。

作者

亚马逊云服务

许可证

更多信息请参阅 LICENSE 文件。