Windows Phone 8.1 store package version change surprise – one act

UPDATE

This store bug has been fixed, feel free to ignore this post. More info here

—-

Yesterday, home office

Me
“Ok, new analytics checked in with a few error fixes, time to submit an app update for the Windows Phone app. I’ll just increment from 1.0.0.15 to 1.0.0.16 and Build.”

Visual Studio 

Me
“That’s weird, I’ve never seen that before. It looks like its using the appx date driven version number and my user friendly version number.”

Try again, same result. Restart Visual Studio, same result. Restart machine, same result.

Inspect Package.StoreAssociation.xml files.

“Hmm, the landing urls in the Windows 8.1 and Windows Phone 8.1 has been updated to match, but I was able to build and update the Windows app like normal. That’s confusing.”

Research, find a thread on the MS forums declaring it as normal. Post a rebuttal.

Contact MS Support via chat. Talk to a nice guy that confirms this is the new way it’s going to be, for now, until Windows 10, maybe.

Adapt and move along.

Conclusion
If you run into this error apparently that’s the new way its going to be and you can’t get around it. I updated the package version using the date format “2015.703.0.0” and I am now manually storing a user friendly version for display within the app “1.1.0”. The app uploaded and the user shouldn’t notice a difference.

Next time it would be great to get some kind of notice and understand why there is a difference between Windows and Windows Phone versioning.  My guess is this is just a growing pain and a side effect of the Store union and the oncoming Windows 10 store.

To see the app that has now hit version 2015, check out Wish on Windows Phone and plain old version 1.0 on Windows.

Thinking of Pinned Apps conceptually on Windows Phone

One of the more distinctive features of Windows Phone is the Start screen – which includes nice big live tiles that you can add and organize however you prefer. Up until the latest release, pinned items have been limited to applications, contacts, websites and other native or system level items.

With the latest release, a new feature has been added for app developers called Secondary Tiles. The new tiles allow users to create shortcuts on the Start screen to a deep location (at least one-level beyond the homepage) of an application.

This is a big win for app users as it allows them quick access to something they really care about. And it is a big win for developers, as a unique feature of Windows Phone and as a way for their app to become even more valuable and loved by the user.

So how do you design your app with this feature in mind?

This is a design challenge I recently worked through and not finding much documentation on the topic, I’ve decided to share my thoughts.

Quick Tiles Overview

Before there were secondary tiles, there was the primary tile, formally known as the Application Tile.  The job of this tile is simple – open the application to the home page, defined by the default task in your WMAppManifest.xml file.  Even though they may not currently be pinned to the Start screen, they always exist and are accessible as the first entry in the ShellTile.ActiveTiles collection.

Secondary Tiles are created via code in response to user interaction (e.g. click of a “Pin to Start” button).  When created the tiles are given a unique NavigationUri, reflecting the purpose of the tile to link to a specific place or thing within the application.

Both types of tiles have six properties – Title, BackgroundImage, Count, BackTitle, BackBackgroundImage, BackContent.  The first three should be obvious in functionality.

The second three properties once set will cause the tile to flip, as though you were looking at two sides of the tile in space.  This is a great way to get the user’s attention, but could be abused by over usage.  For an avant-garde usage of flipping tiles check out Flipping Tiles.

For more information, check out the Tiles Overview on MSDN.

Just a Slice of the App

Now that we have the basics on the table, what does this mean for design?

Think of a Pinned App as a manifestation of the “Be ‘On the Go’ Capable” Metro Principle. By pinning a specific single unit (location, person, book, etc) to the Start screen, the user has less typing, less navigation and any other type of data entry to make it to their favorite or valuable object.

Since the intention is to focus on the single object, this gives you a license to only expose the object and the segment of the app that deals with the object.  Let’s take a look at a real example to explain the idea and see it in action.

The People Hub is used to expose all of your contacts information and statuses.  Its an easy way to get the most recent statuses or search for a contact in order to get in touch with them.  I can select a specific contact, check out their info and hit Back to return to the People Hub.

Now, I have this friend named Pinto Snows who like I to keep in close touch with. I can pin him to my Start screen, so I have quick access to his contact info and status by selecting him via his very own tile.  If I close the app, I return to the Start screen and not the People Hub.  For one thing, I came from the Start screen so that’s where I expect to return.  Secondly, I only wanted info about him, I don’t need to look up anyone else.

This is a very “on the go” interaction.

There is no need to go to the homepage of the app from here, this is just a slice of the app.

Development and Implementation

When developing the app, this “slicing” needs to be taken into consideration.

The page that loads from a Secondary Tile must be self-sufficient. It can’t depend on data being loaded from the home page or some other page. There are two simple ways to detect whether a page has been opened via a Secondary Tile:

  1. NavigationContext.QueryString – the Uri for secondary tiles should be unique and ideally pass an ID in the QueryString. Depending on how you have developed an app, this may be enough to detect the difference.  If you are already using QueryStrings to pass information, just use a unique parameter when setting the Uri for the SecondaryTile, such as “pinned=true”.

  2. NavigationService.CanGoBack – since the page is normally loaded by navigating within your app, this property will be true.  In a pinned situation where this page is loaded as the first page, the property will be false.

