Sentinel 1.2.1

Sentinel 1.2.1

Nikola MajcenJasmin Abou Aldan维护。



Sentinel 1.2.1

  • Infinum、Vlaho Poluta和Nikola Majcen

Sentinel

Build Status Version License Platform

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 行为的对象。此对象需要的输入包括;triggersourceScreenProvidertoolspreferences

trigger 对象是一种 Trigger 类型,用于定义 Sentinel 将在哪个事件上被触发。目前支持三种类型;ShakeTriggerScreenshotTriggerNotificationTrigger。通过遵循 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)

作者

许可证

Sentinel遵循MIT许可证。有关更多信息,请参阅许可证文件

致谢

Infinum维护和赞助。