How to get started

The FlowUp SDK is plug and play by design. You just need to create an account in our portal and add the SDK to your project with your personalized API key. You will find all documentation once logged in. Essentially you will find a step by step installation guide.

1. Add the SDK to your build.gradle file.

dependencies {
	compile 'io.flowup:android-sdk:<LAST_VERSION_RELEASED>'
	testCompile 'io.flowup:android-sdk-no-op:<LAST_VERSION_RELEASED>'
}

2. Initialize the SDK from your Application::onCreate method.

FlowUp.Builder.with(this)
	.apiKey("YOUR_API_KEY")
	.forceReports(BuildConfig.DEBUG)
	.start();

3. Build and run your application. In just a few seconds, you will see how the SDK starts reporting data into the dashboards.


All the issues reported by our users and the Android SDK changelog can be found in this GitHub repository.

If your project uses lint remember to add this configuration to your project as follows.

android {
  ...
  lintOptions {
    abortOnError true
    disable 'InvalidPackage'
  }
}

If you face any error related to the build configuration or the application startup like this:

java.lang.IllegalArgumentException: There is no GcmTaskService component registered within this package. Have you extended GcmTaskService correctly?
at com.google.android.gms.common.internal.zzx.zzb(Unknown Source)
at com.google.android.gms.gcm.GcmNetworkManager.zzdi(Unknown Source)
at com.google.android.gms.gcm.GcmNetworkManager.schedule(Unknown Source)
at io.flowup.config.android.a.a(Unknown Source)
at io.flowup.FlowUp.p(Unknown Source)
at io.flowup.FlowUp.d(Unknown Source)
at io.flowup.FlowUp$1.run(Unknown Source)
at java.lang.Thread.run(Thread.java:841)

Remember to review the Google Play Services dependencies you have the version 11.0.1 or to exclude it from the Android SDK as follows:

compile ("io.flowup:android-sdk:<LAST_VERSION_RELEASED>") {
    exclude group: 'com.google.android.gms'
}

Additionally, remember you can send an email to support@flowup.io asking for any doubt or issue.

How does it work

Once FlowUp is initialized, it starts collecting and storing every metric right away. Once FlowUp detects that the user is connected to a WiFi network, the SDK will synchronize the performance metrics automatically.

We do not want you to modify your production code to collect performance metrics you need. The FlowUp SDK is fully transparent to developers, so that with one single line, you will tackle all metrics that matters to monitor your app performance.

Advanced configuration

The FlowUp SDK is distributed with a not-operational version. This way you avoid reporting data whenever your are executing your tests or developing the application. This configuration is optional, all you need to do is changing how you import the Android SDK.

This configuration will not initialize FlowUp if the used build type is the DEBUG one. As a result, your application will recollect data just if the build is the release one.

dependencies {
	releaseCompile 'io.flowup:android-sdk:<LAST_VERSION_RELEASED>'
	debugCompile 'io.flowup:android-sdk-no-op:<LAST_VERSION_RELEASED>'
	testCompile 'io.flowup:android-sdk-no-op:<LAST_VERSION_RELEASED>'
}

Additionally, you can configure the SDK to force the reports every ten seconds or to show the SDK log traces as follows:

FlowUp.Builder.with(this)
	.apiKey("YOUR_API_KEY")
	.logEnabled(true)
	.forceReports(true)
	.start();

iOS

1. Add the SDK to your Podfile

pod 'FlowUpIOSSDK', '~> <LAST_VERSION_RELEASED>'.

2. Initialize the FlowUp iOS SDK in your AppDelegate class application:didFinishLaunchingWithOptions: method.

Objective-C:
// YourAppDelegate.h
#import "FlowUp.h"

// YourAppDelegate.m
@implementation YourAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [FlowUp application:application
didFinishLaunchingWithOptions:launchOptions
                 apiKey:@"@apiKey.getValue"
     isDebugModeEnabled:YES];
     return YES;
}
@end

Swift:
import FlowUp

class YourAppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        FlowUp.application(application,
                           didFinishLaunchingWithOptions: launchOptions,
                           apiKey: "@apiKey.getValue",
                           isDebugModeEnabled: true)
        return true
    }
}

Remember to disable the debug mode when building a release target.


3. Build and run your application. In just a few seconds, you will see how the SDK starts reporting data into the dashboards.


All the issues reported by our users and the iOS SDK changelog can be found in this GitHub repository.

How does it work

Once FlowUp is initialized, it starts collecting and storing every metric right away. FlowUp will find the best moment to synchronize the stored metrics.

We do not want you to modify your production code to collect performance metrics you need. The FlowUp SDK is fully transparent to developers, so that with one single line, you will tackle all metrics that matters to monitor your app performance.

Our SDK is implemented in Objective-C and it uses a variety of APIs to collect all the system metrics we use to detect and show you potential performance issues in your app. We don't use any private API (and never will!) so it's completely safe to use FlowUp in your app and upload it to the App Store.

Let your app flow up and to the right!