Shakebug allows you to receive feedback from your beta testers or real users and improve the quality of your application in a simple way. Here users just need to shake their mobile and all the data regarding bugs & crashes can be seen by developers through their log in panel. It also helpful to analyse your users, session, location etc. Addition, you can add events on each action of your application and track it using this Shakebug framework.
Sign up for a service at https://www.shakebug.com
- Swift
- Objective-C
- SwiftUI
- Project with and without SceneDeleage
✅ Image bug reporting
✅ Screen-Recording bug beporting
✅ Automatic Crash reporting
✅ Analytics
✅ Events
✅ Review of application for each new version
✅ Remote code execution
✅ Track login user using custom user method
✅ Custom theme color, title and error message
✅ On-premise hosting
- Minimum iOS deployment 13.0
- Minimum Mac OS deployment 10.15
- Carthage release for Swift is built with Xcode 13.0 or later
- CocoaPods: 1.10 or later.
To integrate ShakeBug into your Xcode project using CocoaPods, specify it in your Podfile:
pod 'ShakeBug'Then, run the following command:
$ pod installAdd following line to your Xcode project's Cartfile
github "softnoesis/ShakeBug"Then, run the following command:
$ carthage updateThen drag Shakebug.xcframework from Carthage folder to your Xcode project's settings.
Navigate to the SPM section in your project, add a new package, point it to
https://github.com/softnoesis/ShakeBug/and select the latest version.
-
Import the ShakeBug framework header into your app delegate.
// Swift import ShakeBug// Objective-C #import <ShakeBug/ShakeBug.h>
-
Add the following to your app delegate's
application:didFinishLaunchingWithOptions:method.// Swift ShakeBugSDK.sharedInstance.initiateWithKey(“<Your Key>")
// Objective-C [[ShakeBugSDK sharedInstance] initiateWithKey:@"<Your Key>"];
Be sure to replace
<Your Key>with your application key which given by ShakeBug website.
NSPhotoLibraryUsageDescription must be added in info.plist.
- Add the following to your app delegate's
application:didFinishLaunchingWithOptions:method for showing or not showing first time tutorial screen
// Swift
ShakeBugSDK.sharedInstance.showTutorialScreenFirstTime(false) // Default value True// Objective-C
[[ShakeBugSDK sharedInstance] showTutorialScreenFirstTime:NO];// Default value YES- If you want to show bug or crash from Simulator then use following code
application:didFinishLaunchingWithOptions:
// Swift
ShakeBugSDK.sharedInstance.allowBugCrashFromSimulator(true) // Default value false// Objective-C
[[ShakeBugSDK sharedInstance] allowCrashFromSimulator:YES];// Default value NO- If you dont want to show any logs on console then use following code
application:didFinishLaunchingWithOptions:
// Swift
ShakeBugSDK.sharedInstance.makeLogEnabled(false) // Default value false// Objective-C
[[ShakeBugSDK sharedInstance] makeLogEnabled:NO];// Default value NO- If you want to set forcefully any language for the bug reporting screen then use following code
application:didFinishLaunchingWithOptions:
// Swift
ShakeBugSDK.sharedInstance.setShakebugSDKLanguage(ShakebugLanguage.french) // Objective-C
[[ShakeBugSDK sharedInstance] setShakebugSDKLanguage:ShakebugLanguage.french];Note: Just mind that here, by default it will take device language as defualt language.
- Developer can also set custome theme color in Shakebug SDK screens:
// Swift
ShakeBugSDK.sharedInstance.setShakebugThemeColor(UIColor.green)// Objective-C
[[ShakeBugSDK sharedInstance] setShakebugThemeColor:[UIColor greenColor]];- Developer can also set custom title for Shakebug annotate and feedback input screen:
// Swift
ShakeBugSDK.sharedInstance.changeSDKScreenTitle("Annotate your Bug", "Feedback") // Objective-C
[[ShakeBugSDK sharedInstance] changeSDKScreenTitle:@"Annotate your bug" :@"Add detail"];- Set custom error message for any error alert screen from SDK.
// Swift
ShakeBugSDK.sharedInstance.changeSDKErrorAlertMessage("This Error")// Objective-C
[[ShakeBugSDK sharedInstance] changeSDKErrorAlertMessage:@"Something wrong.."];- If you have on-premise hosting plan then following method will be used.
// Swift
ShakeBugSDK.sharedInstance.setShakebugSDKEndPointURL(url: "", headerKey: "", sslPublicKey: "")// Objective-C
[[ShakeBugSDK sharedInstance] setShakebugSDKEndPointURLWithUrl:@"" headerKey:@"" sslPublicKey:@""];Note: New enpoint url, its header key and SSL public key(Optional)
- User can report bug either by shaking phone or by triggering default screen capture event. This method can be used to manage "screen capture" event should trigger bug reporting or not.
// Swift
ShakeBugSDK.sharedInstance.allowToReportBugByScreenCapture(false) // Default value true// Objective-C
[[ShakeBugSDK sharedInstance] allowToReportBugByScreenCapture:NO]; // Default value YES- User can report bug either by shaking phone or by triggering default screen capture event. This method can be used to manage "shaking mobile" should trigger bug reporting or not.
// Swift
ShakeBugSDK.sharedInstance.allowToReportBugByShakingMobile(true) // Default value true// Objective-C
[[ShakeBugSDK sharedInstance] allowToReportBugByShakingMobile:YES]; // Default value YES- When a crash occurs, the SDK will automatically share a screen recording of the last 18-20 seconds of the application. If you pass false, it will not send the video with the crash report. By default, this is set to false. So if you want video with your each crash report then you have to call this function with value true.
Note: When you make screen recording enable fro crash then it might compromise little UI performance of app.
// Swift
ShakeBugSDK.sharedInstance.allowAutoCaptureScreenForCrashes(true) // Default value true// Objective-C
[[ShakeBugSDK sharedInstance] allowAutoCaptureScreenForCrashes:YES]; // Default value YESIf you want add event to any screen or activity use following methods
// Swift
ShakeBugSDK.sharedInstance.addEventKey(key:"App_open", eventValue: "Started app") //pass any key or value// Objective-C
[[ShakeBugSDK sharedInstance] addEventKey:@"App_open" eventValue:@"Started app"];// pass any key or valueShakebug allows you to associate custom user information with session data for better tracking and personalized reporting. This is useful when you want to tag crash reports or feedback with specific user details.
// Swift
public func setcustomUser(customUserId: String, name: String, email: String, country: String, other: String)// Objective-C
[[ShakeBug shared] setcustomUserWithCustomUserId:@"user_123"
name:@"John Doe"
email:@"john.doe@example.com"
country:@"USA"
other:@"iOS beta tester"];The Shakebug iOS SDK shows a friendly review popup to gather helpful feedback from users. It appears only after the app has been opened at least 3 times and waits at least 2 days between reminders — so it's thoughtful, not annoying. Once a user submits a review, they won’t be asked again for that app version. Everything is remembered automatically, and the popup closes on its own after submission to keep the experience smooth.
Note: If you deselect the rating popup option from "Edit Project" screen in app.shakebug.com then rating popup will not visible.
In case, you want to trigger manually review rating popup then use this method
// Swift
ShakeBugSDK.sharedInstance.triggerRatingsPopup()// Objective-C
[[ShakeBugSDK sharedInstance] triggerRatingsPopup];With Shakebug Remote Code, you can fetch dynamic configuration values based on predefined keys set in the Shakebug dashboard. It supports String, Number, Boolean, and JSON types and allows you to modify app behavior without a version update.
// Swift
ShakeBugSDK.sharedInstance.fetchRemoteCodeValue(forKey: "your_key") { value in
print("Remote code value: \(value ?? "nil")")
}// Objective-C
[[ShakeBugSDK sharedInstance] fetchRemoteCodeValueForKey:@"your_key" completion:^(id _Nullable value) {
NSLog(@"Remote code value: %@", value ?: @"nil");
}];Build & run your app. Once your app is running, shake your device (^⌘Z in the simulator) to report a bug! Bug/Crash reports are sent directly to login panel of Shakebug.com and also notify on your registered email address. Additionally, now user can report bug if they trigger screen capture event in iPhone.
If you want to trigger bug reporting screen without shaking then you can call following method in any button action of any screen.
// Swift
ShakeBugSDK.sharedInstance.triggerBugReporting()// Objective-C
[[ShakeBugSDK sharedInstance] triggerBugReporting];Visit on: https://www.shakebug.com
Contact us on support@shakebug.com in case of any use.