为开发人员和测试人员设计的iOS内应用错误报告,具备带注解的截图和控制系统日志。由Marco Arment制作。
(简而言之:嵌入式Bugshot和NSLog()
收集,适用于测试版测试。)
只需从应用中的任何位置完成您选择的动作——摇晃、两指向上滑动、三指双击、从屏幕右边滑动等——Bugshot报告窗口就会滑上来
它会自动截取您在应用中看到的任何内容,并包含一个直播的NSLog()
控制系统日志 不需要任何依赖。(也与CocoaLumberjack和其他可以将输出发送到标准系统日志的工具兼容,或者您可以手动添加消息。)
点击截图会弹出一个嵌入的Bugshot应用版本:画醒目的橙色箭头和方框进行注释,或模糊掉敏感信息。
点击控制台会弹出一个全屏控制台,这在调试时非常有用,即使您没有提交错误报告也是如此。
点击相应的绿色勾勾,如果您想省略截图或日志,然后简单地撰写一封邮件,其中已经填写并附加了所有相关的信息。
BUGSHOTKit是为开发和临时的测试版制作的。 请勿将其发布到App Store构建中。
为了帮助防止意外将BUGSHOTKit包含在您的App Store构建中,我已包括一个有用的私有API调用,它将在提交时立即引发验证失败。如果您无论如何还是发布了,它将尝试在运行时检测App Store构建并禁用自己。
这些保护措施并不能保证。请勿依赖它们。请从您的App Store构建中移除BUGSHOTKit。
确保您不会在App Store构建中构建BUGSHOTKit的最简单方法是与您的调试和临时的测试版链接。为此
-lBugshotKit
,但仅针对于调试和临时的测试版。#if defined(DEBUG) || defined(ADHOC)
”...只需从您的 application:didFinishLaunchingWithOptions:
调用 [BugshotKit enableWithNumberOfTouches:...]
即可
#import "BugshotKit.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[BugshotKit enableWithNumberOfTouches:1 performingGestures:BSKInvocationGestureSwipeUp feedbackEmailAddress:@"[email protected]"];
}
就是这样,真的。控制台跟踪立即开始,在下一次运行循环迭代中,它将查找具有 rootViewController
的 UIWindow
并附加其手势处理程序(如果有)。
用户摇晃设备时,也可以通过在应用程序代理中用 BSKWindow
替换 UIWindow
来显示 Bugshot。
self.window = [[BSKWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
如果您不想使用手势触发器,可以手动调用它(从按钮等)。
[BugshotKit show];
BugshotKit 的电子邮件包括一个包含 JSON 数据的基本信息的 info.json
文件。
{
"appName" : "TestBugshotKit",
"appVersion" : "1.0",
"systemVersion" : "7.1",
"deviceModel" : "iPhone6,1"
}
要添加自定义键,使用 [BugshotKit setExtraInfoBlock:]
设置一个返回 NSDictionary
的块,并将它们合并。
要自定义电子邮件主题,使用 [BugshotKit setEmailSubjectBlock:]
设置一个块。它将完整的字典作为参数接收,包括您通过额外信息块添加的任何键,因此您可以进行如下操作
[BugshotKit setExtraInfoBlock:^NSDictionary *{
return @{
@"userID" : @(1),
@"colorScheme" : @"dark"
};
}];
[BugshotKit setEmailSubjectBlock:^NSString *(NSDictionary *info) {
return [NSString stringWithFormat:@"Bug report from version %@, user %@", info[@"appVersion"], info[@"userID"]];
}];
请参阅包含的 LICENSE 文件。(这是 MIT 许可证。)
如果您使用 BugshotKit,请考虑支持我的账单支付项目。
谢谢。
BugshotKit 包括一个免费的单倍间距编程字体 Inconsolata,该字体在 SIL 开放字体许可证 下发布,以便使控制台外观更佳。
将其添加到您的应用程序资源中即可使用。如果它不存在,BugshotKit 将回退到 Courier New,但控制台的显示效果会更差。