测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可 | MIT |
发布最后更新 | 2016年8月 |
SPM支持 SPM | ✗ |
由 Marco Recchioni 维护。
依赖项 | |
Alamofire | ~> 3.4 |
IDZSwiftCommonCrypto | = 0.7.3 |
Breinify 的 DigitalDNA API 让您直接触手可及基于动态行为的人和驱动数据。
Breinify 的 DigitalDNA API 让您直接触手可及基于动态行为的人和驱动数据。我们相信,在许多情况下,个性化是一个优秀用户体验的关键组件。鉴于互联网上可获得的所有数据,应该可以轻松地为每位访问者提供独特的体验,但是,有时您可能会发现这非常困难。
得益于 Breinify 的 DigitalDNA,现在您能够根据访问者的需求调整您的在线存在,并 提供独特的体验。让我们一步一步地通过一个简单的例子。
要运行示例项目,首先克隆仓库,并在示例目录中运行 pod install
BreinApi 包括以下两个库
BreinApi 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。
要使用此库,您需要一个有效的 API 密钥,您可以在 https://www.breinify.com 免费获取。在这个例子中,我们假设您有以下 API 密钥
772A-47D7-93A3-4EA9-9D73-85B9-479B-16C6
import BreinApi
需要配置Breinify类,其中包含一个有效的API密钥、Breinify 后端和Rest引擎的URL,当前仅支持Alamofire。
这将是这样的
// this has to be a valid api-key
let validApiKey = "772A-47D7-93A3-4EA9-9D73-85B9-479B-16C6"
// this is the URL of the Breinify service
let baseUrl = "https://api.breinify.com"
// create the configuration object
let breinConfig = try BreinConfig(apiKey: validApiKey,
baseUrl: baseUrl,
breinEngineType: .ALAMOFIRE)
// set configuration
Breinify.setConfig(breinConfig)
驱动DigitalDNA API的引擎提供了两个端点。第一个端点用于通知引擎你的网站访客所执行的活动。这些活动用于理解用户的当前兴趣并推断其意图。随着收集更多活动,它在不同用户和行业中的准确性越来越高。应该注意的是,在引擎中不存储任何个人信息,因此每个个体的隐私得到很好的保护。引擎可以理解用户执行的多项不同活动,例如,着陆、登录、搜索、项目选择或注销。
通过执行Breinify.activity(…)来通知引擎活动。
// create a user you are interested in with his email (mandatory field)
let breinUser = BreinUser(email: "[email protected]")
typealias apiSuccess = (result:BreinResult?) -> Void
typealias apiFailure = (error:NSDictionary?) -> Void
// callback in case of success
let successBlock: apiSuccess = {(result: BreinResult?) -> Void in
print ("Api Success : result is:\n \(result!)")
}
// callback in case of a failure
let failureBlock: apiFailure = {(error: NSDictionary?) -> Void in
print ("Api Failure: error is:\n \(error)")
}
// set additional user information (optional)
breinUser.setFirstName("Fred")
breinUser.setLastName("Firestone")
// invoke activity call
do {
try Breinify.activity(breinUser,
activityType: .LOGIN,
category: .HOME,
description: "Login-Description",
sign: false,
success: successBlock,
failure: failureBlock)
} catch {
print("Error is: \(error)")
}
这就是全部了!调用将在后台异步运行,并且根据结果将调用successBlock或failureBlock回调。
查找用于获取特定用户的信息。此代码片段假定上位型和上述对象来自同一作用域。
// define an array of subjects of interest
let dimensions: [String] = ["firstname", "gender",
"age", "agegroup", "digitalfootprint", "images"]
// wrap this array into BreinDimension object
let breinDimension = BreinDimension(dimensionFields: dimensions)
// invoke the lookup
let successBlock: apiSuccess = {(result: BreinResult?) -> Void in
print ("Api Success!")
if let dataFirstname = result!.get("firstname") {
print ("Firstname is: \(dataFirstname)")
}
if let dataGender = result!.get("gender") {
print ("Gender is: \(dataGender)")
}
if let dataAge = result!.get("age") {
print ("Age is: \(dataAge)")
}
if let dataAgeGroup = result!.get("agegroup") {
print ("AgeGroup is: \(dataAgeGroup)")
}
if let dataDigitalFootprinting = result!.get("digitalfootprinting") {
print ("DigitalFootprinting is: \(dataDigitalFootprinting)")
}
if let dataImages = result!.get("images") {
print ("DataImages is: \(dataImages)")
}
}
let failureBlock: apiFailure = {(error: NSDictionary?) -> Void in
print ("Api Failure : error is:\n \(error)")
}
do {
try Breinify.lookup(breinUser,
dimension: breinDimension,
sign: false,
success: successBlock,
failure: failureBlock)
} catch {
print("Error is: \(error)")
}
让我们回到Xcode并进入IDE中的ViewController.swift。代码应如下所示
import UIKit
import CoreLocation
import BreinApi
class ViewController: UIViewController {
typealias apiSuccess = (result:BreinResult?) -> Void
typealias apiFailure = (error:NSDictionary?) -> Void
let baseUrl = "https://api.breinify.com"
let validApiKey = "772A-47D7-93A3-4EA9-9D73-85B9-479B-16C6"
let breinCategory: BreinCategoryType = .HOME
let breinUser = BreinUser(email: "[email protected]")
var breinConfig: BreinConfig?
var manager: BreinLocationManager?
var output = ""
@IBOutlet weak var resultView: UITextView!
@IBAction func lookUpInvoked(sender: AnyObject) {
doLookup()
}
@IBAction func activityInvoked(sender: AnyObject) {
doActivity()
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
do {
breinConfig = try BreinConfig(apiKey: validApiKey,
baseUrl: baseUrl,
breinEngineType: .ALAMOFIRE)
// set configuration
Breinify.setConfig(breinConfig)
} catch {
print("Error")
}
}
func doLookup() {
let dimensions: [String] = ["firstname", "gender",
"age", "agegroup", "digitalfootprint", "images"]
let breinDimension = BreinDimension(dimensionFields: dimensions)
let successBlock: apiSuccess = {(result: BreinResult?) -> Void in
print ("Api Success!")
if let dataFirstname = result!.get("firstname") {
print ("Firstname is: \(dataFirstname)")
self.output = self.output + "Firstname is: \(dataFirstname)"
}
if let dataGender = result!.get("gender") {
print ("Gender is: \(dataGender)")
self.output = self.output + "Gender is: \(dataGender)" }
if let dataAge = result!.get("age") {
print ("Age is: \(dataAge)")
self.output = self.output + "Age is: \(dataAge)"
}
if let dataAgeGroup = result!.get("agegroup") {
print ("AgeGroup is: \(dataAgeGroup)")
self.output = self.output + "AgeGroup is: \(dataAgeGroup)"
}
if let dataDigitalFootprinting = result!.get("digitalfootprinting") {
print ("DigitalFootprinting is: \(dataDigitalFootprinting)")
self.output = self.output + "DigitalFootprinting is: \(dataDigitalFootprinting)"
}
if let dataImages = result!.get("images") {
print ("DataImages is: \(dataImages)")
self.output = self.output + "DataImages is: \(dataImages)"
}
print("output is: \(self.output)")
self.resultView.text = self.output
}
let failureBlock: apiFailure = {(error: NSDictionary?) -> Void in
print ("Api Failure : error is:\n \(error)")
}
do {
try Breinify.lookup(breinUser,
dimension: breinDimension,
sign: false,
success: successBlock,
failure: failureBlock)
} catch {
print("Error is: \(error)")
}
}
func doActivity() {
let successBlock: apiSuccess = {(result: BreinResult?) -> Void in
print ("Api Success : result is:\n \(result!)")
self.resultView.text = "Succes!"
}
let failureBlock: apiFailure = {(error: NSDictionary?) -> Void in
print ("Api Failure : error is:\n \(error)")
self.resultView.text = "Failure: \(error)"
}
// set additional user information
breinUser.setFirstName("Fred")
breinUser.setLastName("Firestone")
// invoke activity call
do {
try Breinify.activity(breinUser,
activityType: .LOGIN,
category: .HOME,
description: "Login-Description",
sign: false,
success: successBlock,
failure: failureBlock)
} catch {
print("Error is: \(error)")
}
}
}