PinpointKit 是一个开源的 Swift 编写的 iOS 库,它允许测试人员和用户通过简单的手势向您的应用发送带有注释的截图反馈。
特点
- 摇一摇以触发反馈收集
- 向截图中添加箭头、方块和文本以指出问题。
- 在发送截图前模糊我们的敏感信息
- 自动收集系统日志(仅适用于 iOS 9.x)(iOS 9.x 仅限)
- 自定义一切
- 箭头和方框的颜色
- 界面中的文本
- 如何以及在哪里发送反馈
- 完全免费且开源
- 不需要后端
要求
- iOS 9.0+
- Xcode 12+
- Swift 5.0
注意:
ScreenshotDetector
依赖于Photos
框架以访问用户的照片库。这要求您在Info.plist
文件中添加一个关于您的应用使用用户照片库的条目描述的NSPhotoLibraryUsageDescription
键。自 iOS 10 以来,如果没有提供此键的值,可能会导致苹果拒绝您的应用提交,或当尝试访问用户的照片库时,导致您的应用退出。通过 CocoaPods 安装时默认不包括ScreenshotDetector
,但在其他情况下则包括。
安装
CocoaPods
CocoaPods是一款Cocoa项目依赖管理工具。您可以使用以下命令安装它
$ gem install cocoapods
要构建PinpointKit,需要CocoaPods 1.0.0+。
要使用CocoaPods将PinpointKit整合到您的Xcode项目中,请在您的Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '9.0'
use_frameworks!
target 'YOUR_TARGET_NAME' do
pod 'PinpointKit', '~> 1.5.0'
end
然后,运行以下命令
$ pod install
我们还提供了一个便利的分类,ScreenshotDetector
,它通过ScreenshotDetector
子分类提供。当用户在使用您的应用程序时截屏时,该类会调用代理回调。请参见有关要求的部分关于ScreenshotDetector
的包含。您可以通过在Podfile
中添加以下行将其添加到项目,除了上面的PinpointKit
pod 'PinpointKit/ScreenshotDetector', '~> 1.5.0'
Carthage
Carthage是一个分散式的依赖管理器,它可以构建您的依赖并为您提供二进制框架。
您可以使用以下命令使用Homebrew安装Carthage
$ brew update
$ brew install carthage
要使用Carthage将PinpointKit整合到您的Xcode项目中,请在您的Cartfile
中指定它
github "Lickability/PinpointKit" ~> 1.5.0
- 运行
carthage update
以构建框架。 - 接下来,在Project Navigator(蓝色项目图标)中选择您的应用程序项目,导航到目标配置窗口,然后在侧边栏的“Targets”标题下选择应用程序目标。
- 在窗口顶部的标签栏中,打开“General”面板。
- 将构建的
PinpointKit.framework
从Carthage构建文件夹拖入“Embedded Binaries”部分。
手动
如果您不希望使用上述任何一种依赖管理器,则可以手动将PinpointKit整合到您的项目中。
嵌入式框架
- 打开终端,在最高级项目目录中
cd
,如果项目尚未初始化为git仓库,请运行以下命令
$ git init
- 运行以下命令将PinpointKit作为git 子模块添加
$ git submodule add -b master https://github.com/Lickability/PinpointKit.git
-
打开新的
PinpointKit/PinpointKit
文件夹,并将PinpointKit.xcodeproj
拖入应用程序Xcode项目的Project Navigator。它应该嵌套在应用程序的蓝色项目图标下方。它相对于其他所有Xcode组的位置无关紧要。
-
在Project Navigator中选择
PinpointKit.xcodeproj
,并验证部署目标是否与您的应用程序目标匹配。 -
接下来,在Project Navigator(蓝色项目图标)中选择您的应用程序项目,导航到目标配置窗口,然后在侧边栏的“Targets”标题下选择应用程序目标。
-
在窗口顶部的标签栏中,打开“General”面板。
-
点击“Frameworks、Libraries和嵌入式内容”部分下的“+”按钮。
-
您可能会看到两个不同的
PinpointKit.xcodeproj
文件夹,每个文件夹都包含Products文件夹中的两个不同版本的PinpointKit.framework
。 -
选择顶部的iOS:
PinpointKit.framework
。 -
这就完成了!
PinpointKit.framework
将自动添加为目标依赖项,在“Copy Files”构建阶段链接嵌入式框架,这就是您在模拟器和设备上构建所需的所有内容。
用法
一旦安装了PinpointKit,使用起来很简单。
初始化一个PinpointKit
实例,指定一个用于预填充发送反馈的电子邮件地址的反馈接收者数组
let pinpointKit = PinpointKit(feedbackRecipients: ["[email protected]"])
要显示反馈视图控制器,将以下代码添加到您希望显示反馈的地方,传入一个要由PinpointKit
显示的视图控制器
pinpointKit.show(from: viewController)
注意:请确保在整个使用过程中保留对
PinpointKit
实例的强引用。
如果您想通过摇晃手势显示反馈视图,只需在应用程序代理中添加以下代码,并用您的电子邮件接收者数组替换["[email protected]"]
,并用您的应用程序代理名称替换AppDelegate
private static let pinpointKit = PinpointKit(feedbackRecipients: ["[email protected]"])
var window: UIWindow? = ShakeDetectingWindow(frame: UIScreen.main.bounds, delegate: AppDelegate.pinpointKit)
如果您不想使用PinpointKit
默认配置,您可以在初始化PinpointKit
时指定Configuration
和PinpointKitDelegate
实例。
Configuration
结构允许您指定反馈视图的外观和行为,而PinpointKitDelegate
实例提供了关于发送反馈状态的钩子。
自定义
PinpointKit 采用了一种面向协议的架构,这使得几乎所有的功能都可以进行自定义。以下是一些可能的例子
- 实现一个遵守
Sender
协议的JIRASender
,使用户能够直接向您的错误跟踪器发送反馈。 - 通过遵守
LogCollector
,提供您自己的控制台日志收集器,该收集器可以整合您选择的第三方日志框架的消息。 - 通过创建您自己的遵守
LogViewer
协议的视图控制器,更改查看日志的方式。
有关您可以自定义的内容的更多信息,请参阅 Configuration
的文档。
使用 PinpointKit 的应用程序
这里只是使用 PinpointKit 收集反馈的应用程序和公司中的一些。如果您的应用程序也是,请提交拉取请求!
许可证
PinpointKit 依据 MIT 许可证可用。有关更多信息,请参阅 LICENSE
文件。
关于
PinpointKit 由纽约的一家小型软件工作室 Lickability 构建,该工作室为客户和用户提供应用程序。如果您或您的团队需要帮助构建或更新应用程序,请发邮件给 [email protected]。我们很乐意了解您的项目。
对以下其他 贡献者 表示衷心的感谢,包括 Kenny Ackerson、Paul Rehkugler 和 Caleb Davenport。