AWSMobileAnalytics 2.19.1

AWSMobileAnalytics 2.19.1

测试已测试
Lang语言 Obj-CObjective C
许可协议 NOASSERTION
发布最新版本2020年11月

AWS Mobile SDK ToolsAWS Amplify Swift Ops维护。



  • 亚马逊网络服务

AWS SDK for iOS

Release CocoaPods Carthage compatible CircleCI Discord

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

功能/API

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

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

设置

要开始使用 AWS SDK for iOS,请查看 iOS 开发者指南。您可以选择设置 SDK 并开始构建新项目,或者在现有项目中集成 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,请运行以下命令安装 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版本必须相同;否则,您必须通过向“carthage update”命令传递--no-use-binaries标志在您的机器上构建框架。

框架

  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可以将日志直接写入文件,或者作为一个与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的其他用户建立联系。

作者

亚马逊网络服务

许可证

更多信息请查看《LICENSE》文件。