.netMaui(Winui 3)自定义URI协议始终打开一个新实例,而不是重复运行App

问题描述 投票:0回答:1
OnAppLinkRequestReceived(Uri uri)

,使我能够捕获令牌参数(

?token=xyz&refreshToken=abc
)。但是,在Windows(Winui 3)上,每当我打开诸如
dayplanner://?token=xyz&refreshToken=abc
之类的链接时,我的应用程序的新实例就会开始,而不是重复使用已运行的实例。
地上,Windows从未在Windows上调用OnapplinkRinkRequelecteceerive。我尝试将以下内容添加到我的软件包中。AppxManifest:
<Extensions>
  <uap:Extension Category="windows.protocol">
    <uap:Protocol Name="dayplanner" />
  </uap:Extension>
</Extensions>
我还尝试在我的Windows特定app.xaml.cs中尝试覆盖

OnLaunched(LaunchActivatedEventArgs args)

OnActivated(IActivatedEventArgs args)
,但是要么在Mauiwinuiaiapplication中不存在这些覆盖,要么在打开链接时他们不会收到protintivativativatedEventargs。
I遇到了建议使用Windows App SDK的AppInstance API(用于单稳定和协议处理)的建议,但是到目前为止,每次我测试URI链接时,它仍然会打开一个全新的实例,而不是将激活事件传递给现有的

solution是:
// In your App.xaml.cs

public partial class App : MauiWinUIApplication
{
    // ...

    protected override async void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
    {
        var appInstance = AppInstance.GetCurrent();
        var e = appInstance.GetActivatedEventArgs();

        // If it's not a Protocol activation, just launch the app normally
        if (e.Kind != ExtendedActivationKind.Protocol ||
            e.Data is not ProtocolActivatedEventArgs protocol)
        {
            appInstance.Activated += AppInstance_Activated;

            base.OnLaunched(args);
            return;
        }

        // If it's a Protocol activation, redirect it to other instances
        var instances = AppInstance.GetInstances();
        await Task.WhenAll(instances
            .Select(async q => await q.RedirectActivationToAsync(e)));

        return;
    }

    private void AppInstance_Activated(object? sender, AppActivationArguments e)
    {
        if (e.Kind != ExtendedActivationKind.Protocol ||
            e.Data is not ProtocolActivatedEventArgs protocol)        
        {
            return;
        }

        // Process your activation here
        Debug.WriteLine("URI activated: " + protocol.Uri);
    }

}

也在这里回答:

Https://stackoverflow.com/a/79123126/17302880

c# .net maui maui-blazor
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.