安装
将 StnSdk 简单地集成到项目中,最便捷的方式是通过 CocoaPods。您需要在 podfile 中添加以下行
pod StnSdk
定义要使用版本的常用方法。
使用
通用
通过 Cocoapods 整合 SDK 后,只需在项目中包含相应的导入语句即可
import StnSdk
为了以最简单的方式显示弹出窗口,您只需要添加
extension MyViewController: Guidable { }
然后您可以调用
try? present(screenType: typeOfScreenYouWantToPresent)
有关 typeOfScreenYouWantToPresent
和该方法本身的更多内容,请参阅以下部分。
初始化
在首次使用框架之前,需要对其进行初始化。通常有两种策略。第一种是尽可能早地在 AppDelegate 中初始化框架,这样当需要时框架就已经准备好了。第二种方法是在实际使用前初始化。最佳方法将取决于 apps 的性质和预期的用户行为。
Stonly.shared.initialize(widgetId: String, completion: ((Stonly.State) -> Void)?)
completion
是可选的,因此第一种方法可以通过所谓的“放之任意处”的方式来实现,无需提及 completion。
如果你觉得第二种策略更适合你的需求,你可以实现 completion
以便在初始化完成后获得通知,并了解它是否成功。更多内容请参阅 Stonly.State。
显示指南
要显示指南,你需要调用
try? present(screenType: screenType)
其中 screenType
是 ScreenType.guide
,指南相关的值是 GuideConfiguration
类型。
GuideConfiguration
必须包含 explanationId
和 stepId
。此外,你还可以添加 theme
和 eventsListener
。下文将详细介绍这两个对象。
present
函数还可以接受 FloatingPanelDelegate
类型的 floatingPanelDelegate
(它是可选的),如果你需要自定义 FloatingPanel
的行为。有关这些自定义的更多信息,请参阅 FloatingPanel
文档。
默认情况下,展示是动画的,但如果不需要动画,则可以将其设置为 false
。
显示知识库
要显示知识库,你需要调用
try? present(screenType: screenType)
其中 screenType
是 ScreenType.knowledgeBase
,与之关联的是 KnowledgeBaseConfiguration
。
这里唯一的非可选属性是 baseURL
。 containerId
和 stepId
是可选的。类似于 GuideConfiguration
,它也可以包含 theme
和 eventsListener
对象。
其他展示形式
在当前版本中,有一个用于使用 FloatingPanel
展示弹出窗口的包装器,但如果展示方式或包装器不是首选方式,你也可以直接使用 StonlyWebViewController
并调用 start(screenType: ScreenType)
函数来显示指南或知识库。
主题化
弹出窗口可以通过两个参数进行自定义
- 语言
- 突出显示颜色
language
应该采用 ISO 639-2 或 ISO 630-1 格式。尽管属性是字符串类型,但如果开发者传递的字符串超过 3 个字符,则剩余部分将被删除,并且只考虑前 3 个字符。
accent
是 UIColor 类型。如果假设全透明,则颜色值的 Alpha 通道将被忽略。
两个参数都是可选的。对象的创建可能看起来像:
let theme = ThemeConfig(language: "en", accent: .green)
事件监听
要能够监听事件,您需要创建监听器对象并定义要监听哪些事件以及如果事件发生应调用哪个完成块。您可以监听以下事件
- currentStep
- currentSteps
- endOfExplanation
- explanationIntroduction
- goBackClicked
- goToNewRequest
- openFrontChat
- openIntercom
- openZendeskChat
- stonlyDataTransmission
- stonlyWidgetFullscreenOpen
- stonlyWidgetFullscreenClose
要注册对事件的兴趣,您必须
let listener = EventListener()
listener.add(for: .currentStep) { params in
// closure that will be called if event occur
}
param
是 [String : Any]?
类型。
您可以为不同类型的事件添加多个监听器,但对特定事件的调用只能有一个闭包。如果您为同一事件添加了多个闭包,则在事件触发时,将调用最后添加的闭包。
注意
框架以通用框架的形式提供(因此它可以在模拟器和设备上运行)。请记住,在提交到 AppStore 之前,您需要从不必要的架构中删除二进制文件。