AWSConnectParticipant 2.36.7

AWSConnectParticipant 2.36.7

AWS Mobile SDK ToolsAWS Amplify Swift Ops 维护。



  • 亚马逊网络服务(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 Library 的 v2 版本(目前处于GA状态)基于 AWS SDK for Swift 构建,并且仅提供对 AWS SDK for Swift 的访问,目前处于开发者预览状态。您可以通过 AWS Amplify 的 Escape Hatch 访问此基础 SDK。

您可以去 Swift Amplify Library 的文档 了解更多功能信息。您还可以使用 AWS Amplify 与 您现有的 AWS 云资源 一起使用。如果 Amplify 中找不到您正在寻找的功能,请在 Swift Amplify Library 的 GitHub 仓库 中创建一个问题,我们将很乐意考虑您的请求。

如果仍然希望直接使用 AWS SDK for iOS,请参阅此处 AWS SDK 文档 AWS SDK Documentation here 并按照以下设置说明执行。您还可以查看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包管理器与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. 您将看到哪些SDK版本的仓库规则。选择第一条规则,版本,并选择 Next Minor,它将使用从main分支可检测到的最新兼容版本,然后单击 Next

    Dependency version options

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

  4. 选择您想在项目中添加的库。始终选择AWSCore SDK。要安装的其他 SDK 将根据您尝试安装的 SDK 类型而变化。大多数 SDK 仅依赖 AWSCore,但对于完整的依赖列表,请参阅README-spm-support文件

    注意:由于与打包的二进制依赖冲突,Swift Package Manager currently 不支持通过 AWSLex 在 arm64 架构上。

    Select dependencies

    选择所有相关选项,然后点击完成

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

CocoaPods

  1. AWS Mobile SDK for iOS 可通过CocoaPods获取。如果您尚未安装CocoaPods,请运行以下命令安装CocoaPods:

     $ gem install cocoapods
     $ pod setup
    

    根据系统设置,您可能需要使用 sudo 来安装 cocoa pods,如下所示:

     $ 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

https://github.com/Carthage/Carthage/releases/tag/0.37.0 - 不支持使用XCFrameworks的预编译二进制文件

  1. 在您的应用程序目标的“常规”设置选项卡中,在“嵌入的框架二进制文件”部分,从磁盘上的Carthage/Build文件夹中拖放您希望使用的每个xcframework。

不推荐的带有“fat库”的框架

为了构建具有多个架构的平台的框架包,请使用以下方法(Xcode 11及以下版本)

  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版本需要与之相同,否则您需要通过传递到carthage update命令的--no-use-binaries标志在您的机器上构建框架。

框架

XCFramework 设置

从 AWS SDK iOS 版本 2.22.1 开始,SDK 二进制文件以 XCFramework 的形式发布。按照以下步骤安装 XCFramework:

  1. 下载最新的 SDK:[链接](https://releases.amplify.aws/aws-sdk-ios/latest/aws-ios-sdk.zip)。旧版本的 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,请使用此链接 [href](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 文件,并选择它们。在提示时,选择 Destination: 如果需要则复制项目 复选框。为您的特定用例添加所需的框架。例如,如果您正在使用 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 框架或 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. 你想要在Swift文件中使用SDK时,为你要使用的服务导入适当的头文件。头文件导入约定是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

开源贡献

我们欢迎社区提供任何形式的贡献!在提交任何Pull Request之前,请务必阅读我们的贡献指南这里。谢谢!<3

联系我们

访问我们的GitHub 问题 页面,留下反馈并与SDK的用户交流。

作者

亚马逊网络服务(Amazon Web Services)

许可证

请查看 LICENSE 文件以获取更多信息。