As I am doing more development in and out of the enterprise arena for Windows Phone I decide I would study for the 70-599 test. I generally take certification tests as a way to force me to dig deeper into a technology. Between the development and studying I decided it would be good to put a post together of key development features in Windows Phone 7 environment. Contrary to popular belief the launch of Windows Phone 8 will not obsolete Windows Phone 7 development. With the launch of 7.8 coming shortly and people who will remain on 7.X for the foreseeable future there are still consumers needing these apps so don’t throw out the baby with the bath water.
This is a class that every Windows Phone developer needs to become familiar with. When it comes to application state this is your go to repository. It also contains events that help with management of your application’s lifecycle. You can access it like the following code sample.
1: PhoneApplicationService.Current.State["ValidUser"] = userResult;
This class allows you to determine the connectivity of the device and be notified when something changes with that connectivity. If you are making web service calls you will want to check here before firing off.
I have found that this class doesn’t actually work very well for determining if you have internet access. You are better of using the following code where IsConnectedToInternet is an App level property.
private void Application_Launching(object sender, LaunchingEventArgs e)
// Validate user access
if (Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType != Microsoft.Phone.Net.NetworkInformation.NetworkInterfaceType.None)
IsConnectedToInternet = true;
IsConnectedToInternet = false;
NetworkChange.NetworkAddressChanged += new NetworkAddressChangedEventHandler(NetworkChange_NetworkAddressChanged);
void NetworkChange_NetworkAddressChanged(object sender, EventArgs e)
IsConnectedToInternet = (Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType != Microsoft.Phone.Net.NetworkInformation.NetworkInterfaceType.None);
Push notification allows your application to receive notifications in a way that reduces the application’s power needs. This MSDN article is a good place to get the basics of push notification, but you can see the essential concept in the diagram below. There are three types of push notification: toast, Tile and raw. The first two work regardless of the state of the application where as raw messages are discarded if your application is not running.
Live tiles are one of the main differentiators of the Windows Phone platform. They allow users to find information at a glance from their start screen without navigating into individual apps. Knowing how to implement them can be a great boost to the attractiveness of your application. The simplest step-by-step explanation for creating live tiles is here.
While your application really only has Isolated Storage as a data store there are some ways of giving you database functionality to develop against. There are a number of open source ORM style solutions. Probably the best and most native way I have found is to use LINQ to SQL. It does take a significant amount of setup, but the ease of use once it is configured is worth the cost. Rather than repeat the full concepts here I will point you to a post that I wrote previously.
Tasks (Bing, Email)
Leveraging built in features of the Windows Phone platform is an easy way to add functionality that would be expensive to develop on your own. The classes that you need to make yourself familiar with are BingMapsDirectionsTask and EmailComposeTask. This will allow your application to supply directions and give the user an email path to relay information to friends and associates.
Because of the ability for users to switch quickly to switch to other apps or the home screen is just one reason why knowing the Windows Phone event model is important. You need to be able to save data so that if a user gets a phone call they can come back to exactly where they were in your application. This means that you will need to handle such events as Launching, Activated, Deactivated and Closing at an application level. You will probably also want to get familiar with the OnNavigatedTo and OnNavigatedFrom events at the page level. These will give you an opportunity to save data as a user navigates through your app.
This is just a small portion of the concepts that you will use while building Windows Phone apps, but these are some of the most critical. With the launch of Windows Phone 8 this list will probably expand. Take the time to investigate these topics further and try them out in your apps.