AWS KinesisVideoArchivedMedia 2.36.7

AWS KinesisVideoArchivedMedia 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 的 idiom 诸如 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 示例仓库 中的示例应用程序。

设置

要开始使用 iOS 的 AWS SDK,请查看 iOS 开发指南。您可以设置 SDK 并开始构建新项目,或者将 SDK 集成到现有项目中。您还可以运行示例代码来了解 SDK 的工作方式。

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

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

在现有应用程序中包含 iOS SDK

我们提供了一些 示例应用程序,展示了如何使用 iOS 的 AWS SDK。请注意,这些示例应用程序中的代码不是产线级别的,应被视为示例代码。

有几种方法可以将 AWS 移动 SDK 集成到您的项目中

您应仅使用其中一种方式导入 AWS 移动 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 Package Manager GitHub 仓库的 URL(https://github.com/aws-amplify/aws-sdk-ios-spm)输入搜索栏,然后点击 下一步

    Search for repo

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

  3. 您将看到 SDK 的版本规则,用于选择 Swift 包管理器要安装的 SDK 版本。选择第一个规则,版本,然后选择 大于下一个小版本,这将使用从 main 分支检测到的最新兼容版本,然后点击 下一步

    Dependency version options

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

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

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

    Select dependencies

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

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

CocoaPods

  1. AWS Mobile SDK for iOS 通过 CocoaPods 提供。如果您尚未安装 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

有关所有 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,由于 Carthage 发布说明中提到不支持使用 XCFrameworks 的预构建二进制文件,因此不支持这种做法 - 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 > Build > 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
    

注意:目前,iOS AWS SDK 使用 Xcode 最新发布的版本构建 Carthage 二进制文件。为了使用预构建的二进制文件,您的 Xcode 版本需要与之相同;否则,您必须通过将 --no-use-binaries 标志传递给 carthage update 命令在自己的计算机上构建框架。

框架

XCFramework 设置

从 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创建服务客户端,并维持对客户端的强引用。

使用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 文件。