Activities of "aziz.bouhejba"

Hello,

I’d like to confirm whether the FullCalendar license is included with the LeptonX theme purchase, or if it needs to be obtained separately. Could you please clarify how licensing for FullCalendar is handled when using LeptonX?

We’ve integrated it into our .NET MAUI Blazor Hybrid app, and it works great! We’d just like to confirm whether it’s already covered under our ABP and LeptonX licenses.

Thank you for your help!

Thanks a lot

Hi, thanks I tried it, gave me this error System.PlatformNotSupportedException: Algorithm 'Aes' is not supported on this platform.

I guess I'll just have to put it in the clear? :/

So we need to expose the Blazorise product token there's no other way?

Hi, we followed your documentation to get a Blazorise product token and it works great. We also have an app matching your template of web assembly Blazor app.

We're trying to secure the product token and not serve it in app settings or whatever so it's not public but can't find a way.

We have an Azure key vault in the host project that we can contact to get the token but we can't pass the value to the web assembly.

Any way to do this properly?

Thanks

Hi thanks, we ended up waiting for internet connection to come back, it's definitely killed by some Samsung devices when battery is optimized so the ABP apps crashes for them because of the network dependency. This was our solution

using Microsoft.Extensions.Configuration;
using Volo.Abp;

namespace SampleProject.MauiBlazor;

public partial class App : Application
{
    private readonly IServiceProvider serviceProvider;
    private Page? rootPage;

    public App(IServiceProvider serviceProvider)
    {
        InitializeComponent();
        this.serviceProvider = serviceProvider;
        UserAppTheme = AppTheme.Light;
    }

    protected override Window CreateWindow(IActivationState? activationState)
    {
        rootPage = new MainPage();

        var window = new Window(rootPage);

        // Initialize asynchronously without blocking
        _ = Task.Run(async () =>
        {
            try
            {
                await WaitForNetworkConnectivityAsync();
                serviceProvider.GetRequiredService<IAbpApplicationWithExternalServiceProvider>().Initialize(serviceProvider);

                // Switch to main page on UI thread
                MainThread.BeginInvokeOnMainThread(() =>
                {
                    window.Page = new MainPage();
                });
            }
            catch (Exception ex)
            {
                rootPage = new MainPage();
            }
        });

        return window;
    }

    private static async Task WaitForNetworkConnectivityAsync()
    {
        var connectivity = Connectivity.Current;
        var maxRetries = 30; // 30 seconds max wait
        var retryCount = 0;

        while (retryCount < maxRetries)
        {
            if (connectivity.NetworkAccess == NetworkAccess.Internet)
            {
                if (await CanReachApiAsync())
                {
                    return;
                }
            }

            await Task.Delay(1000); // Wait 1 second
            retryCount++;
        }

        // Log warning or show user message about connectivity issues
        System.Diagnostics.Debug.WriteLine("Network connectivity timeout");
    }

    private static async Task<bool> CanReachApiAsync()
    {
        try
        {
            using var client = new HttpClient { Timeout = TimeSpan.FromSeconds(5) };
            var response = await client.GetAsync("https://google.com");
            return response.IsSuccessStatusCode;
        }
        catch
        {
            return false;
        }
    }
}

I would recommend having something like this in the template because all Samsung devices will fail with an ABP template. we struggled with this issue for months because not everyone was able to reproduce it. 😬

Thanks again have a good day

Tried all of these solutions, the only one we didn't try is // Show offline message or use cached data

ABP Framework Version: 9.2 Project Type: Microservices template with MAUI Blazor Hybrid app Platform: Android (Samsung devices) Affected Models: S21 FE, S24 (consistently reproducible)

Issue: Application displays white screen and crashes when battery optimization is enabled

Root Cause: Samsung's aggressive battery optimization appears to block network requests during app resume, causing ABP module initialization to fail when attempting to fetch application configuration.

Reproduction Steps:

  1. Set app battery settings to "Optimized" or "Restricted"
  2. Launch app and complete login
  3. Close app without logging out (background the app)
  4. Reopen the app

Expected Result: App resumes normally with existing session Actual Result: White screen with AbpInitializationException

Key Error: Java.Net.UnknownHostException: Unable to resolve host "localhost"

Attempted Solutions:

  • Implemented Polly retry policies following https://abp.io/docs/latest/framework/api-development/dynamic-csharp-clients#retry-failure-logic-polly-integration

Business Impact:

  • Samsung devices represent significant market share
  • Default battery optimization settings cause app failure
  • Users experience appears broken after backgrounding

Potential Solutions Needed:

  1. Graceful handling of network failures during module initialization
  2. Option to skip/defer configuration refresh on app resume
  3. Better error handling for battery optimization scenarios
  4. Guidance for Samsung-specific battery whitelist recommendations

Additional Context:

  • Issue is specific to Samsung devices with battery optimization
  • Other Android manufacturers not affected
  • Problem occurs during MauiBlazorCachedApplicationConfigurationClient.InitializeAsync()

Full exception

[2025-09-11 13:28:41] Volo.Abp.AbpInitializationException: An error occurred during the initialize Volo.Abp.Modularity.OnApplicationInitializationModuleLifecycleContributor phase of the module Volo.Abp.AspNetCore.Components.MauiBlazor.AbpAspNetCoreComponentsMauiBlazorModule, Volo.Abp.AspNetCore.Components.MauiBlazor, Version=9.2.0.0, Culture=neutral, PublicKeyToken=null: An error occurred during the ABP remote HTTP request. (Connection failure) See the inner exception for details.. See the inner exception for details. ---> Volo.Abp.Http.Client.AbpRemoteCallException: An error occurred during the ABP remote HTTP request. (Connection failure) See the inner exception for details. ---> System.Net.Http.HttpRequestException: Connection failure ---> Java.Net.UnknownHostException: Unable to resolve host "localhost": No address associated with hostname ---> Java.Lang.RuntimeException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)

--- End of managed Java.Lang.RuntimeException stack trace --- android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname) at libcore.io.Linux.android_getaddrinfo(Native Method) at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:133) at libcore.io.BlockGuardOs.android_getaddrinfo(BlockGuardOs.java:222) at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:133) at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:135) at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103) at java.net.InetAddress.getAllByName(InetAddress.java:1152) at com.android.okhttp.Dns$1.lookup(Dns.java:41) at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:178) at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:144) at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:86) at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:176) at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:128) at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:97) at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:289) at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:232) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:465) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131) at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:90) at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:30)

Thank you for the quick answer, very appreciated. so it could still be possible to inject tenant style through other things than layout hooks. Like javascript injection. Have a good day

Hello! sorry I'm reopening this only because I have the exact same issue with the mobile app Maui Blazor hybrid.

We use Leptonx theme side menu

using Volo.Abp.AspNetCore.Components.MauiBlazor.LeptonXTheme;

and exact same

Configure<AbpLayoutHookOptions>(options =>
        {
            options.Add(
                LayoutHooks.Head.Last,
                typeof(StyleHook)
            );
        });

I tried adding this in App.razor

<LayoutHook Name="@LayoutHooks.Head.Last" Layout="@StandardLayouts.Application" />

Thank you!

Showing 1 to 10 of 32 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.1.0-preview. Updated on October 30, 2025, 06:33