The Live Tile Debacle – And A Solution That Works!
This will be the final part of my continuing series on Live Tiles. While it’s hard to draw definitive conclusions based on limited testing and some anecdotal comments by a few readers, I think I can establish a fairly strong hypothesis from what I have learned. But be warned, this is a long post. So if your Live Tiles are working fine right now you should probably move on, but consider bookmarking this page. Because as with termites, there are only two kinds of WP7 users in this world. Those who have Live Tile problems and those who will have Live Tile problems.
First some guidelines. Through email conversations with several developers I have learned that there are two kinds of Live Tiles, pull and push. Pull tiles are similar (but not the same) as the Notification queue in Windows Mobile, where events would be triggered on a timed basis. For example a word of the day tile could be updated each day at midnight (Urban Dictionary), or maybe every hour (Weather Channel). Push tiles, or push notifications, are instant. When an app sends out a request for an update (Smart Tile) the Live Tile is instantly updated. Or if there is breaking news, or a Weather Alert (Weatherbug) boom, it’s there. Microsoft has stated that there is a 15 Live Tile limit, but we don’t know if that is for “push” only tiles/notifications or includes both “push” and “pull”. Microsoft has also claimed that deleting an app with “push” Live Tile support will open up a channel for another Live Tile. Well, they are half right with that statement.
As I can’t find any evidence that “pull” tiles get registered on a WP7 device (unlike “push” tiles which update two registry keys) I am fairly certain that the 15 tile limit only refers to “push”. Further evidence to support this theory is that when “push” tiles stop working on a device, “pull” tiles usually continue to function. So at the very least, they are handled separately by the OS.
Two days ago I developer unlocked (the legal way) my Surround, sideloaded TouchXperience Registry Editor, and did some poking around. I found the following registry keys that reader Rekfa posted about here:
On my device, Endpoints had 22 subkeys, none of which could be clearly identified by looking at them (a long number/letter string), while ManagedEndpoints had a single “blank” default subkey. Note that by this point, none of my “push” Live Tiles were working and I had previously uninstalled/reinstalled all of my Live Tile apps in an effort to figure things out, or maybe make room.
Yesterday, I decided to do a factory reset to get my Live Tiles working again. During the rebuild I installed two apps with Live Tile support and they updated instantly. Success! When I checked the registry keys, both Endpoints and ManagedEndpoints each had two entries. Good so far. Further, you can actually look at the ManagedEndpoints subkeys and uniquely identify them by app or developer name. That’s a good thing when trying to troubleshoot a problem. As a test, I disabled the two Live Tiles and then deleted both the Endpoints and ManagedEndpoints keys/subkeys. After a soft reset I reenabled the two Live Tiles and they started working again. Checked the registry and all the keys were recreated. I continued installing apps and rebuilding my device through the day, adding two more Live Tiles along the way, for a total of 4 tiles.
At the end of my rebuild I checked the registry and was surprised to see “6” subkeys, not the 4 I expected, in both Endpoints and ManagedEndpoints. Looking through the ManagedEndpoints subkeys, I found the two freeloaders, eBay and an unidentifiable “TileNotificationChannel”. As a side note, when I opened the eBay app the first time it asked if I wanted to enable “push” for bid/auction notifications, and I answered ‘no”. Checked the settings and those options were still unchecked. Still don’t know what app TileNotificationChannel relates to but I have a suspicion. From this discovery I can conclude that some apps will unknowingly register a “push” channel even though you have not turned the service on or pinned the tile to Start. As a note, tile channel registration does not happen until after you open an app the first time. With a hard “15” Live Tile limit, this is not a good thing, and cries of poor programming. Note that I have two other apps with Live Tile functionality that has never been enabled and they have not registered a push channel, so it is possible to do it correctly.
Last night, after opening and playing around with a bunch of apps but not activating any additional Live Tiles, I checked the registry again and found 10 Endpoints subkeys and 8 ManagedEndpoints subkeys. The culprits this time; moTweets which activates Live Tile support by default and Sports Calendar, which has an option for push notifications, but it’s not enabled. I disabled Live Tile support in moTweets, but even after soft resets I continue to have 8 ManagedEndpoints subkeys. And the >8 Endpoints subkeys was definitely puzzling. Don’t know how the extra 2 got there.
I uninstalled/reinstalled eBay a couple times to see if it would unregister the LiveTile push subkeys, as Microsoft suggests it should. While it removed the ManagedEndpoints key, the Endpoints key remained. In fact, each time I reinstalled eBay, the Endpoints subkey total increased by 1.
Through my testing I now have 8 ManagedEndpoints subkeys and 14 EndPoints subkeys, already more than halfway to the fateful 22 Endpoints subkeys, which appears to be the limit. Don’t know exactly how that relates to Microsoft’s 15. I had theorized that registry entries were cumulative, growing each time you installed/enabled a Live Tile app, even the same app repeatedly, and that appears to be the case. With the Endpoints key, once you reach 22 subkey entries, that’s it. The OS will not allow you to register any additional push tiles. Also in theory, any existing Live Tiles registered in ManagedEndpoints should continue to work, but if you uninstall/reinstall apps, as i did originally trying to solve my problems, the new installs/reinstalls won’t register. A damn vicious cycle.
Don’t know who is to blame for the Endpoints registry entries not being deleted when an app is uninstalled, but it is obviously an issue that needs to be addressed. Patrick Kortendick, another writer here at MD has a Focus with the same 22 Endpoints subkeys, and non-working Live Tiles. And we have gotten additional feedback from HD7 and VenuePro owners, so this is not a device specific issue. For me the solution is easy; simple deleted the keys with my Registry Editor and reinstall my preferred Live Tiles. But the Registry Editor appears to only work on HTC devices for now (a Samsung fix is in the works at XDA) and you also need the ability to sideload, so not as simple as it sounds.
Some Action Items
Developers need to clearly state in their app descriptions whether they utilize “pull” or “push” Live Tile/Notification features. Actually this is something that Marketplace should do as a part of app submission.
Developers need to “disable” Live Tile/push notification functions by default, making it a user controlled option, so a device does not reach the Live Tile limit unexpectedly. Some apps already work this way making it a doable and reasonable requirement.
Microsoft needs to determine why the Endpoints subkeys do not delete, as the ManagedEndpoints subkeys do, when an app is uninstalled. If it’s developer error Microsoft should release a Bulletin ASAP and reign in the rouge apps and if an OS error, we all need a hotfix right quick. Hey they can even call it the JimskiHotfix, although I wouldn’t mind a credit on my account for the developer registration that made this all possible.
Oh, BTW I deleted two more (different) apps and reinstalled one to further test the Endpoints key constipation problem. Nothing came off as expected, so now I am up to 15 and counting. Not sure what happens when an app is updated through Marketplace. Isn’t that that same as another install? Hope you are reading Microsoft.
UPDATE: Can you deal with a little more Mad Science. This morning I checked my registry again and Endpoints had grown to 18 subkeys. Last time I checked there were 15 and I did not install/uninstall any other apps since then. I did get 3 updates from Marketplace (think the 3 is a mere coincidence) last night, but none of them were related to Live Tile apps. I activated the Live Tile for Pro Sports Scores, which BTW is one of the apps that plays nice and does not register keys until you activate the option, wondering if now that Endpoints had passed 15 I would have a problem. Live Tile activated without a problem but, of course now Endpoints = 19 subkeys. Enough already!
Deleted the two keys; Endpoints & ManagedEndpoints, exited the app and immediately soft reset my phone. Note that I did not uninstall or disable any Live Tile functionality. After reboot I checked the registry and both keys were still absent, exactly the way things looks after I factory reset the other day. Went back to each of my preferred Live Tile apps; Smart Tile, Sports Scores, Pro Sports Scores, Weatherbug, WP Messenger and Sports Calendar, toggled the Live Tile feature off and on, then went back to check the registry. Guess what, now I have 6 Endpoints and 6 ManagedEndpoints. So not only did I clear out the constipated subkeys, rouge apps like eBay, moTweets and, mystery app, did not reregister, taking up precious spaces/channels. So it works. Spread the word.
UPDATE 2: One of the dumbest things I have done in a long time was factory resetting my device “before” testing the fix presented in this article. While things are working for me now, and I have deleted the trouble keys multiple times without issue, I couldn’t be positively certain that it did not have something to do with the reset; clearing another key, emptying a cache, or something else. When I read a post over at wmpoweruser Saturday morning from an HD7 user that the fix did not work I got as nervous as a cat in a room full of rocking chairs. Later I discovered that the HD7 user only deleted a few keys from the Endpoints key, which will not work, unless you are very, very lucky. But I still didn’t have any proof that my theory would work on a non-hard reset device.
Thankfully Tan Teng Heng, who has been following the Live Tile posts since the beginning, has proved me to be correct and even found a way to simplify things. You can read his detailed post below for more info but he basically deleted all the subkeys inside Endpoints, without touching the parent or ManagedEndpoints. Now all (except one) of his Live Tiles are working again. So an HD7 that was not factory reset, and had non-working Live Tiles, has working tiles again. Success, really! Deleting both keys, or just Endpoints, will not hurt anything (it recreates as soon as you activate a Live Tile), but Tan’s surgical approach might make some users a little more comfortable trying this.
On another front, Patrick Kortendick, still hindered by not being able to delete registry keys on his Focus has tried another approach. He went into the Endpoints subkeys and erased the entries under NotificationURI. Again, as these can’t be matched to a Live Tile, you need to erase all of them. He has had mixed results, with some Live Tiles coming back to life and others still refusing to join in. Not sure if this is an app problem or a result of the residue left behind (empty subkeys). No doubt deleting the subkeys remains the preferred approach. But it is progress.
DISCLAIMER: This article is in no way intended to discredit Windows Phone. Actually, I thoroughly enjoy my phone and the OS, although yesterday’s complete rebuild was not much fun. The fact that I purchased a WP developer’s license and have installed more than 150 apps on my phone, nearly half of them “paid apps” further supports my interest in the WP platform. Live Tiles are an integral part of the WP7 user experience. Attacking this problem head on and snuffing it out is the best way to ensure a positive experience for current and future users.