| 测试已测试 | ✓ |
| 语言语言 | SwiftSwift |
| 许可证 | MIT |
| 发布最后发布 | 2017年4月 |
| SwiftSwift 版本 | 3 |
| SPM支持 SPM | ✗ |
由 Elmar Tampe 及 Alexander Belonogov 维护。
Door2Door 移动分析的 无依赖 iOS SDK。
## 目录
事件收集 API 封装器可用于 Swift 3.x 及以上版本以及 Objective-C。它还与某些依赖关系管理器兼容。SDK 可用于以下:
Swift 3.xObjective-CCocoapodsXcode 项目 制造在项目中示例项目:请检查示例项目以了解如何实现 SDK ,设置它,创建一个事件并将其发送到后端。有一个为 Objective-C 实现的示例项目,另一个为基于 Swift 的实现。
要将 D2DEventCollectionKit 集成到项目中,项目至少需要以下两个构建配置:a.) 调试 和 b.) 发布。如有需要,可添加更多,但至少应该有并使用这两个。
选择将 SDK 集成到项目中的方式。
###2.1 CocoaPods
CocoaPods 是 Cocoa 项目的依赖关系管理器。可以使用以下命令安装
$ gem install cocoapods
要使用 CocoaPods 将 D2DEventCollectionKit 集成到 Xcode 项目中,请将其指定在 Podfile 中
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!
target '<Your Target Name>' do
pod 'D2DEventCollectionKit', '~> 0.1.1'
end
然后运行以下命令
$ pod install
###2.2 手动设置 要在不使用任何依赖关系管理器的情况下使用 SDK,请将 D2DEventCollectionKit.xcodeproj 文件拖放到需要提供的功能的项目中。转到项目设置,并将 目标依赖项、与库链接二进制文件 和 框架路径映射 设置如下面的图片所示。为所有使用到的目标设置这些设置。
在 构建设置 中添加一组用户定义的变量(通过顶部的+符号添加),并将其命名为 FRAMEWORK_PATH_MAPPING,如下例所示。在右侧,可以用于映射的给定构建配置有:发布 和 调试。
右侧显示了 构建配置。这些需要逐一映射到SDK使用的预定义配置。
如果项目的环境变量不是使用Xcode的默认设置,则此步骤是推荐的。如果项目在Xcode的预定义设置中运行,则无需其他操作。注意:如果使用多个不同的目标,则必须在每个目标的层面上指定每个设置。
完成上述操作后,为映射添加以下变量:框架搜索路径,并添加以下条目
设置:$(BUILD_DIR)/$(FRAMEWORK_PATH_MAPPING)$(EFFECTIVE_PLATFORM_NAME)
现在转到 ApplicationDelegate 并添加模块导入语句 import D2DEventCollectionKit。就这样。
祝您集成愉快!
在将兼容的依赖管理器集成后,SDK即可使用。设置起来相当简单。这同样适用于使用Objective-C时使用SDK。D2DEventCollectionKitDemoObjc 演示了Objective-C的集成过程。
###设置
在应用程序代理中实现以下内容
EventCollectionKit.register(applicationToken: "YOUR_APP_TOKEN_GOES_HERE",
applicationName: "Your application name",
applicationVersion: "1.0")
按照此步骤,可以启用/禁用调试输出。默认情况下,调试输出是禁用的。
EventCollectionKit.enable(logging: true)
创建和发送事件很简单。要为具有 search 操作的 route 创建事件,请使用 TripEvent 对象上的方便方法。如下例所示。
注意: 要尽可能精确,建议提供用于跟踪的 latitude 和 longitude 的坐标数据。如果无法提供这两个字段的实际数据,则在每个字段中输入 0.0 并指定 address 字段。
let tripSearchEvent = TripEvent.tripSearchEvent(modesOfTransportation:[.train, .taxi],
departureTime: Date(),
originLatitude: 52.5230554,
originLongitude: 13.4122575,
originName: "Alexanderplatz",
originStreet: "Alexanderplatz",
originCity: "Berlin",
originPostalCode: "10119",
originCountry: "Germany",
arrivalTime: nil,
destinationLatitude: 52.5300641,
destinationLongitude: 13.4008385,
destinationName: "Door2Door HQ",
destinationStreet: "Torstrasse 109",
destinationCity: "Berlin",
destinationPostalCode: "10178",
destinationCountry: "Germany")
在创建事件后,必须使用 EventCollectionKit 的 send: 函数发送它。就这样。可以在SDK本身或参考部分中找到事件及其参数定义的列表。
EventCollectionKit.send(event: tripSearchEvent)
为了使SDK尽可能易于使用,已将可能的事件类型映射到 TripEvent 类型的类函数。一个 TripEvent 可以附加多个操作,从而定义旅行的状态。以下列表显示了现有操作及其便于使用的对应类函数。
由于SDK支持Swift和Objective-C,每个事件将实现两个类函数。一个是针对Swift的,一个是针对Objective-C的。当使用Swift时,可以选择任何一个,但鼓励使用具有类型签名的函数,其中modesOfTransportation的类型为[ModesOfTransportation]。Objective-C实现使用其类型为[NSNumber]的签名modesOfTransportation。
ModesOfTransportation Swift枚举定义了可用的交通方式,可以映射到从0 - 8的值。如果SDK在Objective-C中使用,应将这些作为NSNumber使用。
例如,Swift中的ModesOfTransportation.taxi映射到Objective-C中的NSNumber @(ModesOfTransportationTaxi)。
public enum ModesOfTransportation: Int {
case train // 0
case walk // 1
case publicTransport // 2
case carSharing // 3
case bikeSharing // 4
case taxi // 5
case privateBike // 6
case rideSharing // 7
case other // 8
}
TripEvent事件的相应方法签名可以在项目中的Source/Events/Trip找到。
用户正在寻找从A到B的方法。
TripEvent.tripSearchEvent(...)
用户从A开始前往B的旅程。
TripEvent.tripBeginEvent(...)
用户取消了预订的行程。
TripEvent.tripCancelEvent(...)
用户到达目的地。
TripEvent.tripEndEvent(...)
用户检查搜索结果细节。如果搜索返回多个结果,则会发生这种情况。
TripEvent.tripInterestEvent(...)
用户为从A到B付费。
TripEvent.tripPayEvent(...)
有关许可证详细信息,请参阅许可证。