TPTweak
TPTweak 是一款调试工具,有助于在不重新编译的情况下动态调整您的 iOS 应用程序。它受 Facebook 的 Tweak 启发,完全用 Swift 编写,并具有更简单的 API。
TPTweak 的示例 | 选择字符串选项 | 选择数字选项 | 搜索 |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
通过滑动设置收藏夹 | 通过长按设置收藏夹 | 收藏页面 |
---|---|---|
![]() |
![]() |
![]() |
安装
Swift 包管理器
使用 Xcode,添加此 URL
https://github.com/tokopedia/ios-tptweak
或手动添加到您的 Package.swift
.package(url: "https://github.com/tokopedia/ios-tptweak", from: "1.0.0"),
Cocoapods
将此添加到您的 Podfile
pod 'TPTweak', '~> 1.0.0'
命名法
TPTweakEntry
= TPTweak 上的选项表示
TPTweakStore
= TPTweak 的“大脑”,包括存储、读取和修改 TPTweak 值的全部逻辑。
TPTweakEntry
TPTweakEntry 将表示 TPTweak 上的一个选项。
TPTweakEntry(
category: "Tracking",
section: "Tracking",
cell: "Enable Tracking",
footer: "Turn this on to enable tracking",
type: .switch(defaultValue: true)
)
- 分类: 将是第一页上的一个单元格
- 部分: 将是第二页上的一组部分
- 单元格: 将是部分内单元格的名称
- 页脚: 在部分的末尾添加页脚。(如果检测到多个,则使用最后一个)
- 类型: 您想要的单元格类型
TPTweakEntry 类型
开关
使用此类型,您可以使用 UISwitch 创建启用/禁用选项的单元格。如果未检测到值,您还可以提供默认值。
.switch(defaultValue: true)
您还可以添加 closure: ((Bool) -> Void)?
代码块,它将在值改变后执行。
.switch(defaultValue: true, closure: { isToggledOn in
UserDefaults.standard.set(isToggledOn, forKey: "myvalue_is_on")
})
字符串
使用此类型,您可以创建字符串选择。当用户点击选项时,将自动打开选择。
.strings(item: ["US", "UK", "SG"], selected: "SG")
数字
使用此类型,您可以创建数字选择。当用户点击选项时,它将自动打开选择。
.numbers(item: [10, 15, 20], selected: 10)
动作
使用此类型,您将获得进行所有操作的灵活性。在给定的
closure
中,例如,您可以打开您创建的自定义页面,或者执行 UserDefaults
,或者更多。
.action({
UserDefaults.standard.set(true, forKey: "clear_cache")
Cache.clear()
})
如何使用
创建您的 TPTweakEntry
首先,您需要创建您的条目,我们建议创建一个扩展,并将每个条目定义作为静态。
import TPTweak
extension TPTweakEntry {
static let enableTracking = TPTweakEntry(
category: "Tracking",
section: "Tracking",
cell: "Enable Tracking",
footer: "Turn this on to enable tracking",
type: .switch(defaultValue: true)
)
}
注册您的 TPTweakEntry
一旦创建您的条目,您需要将其注册到 TPTweak,以便它在 TPTweak 页面上显示。这可以通过对每个条目调用 register()
实现。
您可以在任何时候调用它,但我们建议将其放在您的 AppDelegate
的 internal func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?)
中。
internal func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// register TPTweak Entry
TPTweakEntry.enableTracking.register()
}
打开 TPTweak 页面
通过打开代码 TPTweakViewController
可以打开 TPTweak,但更简单的方式是用代码 TPTweakShakeWindow
替换当前的应用窗体。
手册
// without nav
let viewController = TPTweakViewController()
self.navigationController?.pushViewController(viewController, animated: true)
// with nav
let tptweakWithNav = TPTweakWithNavigatationViewController()
self.present(tptweakWithNav)
摇一摇(推荐)
@UIApplicationMain
internal final class AppDelegate: UIResponder, UIApplicationDelegate {
internal var window: UIWindow?
internal func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// register TPTweakShakeWindow to enable openning TPTweak from shaking the device
window = TPTweakShakeWindow(frame: UIScreen.main.bounds)
...
}
}
使用 TPTweak 值
一旦设置了 TPTweakEntry,您可以从它获取和设置值。
读取值
// will return true or false based on latest value changed on TPTweak
let isTrackingEnable = TPTweakEntry.enableTracking.getValue(Bool.self)
设置值
如果您想手动通过编程设置值
TPTweakEntry.enableTracking.setValue(true)
版权
Copyright 2022 Tokopedia. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://apache.ac.cn/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.