AWSSageMakerRuntime 2.36.7

AWSSageMakerRuntime 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 中的异步/等待等 Swift 语言的模式。

注意:Swift Amplify Library 的 v2 版本(目前为 GA)建立在 AWS SDK for Swift 之上,并且仅提供对 Developer Preview 中的 AWS SDK for Swift 的访问。您可以通过 AWS Amplify 的 Escape Hatch 访问此基础 SDK。

您可以通过访问 AWS Amplify Library for Swift 文档 了解所有功能。您还可以使用 AWS Amplify 与 您现有的 AWS 云资源。如果您在 Amplify 中找不到所需的功能,请在本地的 AWS Amplify Library for Swift GitHub 仓库 中提交一个 issue,我们将很高兴考虑您的请求。

如果您仍然想直接使用 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 Package Manager、Carthage 或动态框架),则一些模块以 XCF 后缀命名,以解决一个Swift 问题AWSMobileClient 命名为 AWSMobileClientXCF,而 AWSLocation 命名为 AWSLocationXCF。要使用 AWSMobileClientAWSLocation SDK,以此方式导入

import AWSMobileClientXCF
import AWSLocationXCF

并在您的应用程序代码中使用它,无需使用 XCF 后缀。

AWSMobileClient.default().initialize() 
let locationClient = AWSLocation.default()

Swift Package Manager

  1. Swift Package Manager 与 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. 您将看到有关您希望 Swift Package Manager 安装哪个 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

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

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

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以包括您想整合到项目中的库。例如,如果您需要身份验证,您可以使用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. 在有项目打开的情况下,选择您的目标。在常规选项卡下,找到“框架、库和嵌入内容”,然后单击按钮+

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

作者

Amazon Web Services

许可协议

更多信息请参阅 LICENSE 文件。