在Action Center处理多个Toast通知?

时间:2017-08-09 11:50:22

标签: c++ notifications toast

我们使用以下链接处理来自win 10行动中心的吐司通知。

" https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/10/16/quickstart-handling-toast-activations-from-win32-apps-in-windows-10/"  我们已经实施了#34;激活" INotificationActivationCallback的API用于处理Toast通知。

但由于行动中心包含多个通知。如何唯一标识通知。我们必须对不同的通知执行不同的操作。激活API" invokedArgs"参数始终为NULL。

1 个答案:

答案 0 :(得分:2)

是的,问题已解决。为了处理动作中心中的调用args,您需要在创建Toast通知xml时传递launch参数。 例如

与上面的示例一样,我们已经在toast标头中使用值“invoke arguments”传递了invoke参数launch。现在,只要用户单击来自操作中心的Toast通知,就会调用“Activate”API。您将在“激活函数调用args”中收到相同的参数。现在,您可以比较调用arg值并执行操作。以下是参考示例和链接。

HRESULT NotificationActivator::Activate(PCWSTR /*appUserModelId*/, PCWSTR invokedArgs,
    const NOTIFICATION_USER_INPUT_DATA* data, ULONG count)
{
    if (invokedArgs == nullptr)
    {
      // Start my app or just do nothing because COM started the app already.
    }
    else if (::wcscmp(invokedArgs, L"replyToComment") == 0)
    {
        ASSERT(count == 1);
        ASSERT(::wcscmp(data[0].Key, L"replyToComment") == 0);

        DoWorkToReply(data[0].Data);
    }

    return S_OK;
}

https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/10/16/quickstart-handling-toast-activations-from-win32-apps-in-windows-10/