AWSKinesis 2.36.7

AWSKinesis 2.36.7

测试已测试
Lang语言 Obj-CObjective C
许可协议 NOASSERTION
发布最新发布2024年8月

AWS Mobile SDK ToolsAWS Amplify Swift Ops维护。



AWSKinesis 2.36.7

  • 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 的异步/等待等惯用模式。

注意: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 SDK for iOS,请参阅 iOS 开发指南。您可以在新项目中设置 SDK 并开始构建,也可以将在现有项目中集成 SDK。您还可以运行示例以了解 SDK 的工作方式。

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

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

将 SDK 集成到现有应用程序中

我们有一些演示示例应用程序,展示了如何使用 AWS SDK for iOS。请注意,这些示例应用程序中的代码不是生产级别的,应被视为我们所说的:示例。

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

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

注意:如果您正在使用 XCFrameworks(即 Swift 包管理器、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 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. 您将看到选择 AWS SDK 版本的仓库规则。选择第一个规则 版本,并选择 至下一个次小版本,因为它将使用主分支中检测到的最新兼容版本,然后点击 下一步

    Dependency version options

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

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

    注意:由于与打包的二进制依赖项冲突,目前无法通过 Swift Package Manager 支持在 arm64 架构上使用 AWSLex。

    Select dependencies

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

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

CocoaPods

  1. AWS iOS 移动 SDK 通过 CocoaPods 提供。如果您尚未安装 CocoaPods,可以通过运行以下命令安装 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 支持在 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。

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

为了构建具有多个架构的特定平台的框架存档(Xcode 11 和以下版本)

  1. 安装最新版本的 Carthage

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

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

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

  5. 单击 添加其他... 按钮,然后在弹出菜单中单击“添加文件...”,然后导航到 Carthage > Build > iOS 下的 AWS<#ServiceName#>.framework 文件,并选择它们。如果提示,不要选择< strong> Destination: Copy items if needed 复选框。添加您特定用例所需的框架。例如,如果您正在使用 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 二进制文件作为 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,请参阅下面的“旧框架设置”部分。注意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框架或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)。此单例方法使用您在第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)。此单例方法使用您在第5步中设置的字段创建一个服务客户端并维持对客户端的强引用。

使用AWSTask

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

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

日志

截至本SDK的2.5.4版本,日志使用灵活、快速的开放源代码日志框架CocoaLumberjack。它支持多种功能,包括为每个输出目标设置日志级别,例如,将简短的消息记录到控制台,将详尽的消息记录到日志文件。

CocoaLumberjack的日志级别是累加的,因此当级别设置为详尽时,所有来自详尽级别以下的消息都会被记录。还可以设置自定义日志以满足您的需求。更多信息请参阅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的用户交流。

作者

Amazon Web Services

许可

更多详情请参阅 LICENSE 文件。