GatiFlow.Maui 1.0.0

dotnet add package GatiFlow.Maui --version 1.0.0
                    
NuGet\Install-Package GatiFlow.Maui -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GatiFlow.Maui" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="GatiFlow.Maui" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="GatiFlow.Maui" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add GatiFlow.Maui --version 1.0.0
                    
#r "nuget: GatiFlow.Maui, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package GatiFlow.Maui@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=GatiFlow.Maui&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=GatiFlow.Maui&version=1.0.0
                    
Install as a Cake Tool

GatiFlow SDK for .NET MAUI

Crash reporting, analytics, and app distribution for .NET MAUI apps — iOS, Android, and Mac Catalyst from a single C# codebase.

Installation


<PackageReference Include="GatiFlow.Maui" Version="1.*" />

Or via CLI:

dotnet add package GatiFlow.Maui

GitHub Packages (pre-release)


<packageSources>
  <add key="gatiflow" value="https://nuget.pkg.github.com/dmsyudha/index.json" />
</packageSources>

Quick Start

Add one line to MauiProgram.cs:

using GatiFlow.Maui;

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
            .UseGatiFlow("mhub_YOUR_APP_TOKEN");   // ← add this

        return builder.Build();
    }
}

The SDK starts automatically when the app launches on every platform.

Option 2 — Token from platform config (zero-code)

Store the token in your platform config files and call UseGatiFlow() without arguments:

AndroidPlatforms/Android/AndroidManifest.xml:

<application ...>
    <meta-data
        android:name="dev.gatiflow.APP_TOKEN"
        android:value="mhub_YOUR_APP_TOKEN" />
</application>

iOS / Mac CatalystPlatforms/iOS/Info.plist & Platforms/MacCatalyst/Info.plist:

<key>GatiFlowAppToken</key>
<string>mhub_YOUR_APP_TOKEN</string>

Then in MauiProgram.cs:

builder.UseGatiFlow();   // reads token from platform config automatically

Option 3 — Manual start

var config = new GatiFlowConfig.Builder("mhub_YOUR_APP_TOKEN")
    .SetDebugLogging(true)       // verbose logs in debug builds
    .SetFlushIntervalMs(15_000)  // flush analytics every 15 s
    .Build();

await GatiFlow.StartAsync(config);

Analytics

// Track a custom event
await GatiFlow.Analytics.TrackEvent("button_tap", new()
{
    ["screen"]   = "HomeScreen",
    ["element"]  = "subscribe_cta",
});

// Track a screen / page view
await GatiFlow.Analytics.TrackScreen("HomeScreen");

// Track a purchase
await GatiFlow.Analytics.TrackEvent("purchase", new()
{
    ["amount"]   = 9.99,
    ["currency"] = "USD",
    ["plan"]     = "pro_monthly",
});

// Associate with a logged-in user
GatiFlow.SetUserId("user_42");

// Clear on logout
GatiFlow.SetUserId(null);

// Disable / re-enable analytics (e.g. consent flow)
GatiFlow.Analytics.SetEnabled(false);

Crash Reporting

Unhandled exceptions are captured automatically — no code required beyond UseGatiFlow(). For handled errors:

// Report an Exception
try
{
    await CheckoutService.ProcessAsync(cart);
}
catch (Exception ex)
{
    await GatiFlow.Crashes.TrackError(ex, new()
    {
        ["cart_id"] = cart.Id,
        ["items"]   = cart.Count,
    });
}

// Report a plain message
await GatiFlow.Crashes.TrackError("Payment provider returned unexpected status 402.");

// Disable crash reporting (e.g. debug builds)
GatiFlow.Crashes.SetEnabled(false);

Advanced Config

var config = new GatiFlowConfig.Builder("mhub_YOUR_APP_TOKEN")
    // Self-hosted or staging ingest endpoint
    .SetBaseUrl("https://ingest.yourcompany.com")
    // Print all SDK logs (disable in production!)
    .SetDebugLogging(true)
    // How often to batch-upload events (default 30 s)
    .SetFlushIntervalMs(15_000)
    // Max events per upload batch (default 100)
    .SetMaxEventBatchSize(50)
    // Max crash reports to hold locally before dropping (default 50)
    .SetMaxCrashQueueSize(25)
    .Build();

Select services

// Analytics only (no crash reporting)
var config = new GatiFlowConfig.Builder("mhub_YOUR_APP_TOKEN")
    .SetServices(new AnalyticsService())
    .Build();

Debug Logging

Enable SetDebugLogging(true) during development to see SDK activity in the debug output:

[GatiFlow] Starting GatiFlow SDK (token: mhub_Y****0ABC)
[GatiFlow] Analytics service started.
[GatiFlow] Crashes service started.
[GatiFlow] POST sdk/v1/events → 202

Requirements

Platform Minimum version
Android API 21 (5.0)
iOS 13.0
Mac Catalyst 13.1
.NET 9.0
.NET MAUI 9.0

Compatibility with Xamarin

If you are still on Xamarin.iOS / Xamarin.Android (not MAUI), use the native SDKs directly:

The MAUI SDK wraps the same ingest API — event format is identical across all platforms.


Example App

Open GatiFlow.Maui.sln in Visual Studio 2022 (17.8+) or JetBrains Rider and run the GatiFlow.Maui.Example target on your preferred platform.


License

MIT © GatiFlow

Product Compatible and additional computed target framework versions.
.NET net9.0-android35.0 is compatible.  net9.0-ios18.0 is compatible.  net9.0-maccatalyst18.0 is compatible.  net10.0-android was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 94 5/23/2026