如何使用 IBackgroundTask 更改 UWP 中通知的关联应用程序

问题描述 投票:0回答:1

我有两个UWP应用程序app1和app2, 我已经实现了 app1 的通知,它在硬件更改时发出通知。

        private async void Hardware_Change(object sender, RoutedEventArgs e)
        {
 
            var toastContentBuilder = new ToastContentBuilder()
                .AddArgument("action", "app2")
                .AddText("open hardware app")
                .AddText("Please Open Hardware App")
                .GetToastContent();
            var tost = new ToastNotification(toastContentBuilder.GetXml());
            ToastNotificationManager.CreateToastNotifier().Show(tost);
            Application.Current.Exit();

        }

我为 IBackgroundTask 创建了 Windows 运行时组件项目并在 app1 项目中引用

    public sealed class LancherBackgroundTask : IBackgroundTask
    {
        public async void Run(IBackgroundTaskInstance taskInstance)
        {
                var uri = new Uri("app2:");
                var options = new LauncherOptions();
                options.TargetApplicationPackageFamilyName = "app2_packge_family_name";
                var success = await Launcher.LaunchUriAsync(uri, options);
        }
    }

然后我在app1的

package.appmanifest
中注册了后台任务。 并将入口点设置为 IBackgroundTask 类。

      <Extensions>
        <Extension Category="windows.backgroundTasks" EntryPoint="BackgroundHelper.LancherBackgroundTask">
          <BackgroundTasks>
            <Task Type="pushNotification"/>
          </BackgroundTasks>
        </Extension>
      </Extensions>

我无法从 app1 的通知启动 app2。

每次点击通知时都会显示app1,并且我不确定IBackgroundTask是否正在运行。

如何在UWP中使用IBackgroundTask?以及如何在不打开app1的情况下从app1的通知中打开app2?

c# windows uwp windows-community-toolkit
1个回答
0
投票

“如何在不打开app1的情况下从app1的通知中打开app2?”

抱歉,在进程外后台任务中无法使用

LaunchUriAsync
打开其他应用程序,建议您在进程中处理。

建议使用

通知监听器打开app2。您可以参考后台任务添加/取消通知

© www.soinside.com 2019 - 2024. All rights reserved.