QubitSDK 2.0.8

QubitSDK 2.0.8

Henry PortermbalawajderHakan Baybas 维护。



QubitSDK 2.0.8

  • Dariusz Zajac 和 Pavlo Davydiuk

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 masterpod 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];

上述调用接受可选参数,如previewignoreSegmentsvariation

位置

使用 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()