LotameDMP-IOS
此开源库可以让 Lotame 客户利用它从 iOS 应用程序内部收集数据。
需求
LotameDMP 需要 Xcode 8 和至少 iOS 8.0。它支持 Swift 或 Objective-C。
示例
要运行示例项目
- 克隆仓库
- 进入 Example 目录
cd Example/
- 运行
pod install
- 打开
LotameDMP.xcworkspace
。不要打开.xcodeproj
。 - 在 Xcode 中,将方案从 LotameDMP(带工具箱图标)更改为 LotameDMP-Example。
- 构建并运行
安装
内嵌框架需要 iOS 8 或更高版本或 OS X Sierra(10.12)或更高版本的最小部署目标。
使用 CocoaPods
CocoaPods 是适用于 Cocoa 项目的依赖项管理器。
构建 LotameDMP 所需 CocoaPods 版本为 1.2.1。您可以使用以下命令进行安装:
$ gem install cocoapods
要使用 CocoaPods 将 LotameDMP 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!
target "YourTargetName" do
pod 'LotameDMP', '~> 5.0'
end
注意:请确保更新您的目标名称
然后,运行以下命令
$ pod repo update
$ pod install
注意:如果最近没有进行过更新,请确保更新您的本地 CocoaPod 存储库。
关闭您的 .xcodeproj
文件,然后打开生成的 .xcworkspace
文件。
将以下元素添加到项目的 Info.plist
文件中,以配置 ATS
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>crwdcntrl.net</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
Carthage
Carthage 是与 CocoaPods 相似的依赖项管理器。
您可以使用 Homebrew 安装 Carthage
$ brew update
$ brew install carthage
创建一个名为 Cartfile
的文件并添加以下文本
github "Lotame/LotameDMP-IOS" ~> 5.0
运行 carthage update
这会生成以下文件
./Carthage/Build/iOS/LotameDMP.framework
安装
- 打开 Xcode 并转到 目标 > 通用 > 嵌套二进制文件
- 将
LotameDMP.framework
拖拽到 嵌套二进制文件 部分。 - 当您被提示时,勾选 如果需要则复制项目 的复选框。
最后,在 README 中继续滚动到 添加运行脚本来阶段 部分,进行最后一个配置步骤。
拖拽式安装
下载以下文件
tag-5.0.0-swift-3.1-framework.zip
解压它,您应该可以看到里面的 LotameDMP.framework
。
安装
- 打开 Xcode 并转到 目标 > 通用 > 嵌套二进制文件
- 将
LotameDMP.framework
拖拽到 嵌套二进制文件 部分。 - 当您被提示时,勾选 如果需要则复制项目 的复选框。
关于 Swift 版本的说明:为了使拖拽式安装生效,您必须使用与预编译框架相同的 Swift 版本。分发文件夹的内容用标签和 Swift 版本来标记,因此您可以根据标签了解代码状态,根据 Swift 版本了解兼容性。如果您使用的是不同的 Swift 版本,您有几个选择
- 使用 CocoaPods
- 使用 Carthage
- 下载仓库,并运行
./build_framework.sh
脚本。这会在dist
文件夹中生成一个框架压缩文件
最后,在 README 中继续滚动到 添加运行脚本来阶段 部分,进行最后一个配置步骤。
添加运行脚本来添加阶段
本节仅适用于 Carthage 和 拖放 安装方式。这两种方法生成的 .framework
文件包含模拟器和设备的二进制文件 — 这两者都是您进行应用开发所需的。
问题在于应用商店提交有一个验证过程,会自动拒绝您的构建,因为它包含模拟器的二进制切片。
为了将您的应用提交到应用商店,您需要添加一个 运行脚本,用于移除这些不必要的切片。
- 选择您的应用程序目标,然后转到 构建阶段
- 单击 + 按钮,然后添加 新运行脚本阶段
- 将 Shell 设置为
/bin/sh
- 在shell脚本的主体中,粘贴以下内容:
/usr/local/bin/carthage copy-frameworks
- 在 输入文件 下,添加
LotameDMP.framework
的路径。这取决于您的安装方法
- Carthage:
$(SRCROOT)/Carthage/Build/iOS/LotameDMP.framework
- 拖放:
$(SRCROOT)/LotameDMP.framework
您的屏幕应看起来像这样
如果您跳过此步骤,您仍然可以构建、运行和开发。但您将在验证应用商店提交的二进制文件时看到错误。
使用方法
LotameDMP必须被任何使用库的文件导入。
import LotameDMP
或对于Objective-C
#import "LotameDMP-Swift.h"
初始化
LotameDMP 是一个单例,必须在首次使用前使用客户端 ID 进行初始化。在执行任何其他调用之前运行以下命令
DMP.initialize("YOUR_CLIENT_ID_NUMBER")
或对于Objective-C
[DMP initialize:@"YOUR_CLIENT_ID_NUMBER_"];
初始化调用开始一个新的会话,并将域名和协议设置为它们的默认值(https://*.crwdcntrl.net)
发送行为
行为数据通过一个添加命令收集
DMP.addBehaviorData("value", forType: "type")
DMP.addBehaviorData(behaviorId: 1)
DMP.addBehaviorData(opportunityId: 1)
或对于Objective-C
[DMP addBehaviorData:@"value" forType: @"type"];
[DMP addBehaviorDataWithBehaviorId: 1];
[DMP addBehaviorDataWithOpportunityId: 1];
可以附加多个行为,如上所述。一旦附加了屏幕或行为的所有相关行为数据,就应该将其发送到服务器以记录行为
DMP.sendBehaviorData()
或对于Objective-C
[DMP sendBehaviorData];
如果您对发送数据的成功或失败感兴趣,请使用完成处理程序。
DMP.sendBehaviorData(){
result in
if result.isSuccess{
//Success
} else{
//Failure
}
}
或对于Objective-C
[DMP sendBehaviorDataWithHandler: ^(NSError * _Nullable error){
if (error != nil){
//Failure
} else {
//Success
}
}];
获取受众数据
使用以下命令获取受众数据
DMP.getAudienceData{
result in
if let profile = result.value{
//Successful request, use LotameProfile object
} else {
//result.error will contain an error object
}
}
或对于Objective-C
[DMP getAudienceDataWithHandler:^(LotameProfile * _Nullable profile, BOOL success) {
if (success) { //Check for success
//Successful request, use LotameProfile object
}
}];
完成处理程序使用 Result 枚举来指示成功或失败。
开始新会话
使用以下命令来指示新会话的开始
DMP.startNewSession()
或对于Objective-C
[DMP startNewSession];
使用提供的URL模式发送HTTP或HTTPS请求
此模式可以包含两个替换宏,{deviceid}和{deviceidtype},在执行HTTP(s)调用之前将被替换。
DMP.sendRequest(urlPattern: "http://xyz.com/getData?mid={deviceid}&dt={deviceidtype}")
或对于Objective-C
[DMP sendRequest urlPattern:@"http://xyz.com/getData?mid={deviceid}&dt={deviceidtype}"];
关于此版本
版本5.0.0升级到swift 5。
版本4.1.0移除了对AlamoFire和SwiftyJSON的依赖。它还生成一个.framework
文件以支持拖放安装。
版本4.0.0将代码更新到Swift 3,因为Xcode 8.3.2不再支持Swift 2.3。
之前版本的Lotame 3.0.1
依赖于Alamofire 2.0
。此依赖项已更新到Alamofire 4.4
。如果您的项目依赖于Alamofire,请参阅他们的迁移指南以更新您的网络调用。
致维护者
在更改版本时,请确保更新以下3个位置
LotameDMP.podspec
- Git标签
- 在
DMP.swift
中的sdkVersion
当发布 Swift 的新版本时,运行 ./build_framework.sh
脚本。这将生成一个新压缩包,存放在 dist
文件夹中,标记为当前 git 标签和本地 Mac 上的 Swift 版本。将生成的 zip 文件推送到库中,并更新此文件中 拖放安装 部分的链接。
许可
LotameDMP 在 MIT 许可下可用。更多信息请参阅 LICENSE 文件。