TestsTested | ✗ |
LangLanguage | Obj-CObjective C |
License | MIT |
ReleasedLast Release | Dec 2014 |
Maintained by Unclaimed.
DVFloatingWindow is a simple and effective tool for reviewing your application logs just from within.
You can manage them by creating a separate tab for each log, quickly switch between tabs and see all the details you need. Also there is an opportunity to add buttons with your custom handlers for helping you to debug your app (e.g. send a network request, reset settings, etc.).
There are two possible methods to include DVFloatingWindow in your project:
Using CocoaPods:
pod 'DVFloatingWindow'
pod install
Manually:
Enable DVFloatingWindow in your <Project name>-Prefix.pch
file. Import a header file if you want to make it visible all over your project. Don't forget to disable DVFloatingWindow before submitting your app to AppStore!
#define DV_FLOATING_WINDOW_ENABLE 1
// uncomment if you want to make FLoatingWindow accessible all over project
//#import "DVFloatingWindow.h"
First of all set gestures for showing/hiding the window (tap or long press).
// to show/hide the window with 3 fingers tap
DVWindowActivationTap(3);
// to show/hide the window with 2 fingers long press for 0.5 second
DVWindowActivationLongPress(2, 0.5);
You can show/hide the window programmatically as well.
DVWindowShow();
DVWindowHide();
By default DVFloatingWindow has a Default logger tab. Logging to it is as simple as using NSLog:
DVLog(@"Current date and time: %@", [NSDate date]);
You have to create custom loggers before using them. Any loggers methods take NSString *
argument as a logger identifier.
DVLoggerCreate(@"My custom logger");
// and now you can log
DVLoggerLog(@"My custom logger", @"Here is current date again %@", [NSDate date]);
// a shorter version of previous macro
DVLLog(@"My custom logger", @"Hello");
// Default logger identifier is @"Default", so these two lines are similar
DVLLog(@"Default", @"This is an explicit way of logging to Default logger");
DVLog(@"This is an implicit way");
// to clean up all you've logged before
DVLoggerClear(@"Default");
// to delete logger if you don't need it anymore
DVLoggerRemove(@"My custom logger");
// you no longer have "My custom logger", so this line does nothing
DVLLog(@"My custom logger", @"You won't receive this message");
To configure logger please see Configuration section.
If you need to clean NSUserDefaults, to send a request to server or to simulate a push receiving, you can add buttons with custom handlers.
// Button title, handler
DVButtonAdd(@"Remove authorization token", ^{
[[NetworkManager sharedInstance] removeAuthorizationToken];
});
// go forward
DVTabNext();
// go back
DVTabPrevious();
// show the Default logger
DVTabSwitchToLogger(@"Default");
// show tab with buttons
DVTabSwitchToButtonsTab();
DVFloatingWindow has some amount of configurable options. All of them start with DVConfig prefix.
// you can get or set frame at any time:
CGRect dvFrame = DVConfigFrameGet();
dvFrame.origin.x = 30.0;
dvFrame.origin.y = 20.0;
DVConfigFrameSet(dvFrame);
// you can change all colors
DDLog(@"My old background color was %@", DVConfigBackgroundColorGet());
DVConfigBackgroundColorSet([UIColor grayColor]);
DDLog(@"My new background color is %@", DVConfigBackgroundColorGet());
// making it red
DVConfigTopBGColorSet ([UIColor redColor]);
DVConfigTopMenuBGColorSet ([UIColor darkGrayColor]);
DVConfigTopTextColorSet ([UIColor whiteColor]);
DVConfigRightCornerColorSet ([UIColor redColor]);
You can set or get default email options.
DVConfigEmailToRecipientsSet(@[@"[email protected]", @"[email protected]"]);
DVConfigEmailCcRecipientsSet(@[@"[email protected]"]);
DVConfigEmailSubjectSet(@"My app logs");
DVConfigEmailMessageBodySet(@"Here are some logs:");
DVConfigEmailIsMessageBodyHTMLSet(NO);
Loggers have only set methods, first argument is always loggerKey.
DVConfigLoggerLatestMessageOnTop(@"Default", YES);
DVConfigLoggerFont(@"Pushes logger", [UIFont systemFontOfSize:17.0]);
When your app is ready to release simply disable DVFloatingWindow.
#define DV_FLOATING_WINDOW_ENABLE 0
iOS 5.0 and greater
To send all your NSLogs to Xcode console and DVFloatingWindow just add this macro to <Project name>-Prefix.pch
file.
#define NSLog(format, ...) DVLog(format, ##__VA_ARGS__); NSLog(format, ##__VA_ARGS__)
CocoaLubmerjack is a cool logger for iOS and OS X. To integrate DVFloatingWindow with it you should get DVFloatingLumberjack logger.
Found a bug? Have a feature request? Please submit an issue.
DVFloatingWindow is available under the MIT license. See the LICENSE file for more info.