AWSCognito 2.19.1

AWSCognito 2.19.1

测试已测试
语言语言 Obj-CObjective C
许可证 NOASSERTION
发布上次发布2020年11月

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



AWSCognito 2.19.1

  • 亚马逊网络服务

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.

特性 / API

  • 身份验证: 为希望创建用户身份验证体验的开发者提供 API 和构建块。
  • 分析: 简单收集您的应用分析数据。分析数据包括用户会话和其他您想追踪的应用中的自定义事件。
  • API: 在进行 HTTP 请求时提供简单解决方案。它提供了一个自动的、轻量级的签名过程,符合 AWS 签名版本 4。
  • 存储: 提供了一种简单机制,用于在公共、受保护或私有存储桶中管理您的应用的用户内容。
  • 推送通知: 允许您通过 Amazon Pinpoint 目标和活动管理支持在您的应用中集成推送通知。
  • 消息发布/订阅: 提供与云基消息中间件的连接。
  • 生成的 AWS 服务接口: 提供与任何 AWS 服务的直接交互。

访问我们的网站了解Amplify框架更多信息。

设置

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

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

  • Xcode 11.0或更高版本
  • 大多数SDK需要iOS 8或更高版本。AWSCognitoAuth、AWSMobileClient和AWSTranscribeStreaming需要iOS 9。

在现有应用程序中包含iOS SDK

我们有一些示例应用程序展示了如何使用AWS SDK for iOS。请注意,这些示例应用程序中的代码不是生产级别,应被视为示例。

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

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

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

  1. 安装最新版本的 Carthage

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

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

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

  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 中设置相同版本的 Xcode。如果不是,您必须通过将 --no-use-binaries 标志传递给 carthage update 命令来在您的计算机上构建框架。

框架

  1. 下载最新的 SDK。旧版本的 SDK 可以从 https://sdk-for-ios.amazonwebservices.com/aws-ios-sdk-#.#.#.zip 下载,其中 #.#.# 代表版本号。因此,对于 2.10.2 版本,下载链接是 https://sdk-for-ios.amazonwebservices.com/aws-ios-sdk-2.10.2.zip

  2. 在 Xcode 中打开您的项目后,选择您的 目标。在 常规 选项卡下,找到 嵌入的二进制文件,然后单击 + 按钮。

  3. 点击添加其他...按钮,导航到AWS«ServiceName».framework文件并选择它们。在提示时,勾选目的地:如有需要复制项目复选框。为您的特定用例添加所需的框架。例如,如果您正在使用AWSMobileClient和AWSPinpoint,则需要添加以下框架

    • AWSAuthCore.framework
    • AWSCognitoIdentityProvider.framework
    • AWSCognitoIdentityProviderASF.framework
    • AWSCore.framework
    • AWSMobileClient.framework
    • AWSPinpoint.framework
  4. 在您的 目标 中的 构建阶段 选项卡下,点击左上角的 + 按钮,然后选择 新运行脚本阶段。然后按照以下方式设置构建阶段。确保这个阶段在 嵌入框架 阶段下面。

     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
    

Frameworks

  1. 在Xcode的项目导航器中,键入"AWS"以找到手动添加到您的项目中的AWS框架。手动选择所有AWS框架,然后在键盘上按删除键。然后选择移动到垃圾箱。如果您正在遵循上述使用AWSMobileClient和AWSPinpoint的示例,您将删除

    • AWSAuthCore.framework
    • AWSCognitoIdentityProvider.framework
    • AWSCognitoIdentityProviderASF.framework
    • AWSCore.framework
    • AWSMobileClient.framework
    • AWSPinpoint.framework
  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
    import AWSCognito
  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;
    @import AWSCognito;
  4. 调用AWS服务。

    AWSS3TransferManager *transferManager = [AWSS3TransferManager defaultS3TransferManager];
    AWSS3TransferManagerUploadRequest *uploadRequest = [AWSS3TransferManagerUploadRequest new];
    uploadRequest.bucket = yourBucket;
    uploadRequest.key = yourKey;
    uploadRequest.body = yourDataURL;
    uploadRequest.contentLength = [NSNumber numberWithUnsignedLongLong:fileSize];
    
    [[transferManager upload:uploadRequest] continueWithBlock:^id(AWSTask *task) {
        // Do something with the response
        return nil;
    }];

注意:大多数服务客户端类都有一个单例方法来获取默认客户端。命名约定为+ defaultSERVICENAME(例如,上面的代码片段中的+ defaultS3TransferManager)。此单例方法创建一个使用您在步骤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的其他用户建立联系。

作者

亚马逊网络服务

许可证

更多信息请参阅 许可证 文件。