Shoulder Tap Internals in Redstone 3 Build 16184

Posted on May 1, 2017 by Rafael Rivera in Dev, Windows 10 with 28 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]">
  <visual>
    <binding template="ToastGeneric" experienceType="shoulderTap">
      <image src="..."></image>
    </binding>
    <binding template="ToastGeneric">
      <image src="..."></image>
      <text>Hello World</text>
    </binding>
  </visual>
</toast>

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 ,

Elevate the Conversation!

Join Thurrott Premium to enjoy our Premium comments.

Premium member comments on news posts will feature an elevated status that increases their visibility. This tab would allow you to participate in Premium comments with other premium members. Register to join the other Premium members in elevating the conversation!

Register or Subscribe

Join the discussion!

BECOME A THURROTT MEMBER:

Don't have a login but want to join the conversation? Become a Thurrott Premium or Basic User to participate

Register

Register for this Webinar

How Replication Supports Your Company’s RTOs & RPOs
Join us for this free webinar

Can you have your workloads running within the agreed RTOs? Join this webinar with expert speakers from Veeam to exceed business objectives with an RPTO<15 min for ALL of your application and data.

Thursday, December 14, 2017 at 11 a.m EST