AWSCognitoIdentityProvider 2.36.7

AWSCognitoIdentityProvider 2.36.7

测试已测试
语言语言 Obj-CObjective C
许可 NOASSERTION
发布上次发布Aug 2024

AWS Mobile SDK ToolsAWS Amplify Swift Ops 维护。



 
依赖项
AWSCore= 2.36.7
AWSCognitoIdentityProviderASF= 2.36.7
 

  • Amazon Web Services

AWS SDK for iOS

Release CocoaPods Carthage compatible CircleCI Discord

为 iOS 提供的 AWS SDK 为开发者提供库和文档,以便他们可以构建连接到 AWS 的移动应用程序。

我们建议使用 AWS Amplify Library for Swift 的最新 v2 版本来快速实现认证、存储、推送通知等常用应用程序用例,这些用例遵循 Swift 的习俗模式,如 async/await。

注意:Swift Amplify Library 的 v2 版本(目前为 GA)建立在 AWS SDK for Swift 之上,并且仅提供对 AWS SDK for Swift 的访问,AWS SDK for Swift 目前处于开发者预览阶段。您可以通过 AWS Amplify 的逃生舱访问此基础 SDK。

您可以通过访问 Swift Amplify Library 文档 了解所有功能。您还可以使用 AWS Amplify 与 您现有的 AWS 云资源。如果找不到您需要的功能,请在 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》 被命名为 《AWSMobileClientXCF》,《AWSLocation》 被命名为 《AWSLocationXCF》。要使用 《AWSMobileClient》 或 《AWSLocation》 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. 您会看到用于希望 Swift Package Manager 安装哪个版本的 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 Packages 选项卡来随时返回并修改项目中包含的 SPM 包:在 Xcode 导航器中单击项目文件,然后单击您的项目图标,然后选择 Swift Packages 选项卡。

CocoaPods

  1. 您可以通过 CocoaPods 使用 iOS 的 AWS Mobile SDK。如果您还没有安装 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 发布说明中提到 - https://github.com/Carthage/Carthage/releases/tag/0.37.0 - 不支持使用 XCFrameworks 预编译的二进制文件。

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

不推荐的带有“胖库”的 frameworks

为了生成具有二进制中多个架构的特定平台 framework 打包(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. 在您的 Target构建阶段 选项卡中,点击左上角的 + 按钮,然后选择 新建 Run Script 阶段。然后设置构建阶段如下。确保此阶段位于 嵌入式框架 阶段之下。

     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. 点击 添加其他... 按钮,导航到 AWS<#ServiceName#>.framework 文件并选择它们。当提示时,勾选 目的:需要时复制项目 复选框。添加您特定用法中需要的框架。例如,如果您使用 AWSMobileClient 和 AWSPinpoint,您想要添加以下框架

    • AWSAuthCore.framework
    • AWSCognitoIdentityProvider.framework
    • AWSCognitoIdentityProviderASF.framework
    • AWSCore.framework
    • AWSMobileClient.framework
    • AWSPinpoint.framework
  3. 在您的 Target构建阶段 选项卡中,点击左上角的 + 按钮,然后选择 新建 Run Script 阶段。然后设置构建阶段如下。确保此阶段位于 嵌入式框架 阶段之下。

     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

以下日志级别选项可用

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

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

作者

Amazon Web Services

许可

有关更多信息,请查看LICENSE文件。