测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布最后发布 | 2017年4月 |
SwiftSwift 版本 | 3 |
SPM支持 SPM | ✗ |
由 Elmar Tampe 及 Alexander Belonogov 维护。
Door2Door 移动分析的 无依赖 iOS SDK。
## 目录
事件收集 API 封装器可用于 Swift 3.x
及以上版本以及 Objective-C
。它还与某些依赖关系管理器兼容。SDK 可用于以下:
Swift 3.x
Objective-C
Cocoapods
Xcode 项目
制造在项目中示例项目:请检查示例项目以了解如何实现 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(...)
有关许可证详细信息,请参阅许可证。