AWSCognitoSync 2.19.1

AWSCognitoSync 2.19.1

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

AWS Mobile SDK 工具AWS Amplify Swift Ops 维护。



  • Amazon Web Services

AWS SDK for iOS

Release CocoaPods Carthage compatible CircleCI Discord

AWS SDK for iOS 为开发者提供了库和文档,使他们能够使用 AWS 开发连接型移动应用程序。

特性/API

  • 认证:为希望创建用户认证体验的开发者提供 API 和构建块。
  • 分析:轻松收集您应用的分析数据。分析数据包括用户会话以及其他您想在应用中跟踪的自定义事件。
  • API:在制作 HTTP 请求时提供简单解决方案。它提供与 AWS Signature Version 4 兼容的自动、轻量级签名过程。
  • 存储:提供了对公共、受保护或私有存储桶中您应用程序用户内容的简单管理机制。
  • 推送通知:允许您使用 Amazon Pinpoint 目标和活动管理支持将推送通知集成到您的应用中。
  • Pub/Sub:提供与云托管的消息导向中间件的连接。
  • 生成的 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。

将SDK for iOS集成到现有应用程序中

我们有一些示例应用程序,展示了如何使用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
    

注意:当前,iOS AWS SDK使用最新发布的Xcode版本构建Carthage二进制文件。要消费预构建的二进制文件,您的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
    

框架

  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可以将日志 направить в文件 или использоваться как Bibliothека, интегрирующаяся с консолью 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 文件。