AWSKinesisVideoSignaling 2.36.7

AWSKinesisVideoSignaling 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 连接的移动应用程序。

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

注意:Swift 的 Amplify Library 版本 2(目前为 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 仓库,我们将很高兴考虑您的请求。

如果您仍然想直接使用 AWS SDK for iOS,您可以查阅此处的 AWS SDK 文档,并遵循以下设置说明。您还可以查看 AWS SDK for iOS 示例仓库中的示例应用

设置

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

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

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

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

我们有一些示例应用程序,展示了如何使用AWS for iOS SDK。请注意,这些示例应用程序中的代码不具备生产质量,应被视为我们所说的“示例”。

有几种方法可以将AWS Mobile SDK for iOS集成到您的项目中

您应该使用其中一种方式来导入AWS Mobile SDK。以多种方式导入SDK将在项目中加载SDK的重复副本,并导致编译器/链接器错误。

注意:如果您正在使用XCFrameworks(即Swift包管理器、Carthage或动态框架),则某些模块以XCF后缀命名,以解决Swift问题AWSMobileClient命名为AWSMobileClientXCFAWSLocation命名为AWSLocationXCF。要使用AWSMobileClientAWSLocation SDK,按以下方式导入它们

import AWSMobileClientXCF
import AWSLocationXCF

并在应用程序代码中使用没有后缀的。

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 版本的存储库规则。选择第一个规则 版本,并选择 直到下一个 minor 版本,因为它将使用从 main 分支检测到的最新兼容依赖项版本,然后单击 下一步

    Dependency version options

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

  4. 选择要添加到您的项目的库。始终选择 AWSCore SDK。要安装的其他 SDK 依据您要安装的 SDK 而定。大多数 SDK 只需要 AWSCore,但要查看完整的依赖项列表,请参阅 README-spm-support 文件

    注意:由于与封装的二进制依赖项冲突,AWSLex 目前不支持通过 Swift Package Manager 使用 arm64 架构。

    Select dependencies

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

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

CocoaPods

  1. 通过 CocoaPods 获取 AWS iOS 移动 SDK。如果您尚未安装 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

有关我们 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 的预构建二进制文件,这在 Carthage 发布说明中已有提及 - https://github.com/Carthage/Carthage/releases/tag/0.37.0

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

带有 "fat libraries" 的框架(不推荐)

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

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

框架

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,下载链接是这里

注意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,下载链接是这里

注意:如果您使用的是版本>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

以下是对日志级别的可选项:

  • .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文件。