Getting Started
Using the Actito .NET MAUI library will allow you to quickly implement remote notifications, use actionable analytics or display content in your app.
- An Actito app
- The latest version of Android Studio
- The latest version of Xcode
- Access to the Apple's Developer Portal
Understanding the environments
Applications commonly operate across two primary environments: development and production.
- The development environment is used for feature implementation, debugging, and internal testing.
- The production environment represents the live deployment accessed by end users.
It is strongly recommended to assign distinct bundle identifiers to each environment (for example, com.example.app.dev for development and com.example.app for production). Maintaining separate identifiers allows both versions to coexist on the same device, ensures each build connects to the appropriate Actito environment, and prevents data or configuration conflicts.
In most configurations:
- The development environment corresponds to the
debugbuild type. - The production environment corresponds to the
releasebuild type.
Establishing a clear separation between environments minimizes the risk of deploying builds that target incorrect services.

Please ensure you configure distinct environments, as this separation is required for remote notifications to function correctly.
An overview of the library
The Actito SDK is composed of multiple modules designed to integrate seamlessly with your application.
The core Actito module is required and provides the foundational functionality necessary for all Actito integrations.
Additional modules are optional and can be included as needed to extend the SDK's capabilities — for example, in-app messages or an inbox.

This modular structure allows developers to include only the components relevant to their use case, ensuring optimal performance and reduced application size.
# Required
dotnet add package Actito
# Optional modules
dotnet add package Actito.Assets
dotnet add package Actito.InAppMessaging
dotnet add package Actito.Inbox
dotnet add package Actito.Push
dotnet add package Actito.PushUI
dotnet add package Actito.UserInbox
Setting up the configuration file
To establish a connection between your application and Actito, you must download a configuration file for each environment your application supports. In most cases, this includes both development and production configurations.
- Android
- iOS
Once downloaded, place each file in the following locations within your project:
- Production configuration:
Platforms\Android\Release\actito-services.json - Development configuration:
Platforms\Android\Debug\actito-services.json
To include the appropriate configuration files, you can use MSBuild's ItemGroup condition based on the current configuration as described below.
<ItemGroup Condition="$(TargetFramework.Contains('android')) AND '$(Configuration)' == 'Debug'">
<ActitoServicesJson Include="Platforms\Android\Debug\actito-services.json" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('android')) AND '$(Configuration)' == 'Release'">
<ActitoServicesJson Include="Platforms\Android\Release\actito-services.json" />
</ItemGroup>
Once downloaded, you have two options to include the file into your app target:
Place each file in the following locations within your project:
- Development configuration:
Platforms\iOS\Configurations\Debug\ActitoServices.plist - Production configuration:
Platforms\iOS\Configurations\Release\ActitoServices.plist
To include the appropriate configuration files, you can use MSBuild's ItemGroup condition based on the current configuration as described below.
<ItemGroup Condition="$(TargetFramework.Contains('ios')) AND '$(Configuration)' == 'Debug'">
<BundleResource Include="Platforms\iOS\Configurations\Debug\ActitoServices.plist">
<Link>ActitoServices.plist</Link>
</BundleResource>
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.Contains('ios')) AND '$(Configuration)' == 'Release'">
<BundleResource Include="Platforms\iOS\Configurations\Release\ActitoServices.plist">
<Link>ActitoServices.plist</Link>
</BundleResource>
</ItemGroup>
Launching Actito
Before using any Actito features, the SDK must be initialized by invoking the Actito.LaunchAsync() method. This process ensures that the Actito SDK is fully set up and ready to operate. Most SDK functionality will remain unavailable until this initialization occurs.
It is recommended to invoke the launch within when the main application component initialises its state:
public partial class App : Application
{
public App()
{
InitializeComponent();
Task.Run(async () =>
{
try
{
await Actito.LaunchAsync();
}
catch (Exception e)
{
Console.WriteLine($"Failed to launch Actito: {e.Message}");
}
});
}
}
Launching the SDK automatically registers the device with Actito. If your application requires user consent before collecting or registering device information, you may delay the initial launch until consent is granted.
Otherwise, ensure that Actito.LaunchAsync() is called during the application's initialization phase to avoid missing important updates — particularly when the app is created in the background.
Unlaunching Actito
If your application needs to permanently disable Actito functionality, you can invoke the Actito.UnlaunchAsync() method. This method completely removes all Actito-related functionality and deletes any previously registered device information, both locally and remotely.
While this action is generally discouraged, it may be required in certain cases — such as when a user requests permanent account deletion or data removal — to ensure compliance with privacy and data protection regulations.
await Actito.UnlaunchAsync();
Once Actito.UnlaunchAsync() is invoked, all associated data is permanently destroyed and cannot be recovered. Any subsequent calls to Actito APIs will fail until the SDK is reinitialized using the Actito.LaunchAsync() method.