.NET bindings for Firebase A/B Testing on Apple platforms.
A/B Testing experiment payload and experiment-controller APIs exposed by the Firebase Apple SDK.
These packages are thin bindings over the native Firebase Apple SDK. The native documentation is the source of truth for product behavior, Firebase console setup, quotas, policy requirements, and feature workflows.
- Firebase Apple setup: https://firebase.google.com/docs/ios/setup
- Firebase A/B Testing documentation: https://firebase.google.com/docs/ab-testing
- Package ID:
AdamE.Firebase.iOS.ABTesting - Managed namespace:
Firebase.ABTesting
Supported target frameworks include:
net9.0-iosnet10.0-iosnet9.0-maccatalystnet10.0-maccatalyst
When multi-targeting, condition package references so they restore only for Apple targets:
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios' Or $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">
<PackageReference Include="AdamE.Firebase.iOS.ABTesting" Version="x.y.z" />
</ItemGroup>dotnet add package AdamE.Firebase.iOS.ABTestingUse the official Firebase Apple docs for setup and usage. In .NET, call the equivalent APIs from the managed namespace listed above. Keep app-specific Firebase configuration, such as GoogleService-Info.plist, in the application project.
Most Firebase feature packages require AdamE.Firebase.iOS.Core and app startup should call Firebase.Core.App.Configure() before feature APIs are used. This is the .NET binding for native FirebaseApp.configure().
Most app code uses A/B Testing indirectly through Remote Config, In-App Messaging, or Performance Monitoring. Direct use still requires Firebase to be configured first.
Firebase Apple SDKs are packaged as native xcframeworks. Applications should pin package versions intentionally and keep all AdamE.Firebase.iOS.* packages on the same major/minor Firebase line.
Avoid mixing unrelated Firebase binding package sets or mismatched Firebase native SDK lines in one application. That can cause duplicate symbols, linker failures, runtime loading failures, or undefined native SDK behavior.