instabug 1.0.0-beta.5
instabug: ^1.0.0-beta.5 copied to clipboard
Instabug is an in-app feedback and bug reporting tool for mobile apps. With just a simple shake, your users or beta testers can report bugs or send in-app feedback and the SDK will capture an enviro [...]
Instabug for Flutter #
A Flutter plugin for Instabug.
⚠️ While this plugin is currently in beta, it's safe to start using it and ship apps with it to production. If you'd like to give us feedback or create a pull request, we would highly appreciate it!
Available Features #
Feature | Status |
---|---|
Bug Reporting | ✅ |
Crash Reporting | ⚠ |
In-App Chat | ✅ |
In-App Surveys | ✅ |
Feature Requests | ✅ |
- ✅ Stable
- ⚙️ Under active development
- ⚠ Not available yet
APIs #
The section below contains the APIs we're planning to implement for our 1.0 release across different classes. We'll add the Dart API methods as we implement them.
Instabug
API Method | Native Equivalent (Android/iOS) |
---|---|
start(String token, List<InvocationEvent> invocationEvents) |
new Instabug.Builder(this, "APP_TOKEN").build() + startWithToken:invocationEvents: |
showWelcomeMessageWithMode(WelcomeMessageMode welcomeMessageMode) |
showWelcomeMessage(WelcomeMessage.State state) + showWelcomeMessageWithMode: |
identifyUserWithEmail(String email, [String name]) |
identifyUser(String username, String email) + identifyUserWithEmail:name: |
logOut() |
logoutUser() + logOut |
setLocale(Locale locale) |
setLocale(Locale locale) + setLocale: |
setColorTheme(ColorTheme colorTheme) |
setColorTheme(InstabugColorTheme theme) + setColorTheme: |
appendTags(List<String> tags) |
addTags(String... tags) + appendTags: |
resetTags() |
resetTags() + resetTags |
getTags() |
getTags() + getTags |
setStringForKey(String value, String key) |
setCustomTextPlaceHolders(InstabugCustomTextPlaceHolder placeholder) + setValue:forStringWithKey: |
setUserAttributeWithKey(String value, String key) |
setUserAttribute(String key, String value) + setUserAttribute:withKey: |
getUserAttributeForKey(Sring Key) |
getUserAttribute(String key) + userAttributeForKey: |
removeUserAttributeForKey(String key) |
removeUserAttribute(String key) + removeUserAttributeForKey: |
getUserAttributes() |
getAllUserAttributes() + userAttributes: |
logUserEventWithName(String name) |
logUserEvent(String name) + logUserEventWithName: |
show() |
show() + show |
setSessionProfilerEnabled(bool sessionProfilerEnabled) |
setSessionProfilerState(Feature.State state) sessionProfilerEnabled |
setPrimaryColor(Color color) |
setPrimaryColor(@ColorInt int primaryColorValue) tintColor |
setUserData(String userData) |
setUserData(String userData) userData |
addFileAttachmentWithURL(String filePath, String fileName) |
addFileAttachment(Uri fileUri, String fileNameWithExtension) + addFileAttachmentWithURL: |
addFileAttachmentWithData(Uint8List data, String fileName) |
addFileAttachment(byte[] data, String fileNameWithExtension) + addFileAttachmentWithData: |
clearFileAttachments() |
clearFileAttachment() + clearFileAttachments |
setWelcomeMessageMode(WelcomeMessageMode welcomeMessageMode) |
setWelcomeMessageState(WelcomeMessage.State welcomeMessageState) welcomeMessageMode |
BugReporting
API Method | Native Equivalent (Android/iOS) |
---|---|
invokeWithMode(InvocationMode invocationMode, [List<InvocationOption> invocationOptions]) |
invoke(InvocationMode mode, @InvocationOption int... options) +invokeWithMode:options: |
setEnabled(bool isEnabled) |
setState(Feature.State state) enabled |
setOnInvokeCallback(Function function) |
setOnInvokeCallback(OnInvokeCallback onInvokeCallback) willInvokeHandler |
setOnDismissCallback(Function function) |
setOnDismissCallback(OnSdkDismissCallback onSdkDismissedCallback) didDismissHandler |
setInvocationEvents(List<InvocationEvent> invocationEvents) |
setInvocationEvents(InstabugInvocationEvent... invocationEvents) invocationEvents |
setEnabledAttachmentTypes(bool screenshot, bool extraScreenshot, bool galleryImage, bool screenRecording) |
setAttachmentTypesEnabled(boolean initial, boolean extra, boolean gallery, boolean recording enabledAttachmentTypes |
setReportTypes(List<ReportType> reportTypes) |
setReportTypes(@BugReporting.ReportType int... types) promptOptionsEnabledReportTypes |
setExtendedBugReportMode(ExtendedBugReportMode extendedBugReportMode) |
setExtendedBugReportState(ExtendedBugReport.State state) extendedBugReportMode |
setInvocationOptions(List<InvocationOption> invocationOptions) |
setOptions(@Option int... options) bugReportingOptions |
showWithOptions(ReportType reportType, List<InvocationOption> invocationOptions) |
show(@BugReporting.ReportType int type) + showWithReportType:options: |
InstabugLog
API Method | Native Equivalent (Android/iOS) |
---|---|
logDebug(String message) |
d(String message) + logDebug: |
logVerbose(String message) |
v(String message) + logVerbose: |
logInfo(String message) |
i(String message) + logInfo: |
logWarn(String message) |
w(String message) + logWarn: |
logError(String message) |
e(String message) + logError: |
clearAllLogs(String message) |
clearLogs() + clearAllLogs: |
Surveys
API Method | Native Equivalent (Android/iOS) |
---|---|
setEnabled(bool isEnabled) |
setState(Feature.State state) enabled |
setAutoShowingEnabled(bool isEnabled) |
setAutoShowingEnabled(boolean isAutoShowingEnabled) autoShowingEnabled |
getAvailableSurveys(Function function) |
getAvailableSurveys() + availableSurveys |
setOnShowCallback(Function function) |
setOnShowCallback(OnShowCallback onShowCallback) willShowSurveyHandler |
setOnDismissCallback(Function function) |
setOnDismissCallback(OnDismissCallback onDismissCallback) didDismissSurveyHandler |
setShouldShowWelcomeScreen(bool shouldShowWelcomeScreen) |
setShouldShowWelcomeScreen(boolean shouldShow) shouldShowWelcomeScreen |
showSurveyIfAvailable() |
showSurveyIfAvailable() + showSurveyIfAvailable |
showSurvey(String surveyToken) |
showSurvey(String token) + showSurveyWithToken: |
hasRespondedToSurvey(String surveyToken, Function function) |
hasRespondToSurvey(String token) + hasRespondedToSurveyWithToken: |
FeatureRequests
API Method | Native Equivalent (Android/iOS) |
---|---|
show() |
show() + show |
setEmailFieldRequired(bool isEmailFieldRequired, List<ActionType> actionTypes) |
setEmailFieldRequired(boolean isEmailRequired, ActionTypes actions) + setEmailFieldRequired:forAction: |
Chats
API Method | Native Equivalent (Android/iOS) |
---|---|
show() |
show() + show |
setEnabled(bool isEnabled) |
setState(Feature.State state) enabled |
Replies
API Method | Native Equivalent (Android/iOS) |
---|---|
setEnabled(bool isEnabled) |
setState(Feature.State state) enabled |
show() |
show() + show |
hasChats(Function function) |
hasChats() + hasChats |
setOnNewReplyReceivedCallback(Function function) |
setOnNewReplyReceivedCallback(Callback callback) didReceiveReplyHandler |
getUnreadRepliesCount(Function function) |
getUnreadRepliesCount() unreadRepliesCount |
setInAppNotificationsEnabled(bool isEnabled) |
setInAppNotificationEnabled(Boolean isChatNotificationEnable) inAppNotificationsEnabled |
setInAppNotificationSound(bool isEnabled) |
setInAppNotificationSound(Boolean shouldPlaySound) |
Integration #
Creating a Flutter app on the Instabug dashboard isn't possible yet. Create a React Native app instead.
Installation #
- Add Instabug to your
pubspec.yaml
file.
dependencies:
instabug:
- Install the package by running the following command.
flutter packages get
Using Instabug #
- To start using Instabug, import it into your Flutter app.
import 'package:instabug/Instabug.dart';
- Initialize the SDK in
initState()
. This line enables the SDK with the default behavior and sets it to be shown when the device is shaken. Ignore this if you're building for Android only.
Instabug.start('APP_TOKEN', [InvocationEvent.shake]);
- Add the following Maven repository to your project level
build.gradle
allprojects {
repositories {
maven {
url "https://sdks.instabug.com/nexus/repository/instabug-cp"
}
}
}
Make sure to replace app_token
with your application token.
- If your app supports Android, create a new Java class that extends
FlutterApplication
and add it to yourAndroidManifest.xml
.
<application
android:name=".CustomFlutterApplication"
...
</application>
- In your newly created
CustomFlutterApplication
class, overrideonCreate()
and add the following code.
ArrayList<String> invocationEvents = new ArrayList<>();
invocationEvents.add(InstabugFlutterPlugin.INVOCATION_EVENT_SHAKE);
new InstabugFlutterPlugin().start(CustomFlutterApplication.this, "APP_TOKEN", invocationEvents);
Microphone and Photo Library Usage Description (iOS Only) #
Instabug needs access to the microphone and photo library to be able to let users add audio and video attachments. Starting from iOS 10, apps that don’t provide a usage description for those 2 permissions would be rejected when submitted to the App Store.
For your app not to be rejected, you’ll need to add the following 2 keys to your app’s info.plist file with text explaining to the user why those permissions are needed:
NSMicrophoneUsageDescription
NSPhotoLibraryUsageDescription
If your app doesn’t already access the microphone or photo library, we recommend using a usage description like:
- "
<app name>
needs access to the microphone to be able to attach voice notes." - "
<app name>
needs access to your photo library for you to be able to attach images."
The permission alert for accessing the microphone/photo library will NOT appear unless users attempt to attach a voice note/photo while using Instabug.
Network Logging #
You can choose to attach all your network requests to the reports being sent to the dashboard. To enable the feature when using the dart:io
package HttpClient
, use the custom Instabug client:
InstabugCustomHttpClient client = InstabugCustomHttpClient();
and continue to use the package normally to make your network requests:
client.getUrl(Uri.parse(URL)).then((request) async {
var response = await request.close();
});
We also support the packages http
and dio
. For details on how to enable network logging for these external packages, refer to the Instabug Dart Http Adapter and the Instabug Dio Interceptor repositories.