Shoulder Tap Internals in Redstone 3 Build 16184

Posted on May 1, 2017 by Rafael Rivera in Dev, Windows 10 with 35 Comments

Hidden inside Windows 10 “Redstone 3” build 16184 are Shoulder Taps, a My People feature that lets you send payloads of loud, animated fun to your contacts. MSN Messenger fans: rejoice! Winks are back and are better than ever.

OK, that’s a matter of perspective.

Like Winks from 12 years ago, Shoulder Taps are designed to be short animations that play on the screen of the person you’re socializing with. Unlike Winks, however, these animations break out of their traditional app boundaries and play right on the desktop. But without any supportive inbox apps to play with, I couldn’t dig into how Shoulder Taps are selected and sent. Instead, I enabled the feature and wrote some of my own tooling to demonstrate how Shoulder Taps look and work at the receiving end.

So, let’s jump right in.

A Shoulder Tap is just a fancy (temporary) name for a specialized type of Toast Notification. Apps create these notifications by feeding some Windows.UI.Notifications APIs a bit of XML that looks like this:

<toast hint-people="mailto:[email protected]">
    <binding template="ToastGeneric" experienceType="shoulderTap">
      <image src="..."></image>
    <binding template="ToastGeneric">
      <image src="..."></image>
      <text>Hello World</text>

Developers that normally work in this space will recognize the standard toast notification elements. But there are a few added twists.

First, the <toast> element has a new @hint-people attribute that acts as a contact selector. Apps must target a contact using an email (mailto:), telephone (tel:), or unique identifier (remoteid:).

Next, multiple binding elements are required. One binding must be tied to the Shoulder Tap experience via the new @experienceType attribute. And another should describe a vanilla notification that will be seen if the person isn’t pinned to the Windows Taskbar. (It may also show this notification in Action Center, though didn’t always work in my testing. It could be a bug.)

The meat of the Shoulder Tap is contained within its specialized binding. It supports an <image> element with its @src attribute value pointed to a web resource (https://…) or application-relative URI (e.g. ms-appx://). Windows downloads these images (if not already cached locally) and displays them in a transparent 160 x 160 square window on the desktop, resizing the image only if the scale factor isn’t set to 100%.

The expected standard web image formats work here – animated or static GIFs, JPEGs, and PNGs. Other formats such as WebP, MPEG-4, and FLV do not load (though are still oddly downloaded and cached). Alternatively, apps can use the @spritesheet-src, @spritesheet-fps, and @spritesheet-height attributes to feed in a sprite sheet, though I don’t understand why anyone would, given the additional complexities in doing so. (I suspect these attributes were simply added as a hack to quickly support Skype’s trove of sprite sheet-based emoticons.)

And lastly, there is no <audio> element in this toast type. Shoulder Taps are always accompanied by a loud and obnoxious ring that’s built into My People. There’s no escape from this, yet.


So those are Shoudler Taps. What do you think?

As “Redstone 3” work continues over the next few months, we will undoubtedly see this feature evolve. I’ll keep you updated as that happens, so stay tuned.

Tagged with ,