KISSmetrics-iOS-SDK 2.3.1

KISSmetrics-iOS-SDK 2.3.1

测试已测试
Lang语言 Obj-CObjective C
许可证 Apache 2
发布上次发布2017年3月

Maintained by Will Rust, Percy Hanna, KM Dev.



  • By
  • kissmetrics

此工作空间包含用于构建 SDK 作为框架(KISSmetricsSDK.framework)和所需公共接口(KISSmetricsAPI.h)的源文件。此处的源文件不打算直接用于您的应用程序。

有关实现细节,请参阅:http://support.kissmetrics.com/article/show/ios-sdk-v2

框架项目设置

设置框架项目需要几个步骤,并且可能随 Xcode 版本的不同而有所不同。此处不列出所有步骤,请参考以下教程:http://blog.db-in.com/universal-framework-for-ios/

包含

在 AppDelegate 及您将会跟踪的所有类中导入 API 类

#import <KISSmetricsSDK/KISSmetricsAPI.h>

初始化

手动:(如果未使用 KISSmetricsAPI_options.m,则为必需)在应用程序代理的 didFinishLaunchingWithOptions 方法顶部添加

[KISSmetricsAPI sharedAPIWithKey:@"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"];

自动:(需要 KISSmetricsAPI_options.m)客户的设置,包括他们的 API 密钥,将存储在 KISSmetricsAPI_options.m 中。我们可以根据新 KM 产品设置期间所做的选择为他们构建此文件,并将其与 KISSmetricsAPI.framework 和 KISSmetricsAPI.h 一起交付。如果包含此文件,则将忽略使用 sharedAPIWithKey 初始化的尝试。即使提供的密钥与 KISSmetricsAPI_options.m 中设置的密钥不同。

测试

SDK 将支持 ARC/non-ARC 和 32bit/64bit 项目。此工作空间包含一个测试项目,可以直接针对构建文件运行应用程序集成测试。

文件组织

所有 API 文件都位于项目外的 KISSmetricsAPI 目录中。项目将链接到共享的 KISSmetricsAPI 目录。

样式

  • 私有变量 - 以下划线为前缀
  • 私有方法 - 以 kma_ 为前缀
  • 单元测试辅助方法 - 以 uth_ 为前缀

构建

  • 选择 KISSmetricsAPI 方案 > iPhone 模拟器运行
  • 选择 KISSmetricsSDK 方案 > iOS 设备运行
  • 选择 UniversaliOS 方案 > iOS 设备运行

你应该能在本仓库根目录中找到编译好的框架 KISSmetricsAPI.framework

32位和64位架构

为了支持arm64、arm7、arm7s,KISSmetricsAPI库的目标和UniversaliOS聚合目标需要针对iOS7和标准架构(包括64位,如armv7、armv7s、arm64)进行构建。为了确认这些架构包含在最终的框架构建中,请进入构建的KISSmetricsAPI.framework目录并运行

otool -V -f KISSmetricsSDK

日志记录

内部日志用于我们自己的目的。

请勿使用 NSLog,改用 KMALog,它可以通过KMALogVerbose来切换,在发布编译好的SDK时适用,且仅在DEBUG模式下有效。(见KMAMacros.c)

我们可能需要定义一个 KMAInfoLog,它将日志输出到我们客户方的开发者。这也应该有一个客户开发者可以控制的详细模式切换。

断言

我们的SDK在不为DEBUG时的所有情况下应友好地失败。使用 KMAAssert 而不是 NSAssert,以防止当客户的应用程序为发布构建时我们的SDK进行断言。

仅使用 KMAAssert 对于至关重要的警告给客户开发者。否则使用 NSLogKMAInfoLog(如果实现)。

测试

我们在单元和应用程序测试中使用OCMockito。 https://github.com/jonreid/OCMockito

KISSmetricsSDK_framework_builder 包含一组单元测试,但由于框架构建器不是一个应用程序,框架的应用程序测试是在 KISSmetricsSDK_buildFiles_arc_imp 下进行的。

你应该首先在 KISSmetricsSDK_buildFiles_arc_imp 中编写应用程序测试,而不是在每次更改SDK之间重新构建框架。

分类扩展

添加到我们SDK框架中的任何分类都必须使用一个独特名称,且其中每个方法也必须使用一个唯一的前言以避免与客户方开发者的分类冲突!

  • 请使用 KMA 作为类或常量前缀。
  • 对于任何公共分类方法,请使用 kmac_
  • 对于任何私有方法,请正常使用 kma_

维护

  1. 针对iOS的每个新版本运行所有测试。
  2. 随着新iOS设备和设备系列的开发,我们需要将它们添加到UIDevice+KMAHardware中。
  3. 确保更新KMAArchiver中的kKMAAPIUserAgent值。