AWSAuthUI 2.36.7

AWSAuthUI 2.36.7

测试已测试
Lang语言 Obj-CObjective C
许可证 NOASSERTION
发布上次发布2024年8月

AWS 移动 SDK 工具AWS Amplify Swift Ops维护。



 
依赖
AWSCore= 2.36.7
AWSAuthCore= 2.36.7
 

AWSAuthUI 2.36.7

  • 亚马逊网络服务

AWS SDK for iOS

Release CocoaPods Carthage compatible CircleCI Discord

The AWS SDK for iOS provides a library and documentation for developers to build connected mobile applications using AWS.

We recommend using the latest v2 version of AWS Amplify Library for Swift to quickly implement common app use cases like Authentication, Storage, Push Notifications and more that follow patterns idiomatic to Swift like async/await.

Note: v2 of Amplify Library for Swift (currently GA) is built on top of the AWS SDK for Swift and only provides access to the AWS SDK for Swift which is currently in developer preview. You can access this underlying SDK via the Escape Hatch from AWS Amplify.

You can head to the Amplify Library for Swift documentation to learn more about all the features. You can also use AWS Amplify with your existing AWS cloud resources. If you are unable to find features you are looking for in Amplify please open an issue in the Amplify Library for Swift GitHub repo and we will be happy to consider you request.

If you still wish to use the AWS SDK for iOS directly you can refer to the AWS SDK Documentation here and follow the setup instructions below. You can also look at sample apps in the AWS SDK for iOS Samples repo.

设置

要开始使用 iOS AWS SDK,请参阅iOS 开发者指南。您可以在新项目中设置 SDK 并开始构建,或者将 SDK 集成到现有项目中。您还可以运行示例来了解 SDK 的工作原理。

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

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

将 SDK for iOS 引入现有应用程序

我们有几个示例应用程序,展示了如何使用 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 包管理器

  1. Swift包管理器与Xcode一同分发。要将AWS SDK添加到您的iOS项目中,请在Xcode中打开您的项目,选择 文件 > Swift包 > 添加包依赖关系

    Add package dependency

  2. 在搜索栏中输入AWS SDK for iOS的Swift包管理器GitHub仓库的URL(https://github.com/aws-amplify/aws-sdk-ios-spm),然后点击 下一步

    Search for repo

    注意:此URL 不是 SDK的主URL。我们在此独立仓库中维护了这个库的Swift包管理器清单文件(Package.swift),以便使用SDK的应用程序无需下载整个源代码仓库即可消耗二进制目标。

  3. 您将看到Swift包管理器要安装的SDK版本的相关规则。选择第一个规则 版本,然后选择 至下一个次版本号,因为它将使用从main分支检测到的最新兼容版本,然后点击 下一步

    Dependency version options

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

  4. 选择您想要添加到项目中的库。始终选择 AWSCore SDK。安装的其余SDK将基于您要安装的SDK而有所不同。大多数SDK仅依赖于 AWSCore,但要看到完整的依赖列表,请参见 README-spm-support文件

    注意:由于与已打包的二进制依赖项冲突,AWSLex目前通过Swift包管理器支持arm64体系结构。

    Select dependencies

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

    您始终可以通过打开项目的Swift包标签来修改项目中包含的SPM包:在Xcode导航器中单击项目文件,然后单击项目图标,然后选择 Swift包 标签。

CocoaPods

  1. AWS Mobile SDK for iOS可以通过CocoaPods获取。如果您尚未安装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。按照以下步骤消费 AWS SDK for iOS 使用 XCFrameworks:

  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. 在应用程序目标的目标的“通用设置”选项卡中,在“嵌入的二进制文件”部分,从磁盘上的 Carthage/Build 文件夹拖放每个要使用的 xcframework。

带有“肥库”的 Frameworks(不推荐)

为了构建具有多个架构的二进制文件的特定平台 Framework Bundles (适用于 Xcode 11 及以下)

  1. 安装最新版本的 Carthage

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

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

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

  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 标志来在您的机器上构建框架。

框架

遗留框架设置

从 AWS SDK iOS 版本 2.22.1 开始,SDK 二进制文件作为 XCFrameworks 发布。按照以下步骤安装 XCFramework。

  1. 下载最新的 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 到 newer 版本

当 SDK 发布新版本时,您可以按照以下方式获取更改。

CocoaPods

  1. 在您的项目目录中运行以下命令。CocoaPods 会自动获取新的更改。

     $ pod update
    

    注意:如果您的 pod 存在问题,您可以删除 Podfile.lockPods/,然后运行 pod install 以干净地安装 SDK。

    image

Carthage

  1. 在您的项目目录中运行以下命令。Carthage 会自动获取新的更改。

     $ carthage update
    

Frameworks

  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

我们建议在发布到苹果应用商店之前将日志级别设置为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的其他用户交流。

作者

亚马逊网络服务

许可

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