Sentinel
关于
Sentinel是一个简单的库,它为开发人员提供了一个为每个调试工具配置一个入口点的可能性。我们希望Sentinel可以给开发者一个配置一个带有多个调试工具的屏幕的能力,这些工具可以通过某个事件(例如摇动,通知)访问。
Sentinel有一个包含五个屏幕的工具栏。其中三个不可配置,而两个是可配置的。第一个屏幕是设备屏幕,允许用户查看一些特定于设备的信息。第二个屏幕是应用屏幕,允许用户查看info.plist中的一些特定于应用程序的信息。第三个,第一个可配置的屏幕是工具屏幕。在工具屏幕中,您可以添加尽可能多的工具
对象,用户可以使用这些对象来查找特定的信息。第四个,最后一个可配置的屏幕是偏好设置屏幕。在偏好设置屏幕中,您可以添加选项,允许或拒绝在应用程序内部进行某些活动。最后但同样重要的是,是包含性能特定信息的性能屏幕。稍后,我们将解释如何配置这些屏幕。
该库同时支持强类型和Objective-C。
示例
要运行示例项目,请克隆仓库,然后首先从示例目录运行pod install
。
需求
- iOS 10及以上版本
- Xcode 10及以上版本
安装
CocoaPods
Sentinel 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'Sentinel'
Swift Package Manager
如果您使用 SPM 作为依赖项管理器,请将此内容添加到您的 Package.swift
文件中的依赖项
dependencies: [
.package(url: "https://github.com/infinum/ios-sentinel.git")
]
使用
功能
在本章中,将介绍库中的一些重要组成部分。
Sentinel
Sentinel
是用于在应用程序中设置 Sentinel 使用的主类。可以通过 setup:
方法由 Configuration
对象进行配置。
配置
为了配置 Sentinel
对象,引入了 Configuration
对象。此对象包含多个定义通用 Sentinel 行为的对象。此对象需要的输入包括;trigger
、sourceScreenProvider
、tools
和 preferences
。
trigger
对象是一种 Trigger
类型,用于定义 Sentinel 将在哪个事件上被触发。目前支持三种类型;ShakeTrigger
、ScreenshotTrigger
、NotificationTrigger
。通过遵循 Trigger
协议,也可以添加新的触发器。
sourceScreenProvider
对象是一种 SourceScreenProvider
类型,应提供从 Sentinel 展示的视图控制器。目前支持一种类型;default
。
tools
对象是一组 Tool
对象。代表会在 Sentinel 中提供的工具。库中已经支持了多种工具,但仍可以创建和添加自定义工具到 Sentinel。
最后,但同样重要的是,是 preferences
对象,它是一个包含 OptionSwitchItem
对象的数组。OptionSwitchItem
用于允许用户关闭应用中包含的一些偏好设置。例如,应用支持分析功能,您可以添加一个 OptionSwitchTool
,它将在 Preferences
屏幕上显示,并且如果用户不想使用该功能,可以将其关闭。
自定义工具
要创建一个可以通过 Sentinel 使用的自定义工具,应创建一个新的类,以便符合 Tool
协议。该协议定义如下:
public protocol Tool {
var name: String { get }
func presentPreview(from viewController: UIViewController)
}
基于此,应提供 name
以及 presentPreview:
方法,该方法将显示从 sourceScreenProvider
视图控制器(在 Sentinel 配置中定义)显示的工具视图控制器。
入门指南
要将 Sentinel 添加到项目中,请按照以上说明使用 CocoaPods 安装库。完成后,用必填参数定义 Sentinel 配置,并在 AppDelegate
中的 application(_:didFinishLaunchingWithOptions:)
方法中调用 Sentinel.shared.setup:
。
let configuration = Sentinel.Configuration(
sourceScreenProvider: SourceScreenProviders.default,
trigger: Triggers.shake,
tools: [
GeneralInfoTool(),
UserDefaultsTool(),
LoggieTool(),
],
preferences: [
OptionSwitchItem(
name: "Analytics",
setter: { AppSwitches.analyticsEnabled = $0 },
getter: { AppSwitches.analyticsEnabled },
userDefaults: .standard,
userDefaultsKey: "com.infinum.sentinel.optionSwitch.analytics"
)
]
)
Sentinel.shared.setup(with: configuration)
作者
- Vlaho Poluta, [email protected]
- Nikola Majcen, [email protected]
许可证
Sentinel遵循MIT许可证。有关更多信息,请参阅许可证文件。
致谢
由Infinum维护和赞助。
