AWSLambda 2.36.7

AWSLambda 2.36.7

测试测试
语言语言 Obj-CObjective C
许可证 NOASSERTION
发布上次发布2024年8月

AWS Mobile SDK ToolsAWS Amplify Swift Ops维护。



AWSLambda 2.36.7

  • 亚马逊网络服务

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的Amplify Library v2(目前为GA)构建在AWS SDK for Swift的基础上,并且提供对当前处于开发者预览期的AWS SDK for Swift的访问。您可以通过AWS Amplify的Exit 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或更高版本

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

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

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

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

注意:如果您使用XCFrameworks(即Swift包管理器、Carthage或动态框架),某些模块会以XCF后缀命名,以解决Swift问题AWSMobileClient被命名为AWSMobileClientXCFAWSLocation被命名为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 包管理器 GitHub 仓库的 URL(https://github.com/aws-amplify/aws-sdk-ios-spm),然后点击 下一步

    Search for repo

    注意: 此 URL 并非 SDK 的主 URL。我们在此独立仓库中维护了此库的 Swift 包管理器清单文件(Package.swift),这样使用 SDK 的应用程序就不必下载整个源代码仓库,以获取二进制目标。

  3. 您将看到 Swift 包管理器安装 SDK 的版本规则。选择第一条规则,即 版本,并选择 最高可兼容的下一个小版本,因为它将使用可从 main 分支检测到的最新兼容依赖项版本,然后点击 下一步

    Dependency version options

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

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

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

    Select dependencies

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

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

CocoaPods

  1. AWS Mobile SDK for iOS 可通过 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

有关我们 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

枪架框架(推荐)

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
    

注意:目前,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。旧版本 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)。此单例方法创建一个具有 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

以下可供选择的日志级别选项:

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

作者

亚马逊网络服务

许可证

查看 LICENSE 文件以了解更多信息。