SPDebugMenu 0.2.2

SPDebugMenu 0.2.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新版本2016年11月

Sergio Padrino 维护。



  • 作者:
  • Sergio Padrino

SPDebugMenu 是一个 iOS 开发者的库,用于在他们的应用程序中显示可自定义操作的调试菜单。

它支持

  • 不同的触发方式:设备摇晃、多次点击或屏幕长按。
  • 自定义调试动作。
  • 通过电子邮件发送报告,包括截图和一些有用信息。
  • 在您的设备上模拟内存警告通知

安装

  1. 使用 CocoaPods

    将 SPDebugMenu 添加到您的 Podfile 中

    platform :ios, "6.0"
    pod 'SPDebugMenu'
    

    运行以下命令

    pod install
    
  2. 静态库

    克隆项目或将它添加为子模块。将 SPDebugMenu.xcodeproj 拖到您的项目中,将其添加为目标依赖项并链接 libSPDebugMenu.a。然后,您可以简单地这样做

    #import <SPDebugMenu/SPDebugMenu.h>
    
  3. 手动

    克隆项目或将它添加为子模块。将整个 SPDebugMenu 文件夹拖到您的项目中。

使用方式

为了启用您的调试菜单,您只需要将其实例化并将其与一个窗口相关联,然后注册一些触发器和动作。您可以在您的 UIApplicationDelegateapplication:didFinishLaunchingWithOptions: 方法中这样做

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    ...
    self.window = ...;
    ...
    // Configure the debug menu
    self.debugMenu = [[SPDebugMenu alloc] initWithWindow:self.window];
    [self.debugMenu registerTrigger:...];
    [self.debugMenu registerAction:...];
    ...
}

触发器

SPDebugMenu 提供了一些有用的触发器,这样您就不需要为特定情况编写自己的了。

  • SPDebugMenuTapTrigger 将在检测到指定数量的点击并在视图中指定数量的触摸后触发调试菜单
    SPDebugMenuTapTrigger *tapTrigger = [[SPDebugMenuTapTrigger alloc] init];
    tapTrigger.view = self.window;            // Detect taps in the whole window
    tapTrigger.numberOfTouchesRequired = 2;   // Two fingers required
    tapTrigger.numberOfTapsRequired = 5;      // Five taps required
  • SPDebugMenuLongPressTrigger 将在检测到指定数量的触摸并在视图中长按手势后触发调试菜单
    SPDebugMenuLongPressTrigger *longPressTrigger = [[SPDebugMenuLongPressTrigger alloc] init];
    longPressTrigger.view = self.window;            // Detect taps in the whole window
    longPressTrigger.numberOfTouchesRequired = 2;   // Two fingers required
  • SPDebugMenuShakeTrigger 将在设备摇晃后触发调试菜单。此触发器需要一个更复杂的配置与某些实体(通常为窗口)来告知它摇晃。为了使这个过程更容易,SPDebugMenu 包括一个名为 SPShakeTriggerWindowUIWindow 子类,它可以存储对 SPDebugMenuShakeTrigger 的引用并通知它运动事件。这样,您可以将您的 UIWindow 作为 SPShakeTriggerWindow 的子类用于调试构建而不要在发布构建中。下面是一个示例说明您如何准备应用程序以使用摇晃触发器来显示调试菜单
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    SPShakeTriggerWindow *shakeTriggerWindow = [[SPShakeTriggerWindow alloc]
                                                initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window = shakeTriggerWindow;
    ...
    // Configure the debug menu
    self.debugMenu = [[SPDebugMenu alloc] initWithWindow:self.window];
    ...
    // Configure a shake trigger (requires a ShakeTriggerWindow)
    SPDebugMenuShakeTrigger *shakeTrigger = [[SPDebugMenuShakeTrigger alloc] init];

    // Here is where we wire the window and the trigger to be notified about motion events
    shakeTriggerWindow.shakeTrigger = shakeTrigger;

    // Finally we register the trigger
    [self.debugMenu registerTrigger:shakeTrigger];
}

如果这些触发器中没有一个是您满意的,您始终可以编写自己的触发器。您只需编写一个实现 SPDebugMenuTriggering 协议的类,将您的触发逻辑放在其中,并通过调用其代理的 debugMenuWasTriggered: 方法来显示调试菜单。

动作

操作以简单菜单的形式展示,允许用户更改某些设置或执行一些在调试构建中对开发者有用的操作。

发送报告

您最可能会使用的操作是在发现错误时,发送包含截图和一些信息的电子邮件给开发者或问题跟踪系统。SPDebugMenu 包含 SPSendReportAction 操作,它已经允许您完成所有这些操作。它将显示一个预填充数据的邮件编辑屏幕(包括应用当前状态的截图)。已填写的数据通过一个实现 SPSendReportStatusComposing 协议的类收集,该协议包含三个方法

  • currentStatus:包含要发送文本的 NSString(收集一些信息,如当前用户、连接状态等)。
  • subject:要发送的电子邮件的主题。
  • defaultRecipients:将报告发送到的默认收件人(电子邮件地址)的 NSArray
// Configure a "Send report" action
SPExampleStatusComposer *statusComposer = [[SPExampleStatusComposer alloc] init];

SPSendReportAction *sendReportAction = [[SPSendReportAction alloc] init];
sendReportAction.statusComposer = statusComposer;
[self.debugMenu registerAction:sendReportAction];

模拟内存警告

如果您想模拟设备中的内存警告,有一个名为 SPSimulateMemoryWarningAction 的操作,您可以将此操作包含在调试菜单中以实现此目的。

// Configure a "Simulate memory warning" action
SPSimulateMemoryWarningAction *simulateMemoryWarningAction = [[SPSimulateMemoryWarningAction alloc] init];
[self.debugMenu registerAction:simulateMemoryWarningAction];

自定义操作

为了定制操作,您可以通过以下方法创建一个实现 SPDebugMenuAction 协议的类

  • prepare:当调试菜单即将显示时将调用此方法。如果您的操作在菜单实际显示之前需要一些工作,这是执行工作的地方。例如:取应用截图。
  • performActionWithNavigationController::这是操作执行实际工作的地方。它可以通过操作发生的导航控制器显示新的视图控制器。
  • dispose:在即将关闭调试菜单之前调用此方法。其目的是进行任何“清理工作”(如释放在 'prepare' 方法中拍摄的截图)。
  • shouldDismissDebugMenuAfterFinish:指示在操作完成后是否应关闭调试菜单的标志。
  • shouldReloadDebugMenuAfterFinish:指示在操作完成后是否应刷新调试菜单的标志。

此类还应在动作开始和结束时分别调用其代理的 debugMenuActionDidStart:debugMenuActionDidEnd: 方法。

要求

SPDebugMenu 需要 iOS 6.0 和 ARC。

您仍然可以在非 ARC 项目中使用 SPDebugMenu。只需在每个源文件中设置 -fobjc-arc 编译器标志。

示例

除了本 README 中的代码外,您还可以在 SPDebugMenuExample 中看到包含多个触发器和操作的完整示例。

联系信息

SPDebugMenu 由 Sergio Padrino 创建:@sergiou87

贡献

如果您想为此项目做出贡献,请按照以下步骤操作

  1. Fork 仓库。
  2. 在本地机器上克隆您自己的分支。
  3. 创建您的功能分支。
  4. 提交您的更改,推送到您的分支并提交一个拉取请求。

使用 SPDebugMenu 的应用程序

许可

SPDebugMenu 在 MIT 许可证下提供。有关更多信息,请参阅LICENSE 文件