Qubit 移动应用:iOS SDK
此 SDK 可以实现在 iOS 应用程序中综合事件跟踪和 Qubit 体验交付。
兼容性
此版本与 Xcode 12 和 iOS14 兼容,并支持 Swift 和 Objective-C。
入门
要使用此 SDK,请联系您的 Qubit 客户成功代表。
获取帮助
请联系 [email protected] 或在 GitHub 上提出问题。
发布
更多发布说明可查看 GitHub 发布说明。
版本 | 更新 |
---|---|
2.0.4 | 现在支持使用 Swift Package Manager 进行安装 |
2.0.3 | 修复了错误和性能问题 |
2.0.1 | 引入功能,可以使用您选择的自定义设备 ID 重置 SDK |
2.0.0 | 主要版本发布,支持 Placement API。升级到 2.* 以使用此功能。 |
1.0.16 | 修复了部分事件被错误序列化为 JSON 的问题。 |
1.0.15 | 移除了全局异常处理。发布了 QuibitSDK.xcframework。 |
1.0.11 | 由于 Xcode12 持续的错误,移除了 QuibitSDK.xcframework。发布了 UniversalFramework。 |
1.0.10 | 修复了 Objective-C 和 Swift 的错误。发布了新的 QuibitSDK.xcframework。 |
1.0.9 | 更新框架文件以支持 iOS 14 |
1.0.8 | 更新框架文件 |
1.0.7 | 升级支持 React Native SDK |
1.0.6 | SWIFT_VERSION 支持 pod 安装 |
1.0.4 | 添加了临时禁用和启用追踪器的能力 |
1.0.3 | 更新框架以支持 Swift 5。 |
1.0.2 | 修复了事件内 Boolean 值丢失的问题。修复了各种 iOS 警告。如果 loglevel=disabled,则阻止在 HandleException 中写入日志 |
1.0.0 | 包括原生体验的 V1 版本发布 |
集成
集成选项
方法 | 支持 | 主机 | |
---|---|---|---|
1 | Swift 包管理器 | Swift | GitHub |
2 | CocoaPods | Swift & Objective-C | CocoaPods.org & GitHub |
3 | XCFramework | Swift & Objective-C | GitHub |
以下为安装选项的详细说明。
(1) Swift 包管理器
要使用 Swift 包管理器将 QubitSDK 集成到您的 Xcode 项目中
- 文件 > Swift 包 > 添加包依赖项
- 添加
https://github.com/qubitdigital/qubit-sdk-ios.git
- 选择 Up to Next Major 并使用
2.0.4
- 在您的目标的 构建阶段 中,将 QubitSDK 添加到 目标依赖项 和 与二进制链接库
或将其作为依赖项添加到另一个包中
dependencies: [
.package(url: "https://github.com/qubitdigital/qubit-sdk-ios.git", .upToNextMajor(from: "2.0.4"))
]
(2) CocoaPods
CocoaPods 是 iOS 的依赖管理工具。如果您还没有配置 CocoaPods,请阅读他们网站上的安装文档(https://guides.cocoapods.org.cn/using/getting-started.html)。如果您使用另一个依赖管理工具,请联系我们获取替代方案。
如果您不想使用 CocoaPods,请参考下面的“使用框架文件”部分。
安装 QubitSDK 包
此 SDK 的版本可在 CocoaPods 上找到:https://cocoapods.org.cn/pods/QubitSDK。
在 Podfile 中更新以下内容
target 'MyApp' do
pod 'QubitSDK', '~> 2.0.4'
end
然后,在终端中或从 CocoaPods.app 中运行 pod install。
或者为了测试运行,运行以下命令
pod try QubitSDK
从GitHub安装的替代办法
一旦你安装了CocoaPods,请导航到你的应用根目录下的Podfile文件。在该文件中,添加以下行
use_frameworks!
target 'MyApp' do
pod "QubitSDK", :git =>
"https://github.com/qubitdigital/qubit-sdk-ios.git", :tag => "2.0.4"
end
指定一个GitHub 标签 以确保你只选择此SDK的新版本。
如果你是通过SSH而不是HTTPS访问仓库,目标URL将是 [email protected]:qubitdigital/qubit-sdk-ios.git。
然后,从你的命令行运行
pod install
如果遇到权限问题,请确保GitHub用户名步骤已成功完成。如果你在此步骤中遇到任何其他问题,请查阅cocoapods文档。如果你的流程在“分析依赖项”时停滞,请尝试运行 pod repo remove master,pod setup,然后再次运行 pod install。
(3) 使用框架集成
如果你希望在SPM或CocoaPods这样的包管理器之外使用QubitSDK,请查看我们的框架选项。
启动QubitSDK
使用跟踪ID启动QubitSDK将使我们能够正确识别你的数据。
在启动SDK时,你可以指定SDK的日志级别。这将决定SDK将产生多少日志。Objective-C的日志级别选项为:QBLogLevelDisabled、QBLogLevelError、QBLogLevelInfo、QBLogLevelDebug、QBLogLevelVerbose、QBLogLevelWarning。Swift的日志级别选项为:.disabled、.error、.info、.debug、.verbose、.warning。
要在AppDelegate的didFinishLaunchingWithOptions中启动QubitSDK,请使用以下方法:
Objective-C
CocoaPods
@import QubitSDK;
框架
#import "QubitSDK/QubitSDK.h"
启动
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[QubitSDK startWithTrackingId: @"XXXXX" logLevel: QBLogLevelDisabled queuePriority: QBQueuePriorityBackground];
return YES;
}
Swift
import QubitSDK
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
QubitSDK.start(withTrackingId: "XXXXX", logLevel: .disabled, queuePriority: .background)
return true
}
这里XXXXX是您的Qubit跟踪ID,这是一个代表您账户的唯一字符串,并已向您提供。如果您尚未收到跟踪ID或不知道您的ID是什么,请与我们联系。
发送事件
在您能够在应用内部发送事件之前,需要由Qubit在S3上生成一个配置文件。以下是配置文件中可以设置的设置
- tracking_id
- endpoint
- configuration_reload_interval
- queue_timeout
- send_auto_view_events
- send_auto_interaction_events
- send_geo_data
- vertical
- property_id
- namespace
- disabled
要发送一个事件,调用sendEvent方法。以下示例是一个“ecUser”事件
#import "QubitSDK/QubitSDK.h"
[QubitSDK sendEventWithType:@"ecUser" dictionary:userDictionary];
[QubitSDK sendEventWithType:@"ecUser" data:userJsonAsString];
import QubitSDK
QubitSDK.sendEvent(type: "ecUser", dictionary: userDictionary)
QubitSDK.sendEvent(type: "ecUser", data: userJsonAsString)
userDictionary是Objective-C中的NSDictionary类型,Swift中的Dictionary类型,其形式为
{
userId: "jsmith",
currency: "USD",
email: "[email protected]",
firstName: "John",
firstSession: false,
gender: "Mr",
hasTransacted: true,
lastName: "Smith",
language: "en-gb",
title: "Mr",
username: "jsmith"
}
体验
使用fetchExperiences()
将体验集成到您的应用中。
Swift
// Fetch an experience by ID (143640 in this example)
QubitSDK.fetchExperiences(withIds: [143640], onSuccess: { (experiences) in
if let exp = experiences.first {
// list out the payload key/values
print("Got experience - payload:")
for (key, value) in exp.payload {
print("\(key) -> \(value)")
}
// mark the experience as shown
exp.shown()
}
},
onError: { (error) in
print("Got error: \(error.localizedDescription)")
},
preview: false, ignoreSegments: false, variation: nil)
Objective-C
[QubitSDK fetchExperiencesWithIds:@[@1] onSuccess:^(NSArray<QBExperienceEntity *> * _Nonnull experiences) {
// select the first experience returned
QBExperienceEntity* firstEntity = experiences.firstObject;
// make a POST call to the returned callback URL
[firstEntity shown];
} onError:^(NSError * _Nonnull error) {
NSLog(@"%@", error.description);
} preview:false variation:false ignoreSegments:false];
上述调用接受可选参数,如preview
、ignoreSegments
和variation
。
位置
使用 getPlacement()
将 Qubit 位置添加到您的应用中。
Swift
QubitSDK.getPlacement(withId: "83f6b528-9336-11eb-a8b3", onSuccess: { (placement) in
if let placement = placement {
// fetch our content payload
print("Got placement - content:")
print("placement content -> \(placement.content)")
// send an impression event
placement.impression()
// send a clickthrough event
placement.clickthrough()
}
}, onError: { (error) in
print("Got error: \(error.localizedDescription)")
})
Objective-C
[QubitSDK getPlacementWithId:@"123456" onSuccess:^(QBPlacementEntity *> * _Nonnull placement) {
[placement clickthrough];
[placement impression];
} onError:^(NSError * _Nonnull error) {
NSLog(@"%@", error.description);
};
有关此功能的更多信息,请联系您的 Qubit 客户成功团队。
禁用跟踪
如果您想禁用跟踪,请使用以下方法。
#import "QubitSDK/QubitSDK.h"
[QubitSDK stopTracking];
import QubitSDK
QubitSDK.stopTracking()