![]() |
VOOZH | about |
dotnet add package JitsiMeet.Maui --version 1.0.0-preview.11
NuGet\Install-Package JitsiMeet.Maui -Version 1.0.0-preview.11
<PackageReference Include="JitsiMeet.Maui" Version="1.0.0-preview.11" />
<PackageVersion Include="JitsiMeet.Maui" Version="1.0.0-preview.11" />Directory.Packages.props
<PackageReference Include="JitsiMeet.Maui" />Project file
paket add JitsiMeet.Maui --version 1.0.0-preview.11
#r "nuget: JitsiMeet.Maui, 1.0.0-preview.11"
#:package JitsiMeet.Maui@1.0.0-preview.11
#addin nuget:?package=JitsiMeet.Maui&version=1.0.0-preview.11&prereleaseInstall as a Cake Addin
#tool nuget:?package=JitsiMeet.Maui&version=1.0.0-preview.11&prereleaseInstall as a Cake Tool
A .NET MAUI plugin that integrates the Jitsi Meet video-conferencing SDK on both Android and iOS through native binding libraries. This project demonstrates how to create C# bindings for a complex native SDK and consume them from a cross-platform .NET MAUI app.
📦 This plugin is available as a NuGet package! You can install it directly from NuGet without cloning this repository:
dotnet add package JitsiMeet.Maui --prerelease👉 https://www.nuget.org/packages/JitsiMeet.Maui/1.0.0-preview.10
| Requirement | Minimum Version |
|---|---|
| .NET | 9.0 |
| Android | API 24+ |
| iOS | 15.1+ |
| Jitsi Meet SDK | 12.0.0 |
https://github.com/user-attachments/assets/b41704c2-5dcc-449f-961c-21511526fa05
JitsiMeetMAUI/
├── JitsiMeetMAUI.sln # Solution file (3 projects)
│
├── JitsiMeet.Android.Binding/ # Android binding library
│ ├── JitsiMeet.Android.Binding.csproj
│ └── Transforms/
│ ├── Metadata.xml # Java → C# type fixes
│ ├── EnumFields.xml
│ └── EnumMethods.xml
│
├── JitsiMeet.iOS.Binding/ # iOS binding library
│ ├── JitsiMeet.iOS.Binding.csproj
│ ├── ApiDefinition.cs # Objective-C → C# API surface
│ └── Structs.cs # Native enums (RecordingMode, etc.)
│
├── JitsiMeetDemo/ # .NET MAUI demo app
│ ├── IJitsiMeetService.cs # Cross-platform service interface
│ ├── MainPage.xaml / .cs # UI & join logic
│ ├── MauiProgram.cs # DI registration
│ └── Platforms/
│ ├── Android/
│ │ ├── AndroidJitsiMeetService.cs # Android IJitsiMeetService
│ │ ├── MauiJitsiMeetActivity.cs # Hosts Jitsi view + deep link handling
│ │ └── AndroidManifest.xml # Permissions
│ └── iOS/
│ ├── AppDelegate.cs # Handles auth redirect URL scheme
│ ├── IOSJitsiMeetService.cs # iOS IJitsiMeetService
│ └── Info.plist # URL scheme registration
│
├── NativeBinaries/ # Pre-downloaded native SDK files
│ ├── android/
│ │ ├── jitsi-meet-sdk-12.0.0.aar # Main Jitsi Android SDK
│ │ └── deps/ # ~30 transitive AAR/JAR deps
│ └── ios/
│ ├── JitsiMeetSDK.xcframework
│ ├── hermes.xcframework
│ ├── WebRTC.xcframework
│ └── GiphyUISDK.xcframework
│
└── pad_icons.py # Utility script for icon padding
The Android binding project (JitsiMeet.Android.Binding) turns the native Java/Kotlin Jitsi Meet SDK AAR into a C# library that .NET MAUI can reference.
.csproj — JitsiMeet.Android.Binding.csproj<TargetFramework>net9.0-android</TargetFramework>
<AndroidClassParser>class-parse</AndroidClassParser>
<AndroidCodegenTarget>XAJavaInterop1</AndroidCodegenTarget>
<MSBuildWarningsAsMessages>XA4241;XA4236;XA4242</MSBuildWarningsAsMessages>
Key points:
| Setting | What it does |
|---|---|
AndroidClassParser = class-parse |
Parses the .class files inside the AAR to auto-generate C# wrappers |
AndroidCodegenTarget = XAJavaInterop1 |
Generates modern Java interop bindings |
XA4241 / XA4236 suppression |
The Jitsi SDK has dozens of transitive React Native dependencies. Suppressing these warnings lets us bind only the top-level SDK surface without needing every nested Java type resolved at compile time |
The main AAR reference:
<AndroidLibrary Include="..\NativeBinaries\android\jitsi-meet-sdk-12.0.0.aar" />
NuGet packages provide the AndroidX and Google Play dependencies that the SDK expects at runtime:
Xamarin.AndroidX.AppCompatXamarin.AndroidX.FragmentXamarin.AndroidX.LocalBroadcastManagerXamarin.AndroidX.Media3.ExoPlayer (+ Dash, HLS, SmoothStreaming, UI)Xamarin.AndroidX.SwipeRefreshLayoutGoogleGsonXamarin.GooglePlayServices.AuthTransforms/Metadata.xmlWhen the Java→C# code generator runs, sometimes the auto-generated return types are wrong. The Metadata.xml file fixes them:
<metadata>
<attr path="/api/package[@name='org.jitsi.meet.sdk']/class[@name='JitsiInitializer']/method[@name='create' and count(parameter)=1 and parameter[1][@type='android.content.Context']]"
name="managedReturn">Java.Lang.Object</attr>
</metadata>
This specific fix changes the generated C# return type of JitsiInitializer.create(Context) to Java.Lang.Object, because the auto-generator incorrectly inferred a more specific type.
Tip: If you encounter build errors about incorrect types after updating the SDK version,
Metadata.xmlis where you fix them. You can inspect the AAR contents by renaming it to.zip, extractingclasses.jar, and opening it in a decompiler like www.decompiler.com to see the actual Java signatures.
The iOS binding project (JitsiMeet.iOS.Binding) wraps the native Objective-C JitsiMeetSDK.xcframework into a C# library.
.csproj — JitsiMeet.iOS.Binding.csproj<TargetFramework>net9.0-ios</TargetFramework>
<IsBindingProject>true</IsBindingProject>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
Native framework references:
<NativeReference Include="..\NativeBinaries\ios\JitsiMeetSDK.xcframework">
<Kind>Framework</Kind>
<ForceLoad>True</ForceLoad>
</NativeReference>
<NativeReference Include="..\NativeBinaries\ios\hermes.xcframework">
<Kind>Framework</Kind>
<ForceLoad>True</ForceLoad>
</NativeReference>
<NativeReference Include="..\NativeBinaries\ios\WebRTC.xcframework">
<Kind>Framework</Kind>
<ForceLoad>True</ForceLoad>
</NativeReference>
<NativeReference Include="..\NativeBinaries\ios\GiphyUISDK.xcframework">
<Kind>Framework</Kind>
<ForceLoad>True</ForceLoad>
</NativeReference>
ForceLoad = True ensures all symbols are linked, which is necessary for React Native's runtime class lookups.
Note: Although we are only binding
JitsiMeetSDK, theWebRTC.xcframework,hermes.xcframework, andGiphyUISDK.xcframeworkmust also be included as native references. The Jitsi Meet SDK depends on these at runtime — without them, the app will crash with missing symbol errors at launch.
ApiDefinition.csThis is the heart of the iOS binding. Every Objective-C class/protocol you want to use from C# must be declared here. The file binds 6 key types:
| C# Type | Objective-C Type | Purpose |
|---|---|---|
JitsiMeetUserInfo |
JitsiMeetUserInfo |
User display name, email, avatar |
JitsiMeetConferenceOptionsBuilder |
JitsiMeetConferenceOptionsBuilder |
Builder to configure meeting options |
JitsiMeetConferenceOptions |
JitsiMeetConferenceOptions |
Immutable conference configuration |
JitsiMeetViewDelegate |
JitsiMeetViewDelegate |
Callbacks: joined, terminated, readyToClose, etc. |
JitsiMeetView |
JitsiMeetView |
The actual UIView that renders the meeting |
JitsiMeetSDK |
JitsiMeet |
Singleton for global config & app lifecycle |
Example — binding the JitsiMeetView class:
[BaseType(typeof(UIView))]
interface JitsiMeetView
{
[NullAllowed, Export("delegate", ArgumentSemantic.Weak)]
NSObject Delegate { get; set; }
[Export("join:")]
void Join([NullAllowed] JitsiMeetConferenceOptions options);
[Export("leave")]
void Leave();
[Export("hangUp")]
void HangUp();
// ... more methods
}
Structs.csNative enums used by the SDK are declared here:
[Native]
public enum RecordingMode : long { File, Stream }
[Native]
public enum WebRTCLoggingSeverity : long { Verbose, Info, Warning, Error, None }
Tip: To generate
ApiDefinition.csfrom scratch, you can use the Objective Sharpie tool on the.xcframeworkheaders, then manually clean up the output.
The Jitsi Meet Android SDK (v12.0.0) has ~30 transitive React Native dependencies that must be present at runtime. These are not NuGet packages — they are raw .aar / .jar files hosted in Jitsi's own Maven repository.
The easiest way to resolve and download all transitive dependencies is to use Microsoft's Xamarin Gradle Dependency script. This is the same approach documented in the maui-native-sdk-bindings guide (see Step 3: Identify and Add All Transitive Dependencies).
libs/ folder and reference it in the module's build.gradle.build.gradle:
apply from: 'https://raw.githubusercontent.com/xamarin/XamarinComponents/main/Util/AndroidGradleDependencyInfo.gradle'
./gradlew :{ModuleName}:xamarin
This automatically resolves all transitive dependencies, copies the AAR/JAR files into a xamarin/ folder, and prints the full list of Maven coordinates.xamarin/ folder into NativeBinaries/android/deps/.Tip: If you have issues with Gradle 9.0, use the modified Gradle script instead.
All resolved files land in NativeBinaries/android/deps/ and are referenced by the demo app's .csproj:
<AndroidAarLibrary Include="..\NativeBinaries\android\deps\*.aar" />
<AndroidJavaLibrary Include="..\NativeBinaries\android\deps\*.jar" />
Sometimes two AARs contain the same Java package, causing the build to fail. To fix this, rename the conflicting .aar file to .zip — this excludes it from linking while keeping it around for reference. Repeat the build until it succeeds.
The iOS side uses pre-built .xcframework bundles placed in NativeBinaries/ios/. All four frameworks are required — the Jitsi Meet SDK depends on the others at runtime, and the app will crash without them:
| Framework | Purpose | Why it's needed |
|---|---|---|
JitsiMeetSDK.xcframework |
Core Jitsi Meet SDK | The SDK we are binding |
hermes.xcframework |
Hermes JavaScript engine | Jitsi's React Native runtime requires Hermes |
WebRTC.xcframework |
WebRTC media engine | Provides audio/video calling under the hood |
GiphyUISDK.xcframework |
Giphy integration | Used by Jitsi for in-meeting reactions & GIFs |
These are downloaded from the official Jitsi Meet iOS SDK releases.
The demo app uses a dependency injection pattern to abstract platform-specific Jitsi implementations behind a shared interface.
IJitsiMeetService ← Shared interface
├── AndroidJitsiMeetService ← Android implementation
└── IOSJitsiMeetService ← iOS implementation
Registration in MauiProgram.cs:
#if ANDROID
builder.Services.AddSingleton<IJitsiMeetService, AndroidJitsiMeetService>();
#elif IOS
builder.Services.AddSingleton<IJitsiMeetService, IOSJitsiMeetService>();
#endif
builder.Services.AddTransient<MainPage>();
The MainPage receives the service via constructor injection and calls JoinMeeting() when the user taps the button.
On Android, joining a meeting requires launching a separate Activity (MauiJitsiMeetActivity) because the Jitsi SDK takes over the full screen with its own React Native view hierarchy.
Flow:
AndroidJitsiMeetService.JoinMeeting() sets global default options, then starts MauiJitsiMeetActivity via an Intent with the room name, display name, and email as extras.MauiJitsiMeetActivity.OnCreate() creates a JitsiMeetView, builds JitsiMeetConferenceOptions, calls _view.Join(options), and sets the view as content.BroadcastReceiver listens for CONFERENCE_TERMINATED and READY_TO_CLOSE actions to automatically finish the activity.IJitsiMeetActivityInterface and overrides permission methods to ensure camera/mic access works.Required Android permissions in AndroidManifest.xml:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
Important: The demo app sets
<EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk>in the csproj to disable Fast Deployment. This is required — without it, AndroidX Startup throws missing DEX class exceptions at runtime.
On iOS, the IOSJitsiMeetService creates a JitsiMeetView, wraps it in a UIViewController, and presents it modally over the current MAUI page.
Flow:
IOSJitsiMeetService.JoinMeeting() builds conference options using the builder pattern (JitsiMeetConferenceOptions.FromBuilder).JitsiMeetView is created and set as the root view of a new UIViewController.CustomJitsiDelegate (subclass of JitsiMeetViewDelegate) listens for ConferenceTerminated and ReadyToClose to dismiss the view controller and clean up.The public meet.jit.si server requires authentication (Google/GitHub) to create rooms. The SDK handles this by opening the sign-in page in the device's browser. After the user authenticates, the browser redirects back to the app using a custom URL scheme, passing a JWT token that grants moderator/admin rights.
The authentication flow follows these steps:
1. User taps "Join" in the app
2. SDK connects to meet.jit.si → server requires auth
3. SDK opens browser to the Firebase sign-in page
4. User signs in with Google or GitHub
5. Sign-in page constructs a redirect URL with JWT token:
- Android: intent://meet.jit.si/Room#jwt=TOKEN#Intent;scheme=org.jitsi.meet;package=org.jitsi.meet;end
- iOS: org.jitsi.meet://meet.jit.si/Room#jwt=TOKEN
6. Browser redirects → app catches the URL → re-joins conference with JWT
7. User enters the meeting as moderator/admin
Important: The
disableDeepLinkingconfig override should be set totruein your conference options. This prevents the SDK's web layer from showing a "How do you want to join?" page, while still allowing the authentication redirect to work.
The meet.jit.si auth page hardcodes package=org.jitsi.meet in the Android intent redirect. This means the redirect will only be delivered to an app with that exact package name. For development/demo purposes, set your ApplicationId to org.jitsi.meet:
<ApplicationId>org.jitsi.meet</ApplicationId>
⚠️ You must uninstall the official Jitsi Meet app from your device first — Android doesn't allow two apps with the same package name. Remember to change this back to your own identifier before publishing.
If you use a self-hosted Jitsi server, you can configure the auth redirect to use your own package name and skip this step entirely.
The activity must declare intent filters to handle the org.jitsi.meet:// scheme and https://meet.jit.si deep links:
[IntentFilter(
new[] { global::Android.Content.Intent.ActionView },
Categories = new[] { global::Android.Content.Intent.CategoryDefault,
global::Android.Content.Intent.CategoryBrowsable },
DataScheme = "org.jitsi.meet")]
[IntentFilter(
new[] { global::Android.Content.Intent.ActionView },
Categories = new[] { global::Android.Content.Intent.CategoryDefault,
global::Android.Content.Intent.CategoryBrowsable },
DataScheme = "https",
DataHost = "meet.jit.si")]
public class MauiJitsiMeetActivity : AppCompatActivity, IJitsiMeetActivityInterface
OnCreate must detect whether the activity was launched from a deep link (browser) or from within the app:
// In OnCreate:
if (intent?.Action == Intent.ActionView && intent.Data != null)
{
// Launched from browser deep link — use the full URL (includes JWT)
options = new JitsiMeetConferenceOptions.Builder()
.SetRoom(intent.Data.ToString())
.SetConfigOverride("disableDeepLinking", true)
.Build();
}
else
{
// Normal launch from within the app
// ... use JitsiRoom/JitsiName/JitsiEmail extras
}
OnNewIntent handles the auth redirect when the activity is already running:
protected override void OnNewIntent(Intent? intent)
{
base.OnNewIntent(intent);
if (intent?.Action == Intent.ActionView && intent.Data != null)
{
var options = new JitsiMeetConferenceOptions.Builder()
.SetRoom(intent.Data.ToString())
.Build();
_view.Join(options);
return;
}
JitsiMeetActivityDelegate.OnNewIntent(intent);
}
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>org.jitsi.meet</string>
<key>CFBundleURLSchemes</key>
<array>
<string>org.jitsi.meet</string>
</array>
</dict>
</array>
Note: Unlike Android, iOS URL schemes are per-app — there's no package name constraint. Your Bundle Identifier does not need to be
org.jitsi.meet.
[Export("application:openURL:options:")]
public override bool OpenUrl(UIApplication application, NSUrl url, NSDictionary options)
{
if (url.Scheme == "org.jitsi.meet")
{
var service = IPlatformApplication.Current?.Services.GetService<IJitsiMeetService>();
if (service is IOSJitsiMeetService iosService)
{
iosService.JoinWithAuthUrl(url);
return true;
}
}
return base.OpenUrl(application, url, options);
}
This method handles both re-joining an existing conference (auth redirect) and launching fresh from a browser deep link:
public void JoinWithAuthUrl(NSUrl url)
{
var options = JitsiMeetConferenceOptions.FromBuilder(builder =>
{
builder.Room = url.AbsoluteString;
builder.SetConfigOverride("disableDeepLinking", true);
});
if (_jitsiMeetView != null)
{
// Re-join existing conference with JWT
MainThread.BeginInvokeOnMainThread(() => _jitsiMeetView.Join(options));
return;
}
// Create view and present from scratch
MainThread.BeginInvokeOnMainThread(() =>
{
_jitsiMeetView = new JitsiMeetView { /* ... */ };
// ... present and join
});
}
dotnet workload install maui-android)dotnet workload install maui-ios)Clone the repository
git clone https://github.com/ihassantariq/JitsiMeet-Maui.git
cd JitsiMeet-Maui
Download Android dependencies (if the NativeBinaries/android/deps/ folder is empty)
Use the Gradle-based approach described in the Android Dependencies section to resolve and download all transitive dependencies.
Build and run
# Android
dotnet build JitsiMeetDemo/JitsiMeetDemo.csproj -f net9.0-android
# iOS
dotnet build JitsiMeetDemo/JitsiMeetDemo.csproj -f net9.0-ios
If the Android build fails with AAR naming conflicts, rename the conflicting .aar to .zip and rebuild. See Handling AAR Naming Conflicts for details.
By default, the app connects to the public https://meet.jit.si server. To use your own self-hosted Jitsi server, change the URL in:
AndroidJitsiMeetService.cs (line 17) and MauiJitsiMeetActivity.cs (line 78)IOSJitsiMeetService.cs (line 25)// Change from:
new Java.Net.URL("https://meet.jit.si")
// To:
new Java.Net.URL("https://your-jitsi-server.com")
Enable or disable meeting features via the builder:
.SetFeatureFlag("chat.enabled", true) // In-meeting chat
.SetFeatureFlag("invite.enabled", true) // Invite button
.SetFeatureFlag("prejoinpage.enabled", true) // Pre-join lobby screen
.SetFeatureFlag("welcomepage.enabled", false) // Jitsi welcome/home page
.SetFeatureFlag("recording.enabled", false) // Meeting recording
.SetFeatureFlag("pip.enabled", true) // Picture-in-picture (Android)
Pass authenticated user details:
var userInfo = new JitsiMeetUserInfo();
userInfo.DisplayName = "John Doe";
userInfo.Email = "john@example.com";
// userInfo.Avatar = new NSUrl("https://..."); // iOS only
Resources/AppIcon/appiconfg.pngResources/Splash/splash.pngResources/Images/logo.png<ApplicationId> in JitsiMeetDemo.csprojIf your Jitsi server requires JWT tokens:
// Android (in MauiJitsiMeetActivity.cs):
.SetToken("your-jwt-token")
// iOS (in IOSJitsiMeetService.cs):
builder.Token = "your-jwt-token";
This project is pinned to the following versions:
| Component | Version | Notes |
|---|---|---|
| .NET | 9.0 (net9.0-android / net9.0-ios) |
Target framework for all 3 projects |
| Jitsi Meet Android SDK | 12.0.0 | AAR in NativeBinaries/android/ |
| Jitsi Meet iOS SDK | 12.0.0 | xcframework in NativeBinaries/ios/ |
| React Native | 0.77.2 | react-android & hermes-android from Maven Central |
| Jitsi React Native modules | Build 22286284 |
All patched RN modules use this Jitsi build tag |
| Android minimum API | 24 (binding) / 26 (demo app) | Set in .csproj via SupportedOSPlatformVersion |
| iOS minimum version | 15.0 (demo) / 15.1 (binding) | Set in .csproj via SupportedOSPlatformVersion |
| Xamarin.AndroidX.AppCompat | 1.6.1.6 | |
| Xamarin.AndroidX.Media3.ExoPlayer | 1.9.0.1 | |
| Xamarin.GooglePlayServices.Auth | 120.7.0.5 |
When a new version of the Jitsi Meet SDK is released, here is what you need to do for each platform:
Download the new AAR
.aar file and place it in NativeBinaries/android/, replacing the old one.JitsiMeet.Android.Binding.csproj:
<AndroidLibrary Include="..\NativeBinaries\android\jitsi-meet-sdk-NEW_VERSION.aar" />
Update transitive dependencies
pom.xml in the Jitsi Maven repo to see if dependency versions have changed.NativeBinaries/android/deps/ and re-resolve using the Gradle-based approach described in Android Dependencies.Fix binding errors
dotnet build JitsiMeet.Android.Binding/JitsiMeet.Android.Binding.csproj
Transforms/Metadata.xml to fix the new type mismatches. Inspect the new AAR by renaming it to .zip, extracting classes.jar, and viewing it in www.decompiler.com.Update NuGet packages
<PackageReference> versions in JitsiMeet.Android.Binding.csproj.Resolve AAR conflicts
.aar to .zip and rebuild.Download new xcframeworks
NativeBinaries/ios/ with the new frameworks (JitsiMeetSDK.xcframework, hermes.xcframework, WebRTC.xcframework, GiphyUISDK.xcframework).Regenerate ApiDefinition.cs (if the API surface changed)
sharpie bind -framework NativeBinaries/ios/JitsiMeetSDK.xcframework/ios-arm64/JitsiMeetSDK.framework -sdk iphoneos
ApiDefinition.cs and merge in any new methods, properties, or classes.Structs.cs if new enums were added.Build and test
dotnet build JitsiMeet.iOS.Binding/JitsiMeet.iOS.Binding.csproj
dotnet build JitsiMeetDemo/JitsiMeetDemo.csproj -f net9.0-ios
<TargetFramework> in all three .csproj files (e.g. net9.0-android → net10.0-android).dotnet workload update
| Problem | Solution |
|---|---|
| XA4241 warnings about missing Java types | These are expected — we only bind the top-level SDK. They are suppressed in the binding .csproj. |
| AAR naming conflicts at build time | Rename the conflicting .aar file to .zip and rebuild. See Handling AAR Naming Conflicts. |
| AndroidX Startup / missing DEX crash at runtime | Ensure <EmbedAssembliesIntoApk>true</EmbedAssembliesIntoApk> is set in the demo .csproj. Do not use Fast Deployment. |
| iOS linker errors about missing symbols | Ensure all 4 xcframeworks are referenced in the demo .csproj (not just the binding project). Check ForceLoad is True. |
| Login required on meet.jit.si | The public server now requires authentication to create rooms. See Deep Linking & Authentication for the full setup. |
| Auth redirect not working (Android) | meet.jit.si hardcodes package=org.jitsi.meet in the redirect. Your app's ApplicationId must be org.jitsi.meet and the official Jitsi app must be uninstalled. |
| Auth redirect not working (iOS) | Ensure org.jitsi.meet URL scheme is registered in Info.plist and AppDelegate.OpenUrl handles it. |
| "How do you want to join?" page appears | Set .SetConfigOverride("disableDeepLinking", true) in your conference options. |
| Crash on "Join in app" from browser | MauiJitsiMeetActivity.OnCreate must handle ACTION_VIEW intents — see the Android Setup section. |
| Camera / mic permissions denied | The MainPage.xaml.cs requests permissions at runtime. Ensure the Android manifest includes the required uses-permission entries. |
This project is provided as a sample/demo. The Jitsi Meet SDK is licensed under the Apache 2.0 License.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0-android35.0 net9.0-android35.0 is compatible. net9.0-ios18.0 net9.0-ios18.0 is compatible. net10.0-android net10.0-android was computed. net10.0-ios net10.0-ios was computed. |
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-preview.11 | 81 | 3/16/2026 |
| 1.0.0-preview.10 | 66 | 3/15/2026 |
| 1.0.0-preview.9 | 81 | 3/15/2026 |
| 1.0.0-preview.5 | 77 | 3/15/2026 |
| 1.0.0-preview.3 | 66 | 3/15/2026 |
| 1.0.0-preview.2 | 72 | 3/15/2026 |