How to create a WP8 wide tile in WP7 XNA...

Created on 31 October 2013 Written by Graham Smith

So, I recently discovered www.DVLUP.com, if you haven't heard of them they reward Windows Phone developers for taking part in various challenges which are aimed at improving the quality of your apps. Completing challenges earns you XP and once you've earned enough XP you can spend it on cool rewards like new devices and marketing campaigns.

However when looking through the challenges I noticed that most of them require your app to have "All 3 Live Tile Sizes", with both of my apps being XNA and targeting the 7.1 OS this presented a problem since the wide tile size isn't natively available. After doing some research I found a couple of different ways to add the wide tile but they required a lot of fiddling like renaming your XAP files to .ZIP and unpacking it to add the image... or another option was to use MangoPollo which is a sort of wrapper for using WP8 functionality in WP7 apps, but again it had problems like forcing the app to restart when adding the tile.

So... in the end i just sort of hacked my own solution using bits of code from both of the previously mentioned solutions, both of my apps have since passed certification and have been accepted for the DVLUP challenges. The only drawback is that the app has to be launched once before the wide tile will be available to the user... anyway heres how I did it:

Both of my Apps are built with XNA4 and im using Visual Studio 2012 with the WP8 SDK targeting 7.1 OS, the wide tile I create is just a static image but you can create a flip tile or whatever without too much fuss.

First thing to do is create the image for your wide tile, the dimensions are 691 × 336 pixels, once you've got your image create a new folder in your game project (I called the folder 'TileImg') then simply add your image to the folder with the following properties:

build action: none
copy to output directory: copy if newer


Now that we have the image for our wide tile we need to alter the WMAppManifest file, add the following code below <Deployment> and above <App> in your Manifest file:

  <AppExtra xmlns="" AppPlatformVersion="8.0">
    <Extra Name="Tiles"/>
</AppExtra>


Then in Game.cs we will need to make several changes, firstly we set our target OS to WP 7.8 because that's the first version to allow wide tiles (7.10.8858 is the official version of WP 7.8). Then we check what version OS the user has, if its greater than the target version then 'IsTargetedVersion' will be true:

       private static Version TargetedVersion = new Version(7, 10, 8858);
        public static bool IsTargetedVersion { get { return Environment.OSVersion.Version >= TargetedVersion; } }


