Amp 1.0.5

Amp 1.0.5

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布最新发布2017年12月

Steve MaskOlha Prokopiuk 维护。



Amp 1.0.5

  • Steve Mask

Amp - Swift

由 Scaled Inference 提供


Amp.ai 的 Swift 客户端。它可以用于服务器端的 Swift 应用程序,或与 AmpiOS 框架一起用于 iOS 客户端。

Amp.ai

Amp.ai 是一个云 AI 平台,可以通过作出智能、目标导向、情境敏感的决策来增强与其集成的任何软件应用程序。将其想象为增强版的 A/B 测试。A/B 测试可以提供关于所有用户应采取何种选择的信息,而 Amp.ai 将提供特定于情境的决定,并会根据它们所在的情境持续改进,并为您提供最佳决定。

兼容性

Amp 框架支持 Swift 3/4 应用程序和 iOS 版本 10.0 及以上。

入门指南

参考文档

  1. 从应用商店安装 XCode
  2. Apple 开发者
  3. Xcode
  4. Swift
  5. iOS
  6. CocoaPods

CocoaPods

安装 Cocoapods

$ gem install cocoapods 

在你的项目中初始化 Cocoapods

$ pod init

在新建 Podfile 的目标部分添加 Amp pod

platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'Amp'
end

你可以使用 Amp 的特定版本,通过指定版本

pod 'Amp', '~> 1.0'

安装 Amp pod

$ pod install

将来若要升级到 Amp 的最新版本,请运行

$ pod update

安装 'Amp' Cocoapod 后,Xcode 将提示您使用工作区文件重新打开项目。

Amp

初始化

要使用 amp,请导入 Amp 框架,并使用此类创建 amp 实例,同时传入您想要指定的所有 选项 以及关联的 'session' 和其选项

import Amp
...
let amp: SIAmp = CoreAmp(key: "<projectKey>", config: Config.ampConfig(logLevel: .warn))
let session: SISession = amp.session(userId: "<userId>")

以下行初始化了 amp 和 session 实例,它们代表在 Amp 项目中的单个会话,对应您将获得的 projectKey。要进行 Amp 的高度集成,只需这些命令!

观察

session.observe(name: "Checkout", properties: ["amount": amount])

很可能是,您希望包括 observe 事件来捕获指标(衡量您的应用程序如何满足您的业务目标)或与它们相关的情境。您可以将此置于操作或委托方法中,以捕获事件,或在您的应用程序启动时捕获帮助改善业务目标的情境。

决定

let decision = session.decide(name: "CheckoutButtonStyle", candidates: ["color": ["blue", "green", "orange"], fontSize: ["12", "14", "16"]])

Amp 提供的关键价值是学习如何做出决策来提高您的指标。简单地列出可能对您的指标产生影响的候选者,例如按钮的样式,Amp 将帮助您从数据中学习,并作出最佳决定!
viewWillAppear 生命周期方法中使用此决策来呈现您页面最佳的外观。

配置选项

名称 默认值 数据类型 详细信息
.logLevel .warn LogLevel .error, .warn, .info, .debug
.builtinEvents [字符串] 数组 初始化时创建的事件
.sessionTTL 0 毫秒 会话存活时间

观察

签名

public func observe(name: String, properties: [String:Any], callback: @escaping (Error?, [String:Any]) -> Void = { _,_ in })

注意: 已为 callback 提供默认值,因此您无需使用它。

示例

使用具有相关属性的名称事件进行观察的 session.observe 方法。例如,以下语句

session.observe(name: "userInfo", properties: ["country": "china", "lang": "zh", "premium": false])

发送包含 3 个属性 'country', 'lang', 和 'premium' 的事件 'userInfo'。

决定

签名

public func decide(name: String, candidates: [String:[Any]], ttl: NSNumber? = nil, callback: @escaping (Error?, [String:Any]) -> Void = { _,_ in }) -> [String:Any]

注意: 已为 callback 提供默认值,因此您无需使用它。

示例

let decision = session.decide(name: "textStyle", candidates: ["color": [], "font": []])
// Use decision["color"] and decision["font"] to render to the page

session.decide 方法通过事件名 'textStyle' 请求决策,该事件询问 Amp: "在 (三个) 候选项中哪一个最适合我的指标"。返回的 'decision' 可以用于更改应用程序的行为。

候选者

根据发送到您的背景应用程序的策略,您可能正在使用 'default' 策略,这将使用索引为 0 的候选者,或者使用 'Amped' 策略,这将基于收集到的指标选择最佳候选者。目前,我们支持多达 50 种组合。例如,color: ["red", "green", "blue"] 被认为是 3 种组合。

选项

session.decide 支持一个 ttl 选项。通过设置 ttl,您表示您想要缓存这些决策指定的时间。这对于页面上的某些部分(如导航栏)很有用,您不希望 UI 在页面之间更改。

策略

session.decide 通过两种类型的策略进行决策:默认和增强。
增强策略旨在通过使用从您的数据中自动学习的模式,优化通过控制台设置的商业指标。
另一方面,默认策略旨在通过将候选者长度截断为 1 来作为保守的回退。这种方式做出的决策称为默认决策。

使用增强策略与默认策略的会话比例,即策略分配,可以从 Amp 控制台控制。此外,策略分配和最新的增强策略(由 Amp 持续更新)将自动同步到客户端,以便它们可以由客户端的决策所尊重。当 amp 实例创建时,若自上次同步以来已通过 syncInterval 指定的时间,则 amp 将执行策略同步。如果实例在指定的 syncInterval 时间后存活,则将再次同步。

问答

  1. 如果我想保持跨使用保留相同的会话呢?

我们支持 sessionTTL 作为 amp 级别选项之一,以指定会话的寿命。如果它没有过期,它将被恢复;否则,将创建一个新的会话。只要 sessionTTL 没有过期,会话仍然是可用的。

  1. 如果我不带名称调用 observe 或 decide 会怎样?

如果在调试模式下,您将收到错误通知;否则,它将静默失败,事件无法发送给我们。对于 decide,您仍然会得到候选者,但顺序为默认顺序。

  1. 是否 observe 或 decide 会影响我的延迟?

不会。对于 observe,我们使其完全异步。这两个调用将立即触发并忘记。如果您想在发出 observe 请求后立即执行某些操作,可以向 observe 传递一个回调,它将在我们收到响应后调用。对于 decide,我们将通过回调返回决策,该回调由我们的离线策略生成,然后报告给我们的服务器。

  1. 如果我们有任何问题,我可以联系谁?

您可以通过以下链接联系 [email protected] 有关 Amp 的任何问题。我们提供 24/7 的客户支持,并将在两小时内帮助您回答任何问题或解决任何问题。