gpt4 book ai didi

delphi - 当应用程序打包到 Appx 包中时,Toast 通知不起作用

转载 作者:行者123 更新时间:2023-12-03 15:49:30 27 4
gpt4 key购买 nike

我开发了一个 Microsoft Store 应用,我想添加 Toast 通知。

该应用程序是使用 Delphi 10.2.3 开发的,我正在使用“Desktop Bridge”技术将其转换为 Microsoft Store 的 Appx 包。 Toast 通知工作正常,直到我将应用程序打包到 Appx 包(用于 Store 或 Sideloading)中。

从 appx 和 SideLoading 运行时,Toast 通知不起作用,并且我的应用程序未在 Windows 设置中作为通知发送者列出。我想一定有一些我需要定义的明显扩展。有一个(现已弃用)appxmanifest 设置 ToastCapable="true",但我读到 Windows 10 不再使用也不再需要该设置。

当我运行应用程序可执行文件时,Toast 通知工作得很好,但当我从 Appx 包安装它时却不行。如何让 Windows 10 了解我的应用程序是通知发送者?

最佳答案

不幸的是,它无法使用提供的 TNotificationCenter 组件(我在包括 10.2.3 在内的许多版本中进行了测试)。

原因在此链接中描述:https://blogs.msdn.microsoft.com/universal-windows-app-model/2017/01/31/how-to-ensure-your-toast-notifications-continue-to-work-when-converting-your-win32-app-into-a-windows-store-app-using-project-centennial/

有一个简单的修复方法,但您需要修改组件源代码。发布到 Windows 应用商店时,TNotificationCenter 不应为您的应用程序创建快捷方式,并且在创建 IToastNotifier 实例时不应提供应用程序 ID。这将自动为您完成。

我最终编写了自己的库来管理 Windows 10 通知,因为我想要比所提供的更复杂的场景和自定义 XML 有效负载,但我可以确认它在按照 Microsoft 说明完成时可以工作。

我将我的类与 System.Win.Notification(在 source\\rtl\common 中找到)进行了比较,这里有一些您可以尝试使其工作的提示(未经测试):

#1 - TNotificationCenterWinRT 的构造函数

FToastNotifier := TToastNotificationManager.Statics.CreateToastNotifier(LWSAppID);

应该是...

FToastNotifier := TToastNotificationManager.Statics.CreateToastNotifier();

#2 - TNotificationCenterWinRT.DoPresentNotification

if CreateShortcut then

应该是...

if True then

注意:如果您决定修改源文件,建议首先在项目文件夹中复制该文件并进行修改。

关于delphi - 当应用程序打包到 Appx 包中时,Toast 通知不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49661880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com