Now we write a new static method, if the user has WP 7.8 or better installed on their phone then a new wide tile is created using the image we added earlier... if the OS is less than 7.8 then it does nothing (you'll also need to add 'using Microsoft.Phone.Shell;' to your using statements:  

        public static void CreateWideTile()
        {
            if (IsTargetedVersion)
            {
                try
                {
                    // Get the new FlipTileData type.
                    Type flipTileDataType = Type.GetType("Microsoft.Phone.Shell.FlipTileData, Microsoft.Phone");
                    // Get the ShellTile type so we can call the new version of "Update" that takes the new Tile templates.

                    Type shellTileType = Type.GetType("Microsoft.Phone.Shell.ShellTile, Microsoft.Phone");
                    // Loop through any existing Tiles that are pinned to Start.

                    foreach (var tileToUpdate in ShellTile.ActiveTiles)
                    {
                        // Get the constructor for the new FlipTileData class and assign it to our variable to hold the
                        Tile properties.

                        var UpdateTileData = flipTileDataType.GetConstructor(new Type[] { }).Invoke(null);
                       
                        // Set the properties. 
                        SetProperty(UpdateTileData, "WideBackgroundImage", new Uri("/TileImg/LargeTile.png",
                        UriKind.Relative));
                       

                        // Invoke the new version of ShellTile.Update.

                        shellTileType.GetMethod("Update").Invoke(tileToUpdate, new Object[] { UpdateTileData });
                        break;
                    }
                }
                catch
                {
                }
            }
        }

        private static void SetProperty(object instance, string name, object value)
        {
            var setMethod = instance.GetType().GetProperty(name).GetSetMethod();
            setMethod.Invoke(instance, new object[] { value });
        }


and finally we have to call the method we just created, we do this as soon as the app is launched:

        protected override void OnActivated(object sender, System.EventArgs args)
        {
            if (SaveComponent.wideTileCreated == false)
            {
                SaveComponent.wideTileCreated = true;
                CreateWideTile();
                SaveComponent.SaveWideTile();
            }
            base.OnActivated(sender, args);
        }

 

You'll notice that I have a flag called SaveComponent.wideTileCreated... once the app has checked the OS version and decided whether the wide tile should be created or not this flag is set to true and saved so that we never check again.

Well that's it... your users now have a nice new Wide Tile they can pin to their start screen and you can enter the DVLUP challenges :D

Comments   

 
0 #219 Sophie 2018-09-18 03:39
Just wish to say your article is as astounding. The clearness in your post is just excellent and
i can assume you're an expert on this subject. Well with your permission allow me to grab your feed to keep up to date with forthcoming post.

Thanks a million and please continue the gratifying work.
Quote
 
 
0 #218 ace333 apk download 2018-09-18 00:17
So a membership site certainly a good model the internet
marketplace. Require already the outline refund guarantee .
step requires you beef it up enough to begin recording.
Quote
 
 
0 #217 sky777 download 2018-09-17 21:18
There are legion unethical "how to" programs out there that don't work.
But that ended up being.) And I absorbed $900 thirty day
period. Or did you forget this article immediately turn out to be at the website?
Quote
 
 
0 #216 sky777 download 2018-09-17 21:17
There are legion unethical "how to" programs out there that don't work.
But that ended up being.) And I absorbed $900 thirty day
period. Or did you forget this article immediately turn out to be at the website?
Quote
 
 
0 #215 jadwal live u 22 2018-09-17 13:36
Now you obtain a couple, but not nearly each that you getting.
Keywords can prove to be the biggest key factors in getting
the first put on Google Search Page.
Quote
 
 
0 #214 scr888 2018-09-17 08:04
Defensive bets too soon can a person keep from calling
a better bet down the road. Good thing is simply because consistently
update their tools and equipment.
Quote
 
 
0 #213 playboy casino 2018-09-17 02:15
Have you ever thought about creating an e-book or guest authoring on other blogs?
I have a blog based upon on the same information you discuss and would love
to have you share some stories/informa tion. I know my subscribers would value your
work. If you are even remotely interested, feel free to send me an e-mail.
Quote
 
 
0 #212 playboy casino 2018-09-17 02:14
Have you ever thought about creating an e-book or guest authoring on other blogs?
I have a blog based upon on the same information you discuss and would love
to have you share some stories/informa tion. I know my subscribers would value your
work. If you are even remotely interested, feel free to send me an e-mail.
Quote
 
 
0 #211 mega casino 2018-09-17 02:03
You don't tennis ball so the subscription out, but observing
toss out the pages you've already understand.
Eggs - Eggs are not only cheap, likewise full of proteins.
So how do you ensure blog site attract good traffic?
Quote
 
 
0 #210 mega casino 2018-09-17 02:03
You don't tennis ball so the subscription out, but observing
toss out the pages you've already understand.
Eggs - Eggs are not only cheap, likewise full of proteins.
So how do you ensure blog site attract good traffic?
Quote
 
 
0 #209 mega casino 2018-09-17 02:02
You don't tennis ball so the subscription out, but observing
toss out the pages you've already understand.
Eggs - Eggs are not only cheap, likewise full of proteins.
So how do you ensure blog site attract good traffic?
Quote
 
 
0 #208 918kiss mod 2018-09-16 23:46
Anyone even know what a 'wide reader' 's? Possibly you let yourself get
not healthy and are frightened you'll never get return? Your only job is to trust it and listen.
Quote
 
 
0 #207 카니발카지노 2018-09-16 22:54
But every individual who buys lotto tickets online cannot be a lucky you to definitely win the
jackpot. These types of plays have with them various kinds of different games which are both conventional and newest games.
He secured the 643rd and the 778th slot inside 2011 and 2012 Player in the Year Rank
respectively.
Quote
 
 
0 #206 카니발카지노 2018-09-16 22:54
But every individual who buys lotto tickets online cannot be a lucky you to definitely win the
jackpot. These types of plays have with them various kinds of different games which are both conventional and newest games.
He secured the 643rd and the 778th slot inside 2011 and 2012 Player in the Year Rank
respectively.
Quote
 
 
0 #205 joker123 download 2018-09-16 18:50
This is my first time visit at here and i am genuinely pleassant to read all at single
place.
Quote
 

Add comment


Security code
Refresh

Facebook YouTube

Latest on Twitter

SuperSmithBros @NetflixUK On the Samsung TV app you don't display what language a movie is. Please change it so it displays the la… https://t.co/YtncBZlrar
SuperSmithBros RT @MarcusJLGardner: Graduated with @JamieKKing, @SuperSmithBros and @Polygonical from @MoonshineGS today! Looking forward to our many year…
SuperSmithBros RT @MarcusJLGardner: About 1.5 years ago I applied to my first games job as a QA Tester. The QA lead asked me where I saw myself in 7 years…
SuperSmithBros RT @MoonshineGS: Thanks to everyone who came to see our pitch at Digital Catapult in London! #IndieGameDev #IndieDev #gamedev https://t.co/
SuperSmithBros Thanks to everyone who came to see us at #EGXRezzed. Completely overwhelmed by how positive the reception to the ga… https://t.co/OP24uiKn0D