AWSCognitoAuth 2.36.7

AWSCognitoAuth 2.36.7

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

Maintained by AWS Mobile SDK Tools, AWS Amplify Swift Ops.



 
依赖
AWSCore= 2.36.7
AWSCognitoIdentityProviderASF= 2.36.7
 

  • 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 库的 v2 版本(目前为 GA)建立在 AWS SDK for Swift 之上,并且仅提供对 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 文档 并遵循以下 setup 指令。您还可以查看 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 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 版本的仓库规则。选择第一个规则 版本,并选择 至 next Minor,因为它将使用 main 分支中发现的最兼容依赖项的版本,然后点击 下一步

    Dependency version options

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

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

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

    Select dependencies

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

    您可以通过打开项目中 Swift Package 选项卡随时返回并修改项目中包含的 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。

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

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

  1. 安装最新的Carthage版本。

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

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

     $ carthage update
    
  4. 在Xcode中打开您的项目后,选择您的目标。在“常规”选项卡下,找到“框架、库和嵌入内容”,然后点击+按钮。

  5. 单击其他...按钮,然后在弹出的菜单中单击“添加文件...”,然后导航到Carthage > 建议构建 > 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. 点击《strong>添加其他...按钮,导航到AWS<#ServiceName#>。framework文件,并选择它们。在提示时,检查《strong>目标:如果需要,复制项目复选框。根据您的特定用例添加所需的框架。例如,如果您使用的是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

以下日志级别选项可用

  • .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

许可证

查看许可证文件获取更多信息。