AWSCloudWatch 2.36.7

AWSCloudWatch 2.36.7

测试已测试
语言语言 Obj-CObjective C
许可证 NOASSERTION
发布最后发布2024 年 8 月

AWS Mobile SDK ToolsAWS Amplify Swift Ops 维护。



  • 亚马逊网络服务

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 idiomatic模式的。

注意:Swift Amplify Library 的 v2 版本(目前为 GA)建立在 AWS SDK for Swift 之上,并且只提供对 AWS SDK for Swift 的访问,AWS SDK for Swift 目前处于开发者预览状态。您可以通过 AWS Amplify 的 Escape Hatch 访问此基础 SDK。

您可以访问 Swift Amplify Library 的文档 了解所有功能。您还可以使用 AWS Amplify 与 现有的 AWS 云资源。如果您在 Amplify 中找不到所需的功能,请在一个 AWS Amplify for Swift 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 Manager 清单文件(Package.swift),目的是使使用该 SDK 的应用程序无需下载整个源代码仓库就可以消费二进制目标。

  3. 您将看到关于要安装哪个 SDK 版本的仓库规则。选择第一个规则,版本,选择 到下一个次要版本,因为它将使用可从 main 分支检测到的最新兼容版本,然后点击 下一步

    Dependency version options

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

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

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

    Select dependencies

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

    您始终可以返回并修改项目中包含的 SPM 包,方法是在项目中打开 Swift Packages 选项卡:在 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 支持 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。

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

要构建具有多个架构的二进制文件的平台特定框架包(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 版本必须相同,否则您需要通过在 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,请参阅下方的“旧版框架配置”部分。注意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
    

    注意:如果您的项目出现问题,您可以删除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)。这个单例方法用一个带有 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

以下日志级别选项可用

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

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

开源贡献

我们欢迎来自社区的所有贡献!在提交任何拉取请求之前,请确保阅读我们的贡献指南 [在这里](./CONTRIBUTING.md)。谢谢!<3

联系我们

访问我们的GitHub 问题 页面留下反馈,并与 SDK 用户提供联系。

作者

亚马逊网络服务

许可证

查看 LICENSE 文件获取更多信息。