Support window activity flash/attention grab

  • Feature Description:

This is specifically for desktop applications, not overlays. Any app which has notifications, chats, and/or alerts will need to trigger the application to flash in the Windows task bar, to grab the player’s attention. Without this, if a player is AFK, no amount of popup alerts will allow the player to know that something happened when he returns. However, leaving the taskbar for the app flashing will do just that.

  • impact for my app: [low, mid, high, show-stopper].

This is high impact for our app, since it’s essential for keeping players in the loop, which is essential for our retention and for ensuring opponents aren’t just stuck waiting for other people who haven’t realized something has happened.

  • What is your current pain point?

We have implemented in-app notifications and alerts. We have implemented system-level (in and out of game) alerts. However, we need a way to mark the desktop window as needing attention in case the player misses those alerts (probably he’s AFK).

  • What do you have in mind to solve it?

There is a Windows standard for this. Overwolf just needs to provide an API for it.

A reference would be Electron’s documentation: https://electronjs.org/docs/tutorial/windows-taskbar#flash-frame

Behind the scenes, this Win32 API fn is used: FlashWindow function (winuser.h) - Win32 apps | Microsoft Docs

Overwolf would just need to provide a single function to flash a given window. The bool provided specifies whether or not the window should be flashing, so it’s a persistent state. Typically, on-focus, the state is set back to false. Perhaps the API would be something like this: overwolf.windows.flash(window_name_or_id, true);.

note for stuff: after FR is accepted, add a link to the internal ticket.

Hi, and thanks for the feedback.

We will add it to our backlog. We will update you once it is released.
Thanks.

@jeaye hi, I just wanted to update you that our product team is reviewing this feature request.
The effect of this feature on the client behavior is significant, so we need to examine that carefully.

Thanks for your patience, we will let you know in a few days.

HI. I discussed that internally with the product team:
Can you please give as a specific scenario in which you would need this kind of notification (flashing taskbar icon).

The reason that we want a better understanding of your need is the fact that some product-wise risks are involved - if we will open this ability, any app can use it. One of our principals is to keep the “noise” level for the player/user as low as possible.

We have multiple scenarios for needing this.

  1. The player has a new chat message
  2. The player has a new notification (challenge invite, challenge updated, etc)

Our app relies on multiple people syncing up together to play matches against each other. Right now, with 1v1, it’s only two people, but that’s hard enough as it is. With RL 3v3, that’s 6 people who all need to be informed when things are ready.

As mentioned in the original post, we have in-app notifications and we have system-wide notifications. Still, these are insufficient if the player misses those notifications for the short duration (5s or so) they show. We cannot show them any longer without causing UX issues, so we need to leave some lasting state so the player can know that their opponents are waiting.

It’s worth reiterating that this feature is a high priority to us, not just a nice-to-have, since not having it means players wait for others on matches, give up waiting, and don’t play. That costs both OLP and OW revenue.

1 Like

Hey guys. I’m following up to say that we’ve implemented this in C#, using Overwolf’s plugin support. The code is quite straight forward, but it’s likely only worth the trouble for those devs who are already compiling a DLL plugin. When we originally made this ticket, we hadn’t jumped through those hoops yet, since there wasn’t yet enough reason to do so. Now we require the plugin for multi-threaded multi-part downloading, process opening/focusing, and now flashing the task bar. As such, this is no longer high priority for us; it’d be nice to not to need the C# plugin, and I’m sure it’ll still be a lot of friction for other devs who are in the position we were before. It’s up to you guys if you want to move forward with supporting this, but we had to implement it, and the plugin approach works.

For anyone interested, the C# code needed is the following:

using System;
using System.Windows;
using System.Runtime.InteropServices;

namespace OkLetsPlay
{
  class WindowFlasher
  {
    private IntPtr window_handle;

    public WindowFlasher(long handle)
    { window_handle = (IntPtr)handle; }

    public void Flash(bool enabled)
    { FlashWindow(window_handle, enabled); }

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool FlashWindow(IntPtr hwnd, bool enabled);
  }
}

@jeaye thanks for the info! we already developed this feature as a “flash API”. I don’t have all the details yet, but it probably will be released on OW client version 0.146. We will announce it upon release.

Thanks for sharing. I’m closing the ticket.
Eran