AWSRekognition 2.36.7

AWSRekognition 2.36.7

测试已测试
Lang语言 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 中的面向异步/等待模式的 idiomatic。

注意:Swift Amplify Library 的 v2 版本(目前为 GA)建立在 AWS SDK for Swift 之上,并且仅提供对 AWS SDK for Swift 的访问,该 SDK 目前处于开发者预览阶段。您可以通过 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 样例仓库 中的示例应用程序。

设置

要开始使用 iOS AWS SDK,请查看iOS 开发者指南。您可以将 SDK 设置起来并开始创建新项目,或将 SDK 集成到现有项目中。您还可以运行示例来了解 SDK 的工作方式。

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

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

将 iOS SDK 包含到现有应用程序中

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

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

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

注意:如果您正在使用 XCFrameworks(例如,使用 Swift Package Manager、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 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 文件

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

    Select dependencies

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

    您可以随时通过打开项目的 Swift 包管理器标签来修改项目中包含的 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 以包括您想要集成到项目中的 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 版本开始,不再支持使用 XCFrameworks 构建的预构建二进制文件,如 Carthage 发布说明中所述 - https://github.com/Carthage/Carthage/releases/tag/0.37.0

  1. 在您的应用程序目标的“通用”设置选项卡中,在“嵌入的二进制文件”部分,从磁盘上的 Carthage/Build 文件夹拖放每个要使用的 xcframework 到此处。

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

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

  1. 安装 Carthage 的最新版本。

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

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

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

  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二进制文件以XCFrameworks的形式发布。按照以下步骤安装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 中设置的 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

以下是一些日志级别选项:

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

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

作者

亚马逊网络服务

许可证

更多信息请参阅《LICENSE》文件。