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");