AWSMachineLearning 2.36.7

AWSMachineLearning 2.36.7

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

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 的模式,如 async/await。

注意:Swift Amplify Library 的 v2 版本(目前为 GA)是基于AWS SDK for Swift 构建的,并且仅提供对 AWS SDK for Swift 的访问,该 SDK 目前处于开发者预览阶段。您可以通过 AWS Amplify 的逃生舱访问此底层 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 Package Manager、Carthage或动态框架),一些模块可能带有XCF后缀来解决Swift问题。《AWSMobileClient》被命名为《AWSMobileClientXCF》而《AWSLocation》被命名为《AWSLocationXCF》。要使用《AWSMobileClient》或《AWSLocation》 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 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. 您会看到Swift Package Manager安装SDK哪个版本的规则。选择第一个规则,版本,并选择更新至下一个次要版本,因为它将使用从main分支 detect到的最新兼容版本的依赖项,然后点击下一个

    Dependency version options

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

  4. 选择您要将哪些库添加到您的项目中。始终选择 SDK 的 AWSCore。要安装的其他 SDK 将取决于您尝试安装哪个 SDK。大部分 SDK 仅依赖于 AWSCore,但关于完整的依赖项列表,请参阅README-spm-support文件

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

    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以包含您想要集成到项目中的Pod。例如,如果您需要登录,可以使用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. 安装 0.37.0 或更高版本的 Carthage。

  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 到此处。

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

为了构建包含多个架构的二进制文件的平台特定框架包(Xcode 11 及以下版本)

  1. 安装最新版本的 Carthage

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

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

     $ carthage update
    
  4. 在 Xcode 中打开您的项目后,选择您的 Target。在 General 选项卡下,找到 Frameworks, Libraries, and Embedded Content,然后点击 + 按钮。

  5. 点击 Add Other... 按钮,然后在弹出菜单中选择 "Add Files...",然后导航到 Carthage > Build > iOS 下的 AWS<#ServiceName#>.framework 文件并选择它们。如果出现提示,不要勾选 Destination: Copy items if needed 复选框。为您的特定用例添加所需的框架。例如,如果您正在使用 AWSMobileClient 和 AWSPinpoint,您将想要添加以下框架

    • AWSAuthCore.framework
    • AWSCognitoIdentityProvider.framework
    • AWSCognitoIdentityProviderASF.framework
    • AWSCore.framework
    • AWSMobileClient.framework
    • AWSPinpoint.framework
  6. 在您的 Target 中,在 Build Phases 选项卡下,点击左上角的 + 按钮,然后选择 New Run Script Phase。然后按照以下设置创建构建阶段。确保此阶段位于 Embed Frameworks 阶段下方。

     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 for iOS从版本2.22.1开始,以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. 在您的 Target 中,在 Build Phases 选项卡下,点击左上角的 + 按钮,然后选择 New Run Script Phase。然后按照以下设置创建构建阶段。确保此阶段位于 Embed Frameworks 阶段下方。

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