The biggest difference here is that when the user hits the Back button they are leaving your app, unlike a non-pinned situation where they go up one-level or to the homepage.  The good news is you have the previously mentioned ways to detect the situation as well as the normal application-level events to save state and data if needed.

For a good example of a third party application following this pattern, check out 4th and Mayor pictured to the right.  The first image shows the app and a specific location (below Settings) pinned to Start. The second image shows the location opened via the pinned tile.

One more suggestion (which is done in People, not in 4th and Mayor) is to disable the Pin button if the user has already pinned that object to Start.  You can easily check for the existence of the pinned tile be querying the ShellTile.ActiveTiles collection and comparing NavigationUri values.

New Windows Phone “How Do I” Video Series

Working on a few WP7 videos

“How do I…do something new in and cool in Windows Phone ‘Mango’? This is Adam Kinney for Microsoft and today we’re going to answer that question by…”

If you are new to Windows Phone 7 Development or you want to get a look at on e of the new features in action check out the new Windows Phone “How Do I” Video Series

Each 10-15 minute video focuses on a single topic and walks through an example of code. I had a lot of fun putting these together and I think the “Mango” update will be huge for Windows Phone 7 developers and users. They’ve thrown in some really nice new features in there like deep linking tiles, flipping notification tiles, sockets, local database and more OS integration with new tasks and access to contacts and appointments data.

Here’s the full list of videos:

Expression Studio 4 Launch keynote videos are available

Expression Studio 4 Launch keynote video

For those of you who were not able to make it to Internet Week last week, the Expression Studio 4 keynote video is now available!

(And my condolences to you, since that means you likely also missed the best Microsoft party ever, props to the Expression team!)

What’s in the keynote?

Elevate Design animation

0:00:00 – Elevate Design, a short “buddy” movie about two friends who learn to collaborate.

 

Bill Buxton on transmedia

0:04:58 – Bill Buxton on the idea of building consistently good experiences across multiple devices, each with their unique set of expectations and the goal of working towards a common set of tools allowing for leveraging existing investments while tailoring the experience.

(Deep and a bit difficult to summarize, as you might expect, but worth a listen)

 

Expression Studio 4 Launch - Encoder

0:25:58 – Expression Encoder 4 – here’s a snapshot of overlaying video, supports XAML too

 

Expression Studio 4 Launch - Web

0:37:25 – Expression Web 4 – example of debug in SuperPreview and Safari on Mac support

 

Expression Studio 4 Launch - Blend

0:48:14 – Expression Blend 4 – quickly building a book search app, PathListBox in action!

 

And after all this you might be wondering, what about Windows Phone?

Yes, Expression Blend® 4 for Windows Phone is coming… soon!

Expression Blend 4 for Windows Phone in 90 seconds

 


A refreshed Windows Phone Developer Tools CTP has been released this week which provides compatibility with Visual Studio 2010.  Matching the new tools, we’ve also released a new version of the Expression Blend Add-In for Windows Phone.

What does the experience of developing Windows Phone apps in Expression Blend look like?

Take a look at this brief video introducing Expression Blend 4 for Windows Phone.

—–

A few notes on installing the tools…

If you have the Blend 4 Beta installed from MIX10:

  • Uninstall the Blend 4 Beta Phone Tools
  • Uninstall the Blend 4 Beta
  • Uninstall Windows Developer Tools CTP from MIX10
  • If you have the Blend 4 RC (4.0.20408.0) installed from Apr 15 Silverlight 4 RTM:

  • Uninstall the Blend 4 RC
  • If installed, uninstall Windows Developer Tools CTP from MIX10

Now with your system cleaned up:

For more information check out the Windows Phone 7 Developer Center.

Install checklist for Silverlight 4 RC, Blend 4 Beta and Windows Phone Developer tools from MIX10

I’m upgrading my machines to the latest bits and I haven’t seen an aggregated list of all the Silverlight, Blend and Windows Phone tools yet, so I thought I’d post mine.  As an extra bonus I’ll add the extra links for training and documentation resources.

This list is for the full setup for Silverlight 4 RC and Windows Phone development.

1. Visual Studio 2010 RC
If you need help downloading and installing this bad boy, here’s a video from Channel 9 explaining the process.

2. Silverlight 4 RC Tools

One setup file that installs the Developer Runtime, Tools for Visual Studio, SDK and WCF RIA Services.

3. Expression Blend 4 Beta 
One setup file that installs the  Blend SDK for Silverlight 4, Blend SDK for .NET 4

4. Windows Phone Developer Tools
Installs Visual Studio 2010 Express for Windows Phone CTP, Windows Phone Emulator CTP, Silverlight for Windows Phone CTP, XNA 4.0 Game Studio CTP

5. Expression Blend Add-in Preview for Windows Phone 
Windows Phone development integration add in for Blend.

6. Expression Blend SDK Preview for Windows Phone
Project templates for Windows Phone development in Blend.

7. Silverlight 4 Toolkit (optional)
No new update yet, but the version released in November still works

    And with those files installed you are ready for Silverlight 4 RC and Windows Phone development.  Enjoy!