Skip to content

Analytics

AppAmbit Analytics gives you insight into user behavior and engagement, helping you improve your application experience. The SDK automatically collects session data and device details such as model and OS version. You can also define custom events to track interactions that matter to you. All collected data is accessible through the AppAmbit portal for analysis.

Session and Device Information

After integrating AppAmbit Analytics and starting the SDK, it will begin tracking user sessions and device information (e.g., OS version, device model) automatically—no extra code required, unless manual session mode is enabled.

Manual Session Management

Info

Manual mode is disabled by default. If you need more control over sessions, events, and logs, you can enable manual session mode.

To handle sessions manually, you must call enableManualSession() before starting the SDK:

public static MauiApp CreateMauiApp()
{
    Analytics.EnableManualSession();
    var builder = MauiApp.CreateBuilder();
    builder
        .UseMauiApp<App>()
        .UseAppAmbit("<YOUR-APPKEY>");

    return builder.Build();
}

Swift

import SwiftUI
import AppAmbit;

@main
struct AppAmbitTestingApp: App {
    init() {
        Analytics.enableManualSession()
        AppAmbit.start(appKey: "<YOUR-APPKEY>")
    }
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

Objective-C

#import "ViewController.h"
#import "AppAmbitSdk/AppAmbitSdk-Swift.h"

- (void)viewDidLoad {
    [super viewDidLoad];
    [Analytics enableManualSession];
    [AppAmbit startWithAppKey:@"<YOUR-APPKEY>"];
}

Java

import com.appambit.sdk.Analytics;
import com.appambit.sdk.AppAmbit;

@Override
protected void onCreate(Bundle savedInstanceState) {
    Analytics.enableManualSession();
    AppAmbit.start(getApplicationContext(), "<YOUR-APPKEY>");
    ...
}

Kotlin

import com.appambit.sdk.Analytics;
import com.appambit.sdk.AppAmbit;

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    Analytics.enableManualSession();
    AppAmbit.start(this, "<YOUR-APPKEY>");
    ...
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // Enable manual session management
  AppambitSdk.enableManualSession();
  AppambitSdk.start(appKey: '<YOUR-APPKEY>');
  runApp(const MyApp());
}
export default function App() {
  useEffect(() => {
    enableManualSession();
    start("<YOUR-APPKEY>");
  }, []);
}
public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);
        Analytics.EnableManualSession();
        AppAmbitSdk.Start("<YOUR-APPKEY>");
    }
}
public partial class App : Application
{
    public override void OnFrameworkInitializationCompleted()
    {
        Analytics.EnableManualSession();
        AppAmbitSdk.Start("<YOUR-APPKEY>");
        ...
        base.OnFrameworkInitializationCompleted();
    }
}

Warning

If manual session mode is enabled, no event, log, or crash will be sent or saved locally until a session is started manually using startSession().

Start Session

If you enabled manual session mode, start a session manually:

await Analytics.StartSession();

Swift

Analytics.startSession();

Objective-C

[Analytics startSessionWithCompletion:nil];

Java

Analytics.startSession();

Kotlin

Analytics.startSession()

await AppambitSdk.startSession();
startSession()
await Analytics.StartSession();
await Analytics.StartSession();

Note

If the method is called again before ending the session, the call will be ignored.

End Session

End the current session manually:

await Analytics.EndSession();

Swift

Analytics.endSession();

Objective-C

[Analytics endSessionWithCompletion:nil];

Java

Analytics.endSession();

Kotlin

Analytics.endSession()

await AppambitSdk.endSession();
endSession()
await Analytics.EndSession();
await Analytics.EndSession();

Note

If the method is called again without starting a new session, the call will be ignored.

Generate a Test Event

AppAmbit Analytics includes an API to trigger a test event, useful for verifying SDK integration.

Analytics.GenerateTestEvent();

Swift

Analytics.generateTestEvent();

Objective-C

[Analytics generateTestEventWithCompletion:nil];

Java

Analytics.generateTestEvent();

Kotlin

Analytics.generateTestEvent()

await AppambitSdk.generateTestEvent();
generateTestEvent()
Analytics.GenerateTestEvent();
Analytics.GenerateTestEvent();

Custom Events

Track custom events to capture meaningful user interactions. Once the SDK is initialized, use the trackEvent() method to track your events with properties.

Limits: - Maximum 150 distinct event names - Maximum 120 characters per event name - Maximum 80 characters per event property name and value

Events with Properties

Analytics.TrackEvent("Audio started", new Dictionary<string, string> {
    { "Category", "Music" },
    { "FileName", "favorite.mp3"}
});

Swift

Analytics.trackEvent(eventTitle: "Audio started", data: [
    "Category": "Music",
    "FileName": "favorite.mp3"
])

Objective-C

[Analytics trackEventWithEventTitle:@"Audio started"
                               data:@{
                                   @"Category": @"Music",
                                   @"FileName": @"favorite.mp3"
                               }
                          createdAt:nil
                         completion:nil];

Java

Map<String, String> properties = new HashMap<>();
properties.put("Category", "Music");
properties.put("FileName", "favorite.mp3");
Analytics.trackEvent("Audio started", properties);

Kotlin

val properties: Map<String, String> = mapOf(
    "Category" to "Music",
    "FileName" to "favorite.mp3"
)
Analytics.trackEvent("Audio started", properties)

await AppambitSdk.trackEvent('Audio started', <String, String>{
    'Category': 'Music',
    'FileName': 'favorite.mp3'
});
trackEvent("Audio started", {
    "Category": "Music",
    "FileName": "favorite.mp3"
})
Analytics.TrackEvent("Audio started", new Dictionary<string, string> {
    { "Category", "Music" },
    { "FileName", "favorite.mp3"}
});
Analytics.TrackEvent("Audio started", new Dictionary<string, string> {
    { "Category", "Music" },
    { "FileName", "favorite.mp3"}
});

Simple Events (Without Properties)

Properties are optional. To send a simple event without additional data:

Analytics.TrackEvent("Music clicked");

Swift

Analytics.trackEvent(eventTitle: "Music clicked", data: [:])

Objective-C

[Analytics trackEventWithEventTitle:@"Music clicked"
                               data:@{}
                          createdAt:nil
                         completion:nil];

Java

Analytics.trackEvent("Music clicked", null);

Kotlin

Analytics.trackEvent("Music clicked", null)

await AppambitSdk.trackEvent("Music clicked", {});
trackEvent("Music clicked")
Analytics.TrackEvent("Music clicked");
Analytics.TrackEvent("Music clicked");