Uh oh!
There was an error while loading. Please reload this page.
Add .NET MAUI sample app - #367
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:5346aed430
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Pull request overview
Adds a new .NET MAUI sample application (samples/Exceptionless.SampleMaui) demonstrating how to use the core Exceptionless client from a MAUI app via DI, including local file-based queue storage and file logging.
Changes:
- Introduces a MAUI sample app with a simple UI for sending handled exceptions, warning logs, feature usage, and flushing the queue.
- Adds platform-specific bootstrap files/manifests (Android/iOS/Mac Catalyst/Windows) plus app icon and splash resources.
- Registers the new sample project in
Exceptionless.Net.slnxunder the Samples folder.
Reviewed changes
Copilot reviewed 20 out of 23 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| samples/Exceptionless.SampleMaui/Resources/Splash/splash.svg | Adds MAUI splash screen vector asset. |
| samples/Exceptionless.SampleMaui/Resources/AppIcon/appiconfg.svg | Adds MAUI app icon foreground vector. |
| samples/Exceptionless.SampleMaui/Resources/AppIcon/appicon.svg | Adds MAUI app icon background/vector. |
| samples/Exceptionless.SampleMaui/README.md | Documents configuration and how to run/build the MAUI sample. |
| samples/Exceptionless.SampleMaui/Platforms/Windows/Package.appxmanifest | Adds Windows packaging manifest for the MAUI sample. |
| samples/Exceptionless.SampleMaui/Platforms/Windows/App.xaml.cs | Adds WinUI app bootstrap for MAUI. |
| samples/Exceptionless.SampleMaui/Platforms/Windows/App.xaml | Adds WinUI XAML application definition. |
| samples/Exceptionless.SampleMaui/Platforms/Windows/app.manifest | Adds Windows runtime manifest settings (DPI/long paths). |
| samples/Exceptionless.SampleMaui/Platforms/MacCatalyst/Program.cs | Adds Mac Catalyst entry point. |
| samples/Exceptionless.SampleMaui/Platforms/MacCatalyst/Info.plist | Adds Mac Catalyst app metadata. |
| samples/Exceptionless.SampleMaui/Platforms/MacCatalyst/Entitlements.plist | Adds Mac Catalyst entitlements (sandbox + network). |
| samples/Exceptionless.SampleMaui/Platforms/MacCatalyst/AppDelegate.cs | Adds Mac Catalyst app delegate for MAUI. |
| samples/Exceptionless.SampleMaui/Platforms/iOS/Program.cs | Adds iOS entry point. |
| samples/Exceptionless.SampleMaui/Platforms/iOS/Info.plist | Adds iOS app metadata. |
| samples/Exceptionless.SampleMaui/Platforms/iOS/AppDelegate.cs | Adds iOS app delegate for MAUI. |
| samples/Exceptionless.SampleMaui/Platforms/Android/MainApplication.cs | Adds Android application bootstrap for MAUI. |
| samples/Exceptionless.SampleMaui/Platforms/Android/MainActivity.cs | Adds Android main activity bootstrap for MAUI. |
| samples/Exceptionless.SampleMaui/Platforms/Android/AndroidManifest.xml | Adds Android manifest (internet/network permissions). |
| samples/Exceptionless.SampleMaui/MauiProgram.cs | Configures ExceptionlessClient (DI, storage, file logging, default tags/data). |
| samples/Exceptionless.SampleMaui/MainPage.cs | Implements the sample UI and event submission actions. |
| samples/Exceptionless.SampleMaui/Exceptionless.SampleMaui.csproj | Adds the MAUI project file with multi-targeting and project reference to core client. |
| samples/Exceptionless.SampleMaui/App.cs | Adds MAUI Application with queue processing on sleep. |
| Exceptionless.Net.slnx | Registers the new MAUI sample in the main solution. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:b43a40dbe1
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:c285036943
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| <plist version="1.0"> | ||
| <dict> |
There was a problem hiding this comment.
Allow local HTTP traffic on iOS
When running the iOS target with the sample's default http://localhost:7110 server URL, requests are subject to ATS and will fail before events/config can reach the local Exceptionless server because this plist never opts into local clear-text traffic. The .NET MAUI local-web-services guidance calls out adding NSAppTransportSecurity with NSAllowsLocalNetworking for iOS local HTTP, while Android is already configured separately in its manifest: https://learn.microsoft.com/en-us/dotnet/maui/data-cloud/local-web-services?view=net-maui-10.0
Useful? React with 👍 / 👎.
Summary
samples/Exceptionless.SampleMaui, a .NET MAUI sample that uses the coreExceptionlessclient via MAUI DI.IncludePrivateInformation = false.http://localhost:7110for iOS, Mac Catalyst, and Windows;http://10.0.2.2:7110for the Android emulator; and an environment override for physical devices or custom servers.Fixes#366
Validation
dotnet build samples/Exceptionless.SampleMaui/Exceptionless.SampleMaui.csproj -f net10.0-maccatalyst -p:ValidateXcodeVersion=falsedotnet build samples/Exceptionless.SampleMaui/Exceptionless.SampleMaui.csproj -c Release -f net10.0-maccatalyst -p:ValidateXcodeVersion=false -p:RuntimeIdentifier=maccatalyst-arm64dotnet build samples/Exceptionless.SampleMaui/Exceptionless.SampleMaui.csproj -c Release -f net10.0-ios -p:ValidateXcodeVersion=false -p:RuntimeIdentifier=iossimulator-arm64Exceptionless.aotdata.arm64andExceptionless.SampleMaui.aotdata.arm64.EXCEPTIONLESS_SAMPLE_AUTORUN=true,EXCEPTIONLESS_API_KEY=TEST_API_KEY, andEXCEPTIONLESS_SERVER_URL=http://127.0.0.1:18181.GET /api/v2/projects/config?v=0.POST /api/v2/eventscontainingusage(MauiSample.TrackFeature, reference id8c2dac9145584824bc67f0466131bc94),log(Exceptionless.SampleMaui.MainPage, reference idf788aa00d1b84271999a34ea3f902fa4), anderror(reference id5bfd1b7325b94d2e96b45c6f73a84bb6) events.EXCEPTIONLESS_SAMPLE_AUTORUN=trueand no API key or server URL overrides against the real local Exceptionless AppHost.GET http://localhost:7110/api/v2/aboutreturned200.ServerUrl=http://localhost:7110and loggedSent 3 events to "http://localhost:7110".GET /api/v2/events?sort=-date&limit=10showed the submitted MAUI events:usage(MauiSample.TrackFeature, reference ida47a106724d0476285935e8f36548f4a),log(Exceptionless.SampleMaui.MainPage, reference id3a032ef3f2044e01a19b1818809ebdea), anderror(Exceptionless MAUI sample handled exception., reference id2b11511070f942fb9cf48e42376ef6cf).dotnet build Exceptionless.Net.NonWindows.slnxdotnet test Exceptionless.Net.NonWindows.slnx --no-buildLocal MAUI Toolchain Notes
net10.0-maccatalystbuilds are blocked on this machine because the installed .NET Mac Catalyst pack26.5.10284requires Xcode26.5, while this machine has Xcode26.6. The local validation above uses-p:ValidateXcodeVersion=falsefor that reason.net10.0-androidbuilds are blocked on this machine by missing Android SDK/JDK configuration:XA5300: The Android SDK directory could not be found.