|
|||
IntroductionBuilding applications for Windows Phone has always been fun and easy. With Microsoft's new partnership with Nokia as well as its expanding global presence, developers have a unique chance to start building applications now for a platform that is growing on the world stage. When Windows Phone 7 was launched, it was available in 17 countries in 4 display languages. With the recent "Mango" release, that number has grown to 35 countries in 22 display languages (See: http://create.msdn.com/en-US/home/faq for a complete list of countries and languages). With each new release, we can expect this market to keep growing and growing. Get Started with Windows Phone. Download the free tools.
Microsoft's new expansive partnership with Nokia opens the doors of the world even more. Nokia is a huge global brand with exposure into every region of the world. This kind of reach will enable Windows Phone and the applications built for it to reach a market that is literally the size of the world. Companies and developers who want to maximize the return on their investments need to look at how to support as many of these markets as possible. This worldwide market presents a large audience of customers for Windows Phone apps, and it is up you as the developers to be sure that the apps are ready to be localized to each country and ready to be marketed and sold. But even if you are only considering a single country or region today, there are ways to monetize the apps you develop. Monetization StylesWhen we think about building apps, one of the first questions to consider is how it will be distributed. Fortunately for Windows Phone development, this is an easy task. There is a single marketplace on all phones to which apps are deployed. During one of the final stages of submitting an app in the AppHub, the developers can determine what regions it will be sold in and what the cost of the app will be. Apps for phones can typically be monetized in one of five styles: 1.Paid Apps Traditional "monetization" of software comes in the form of paying a price for an app and having unrestricted access to its features. A paid app is built and deployed just like a free app. The only difference is that when it is deployed to the marketplace, a price is set. The marketplace allows apps be sold for a minimum price of $0.99 USD, and a maximum of $499.99 USD. Prices in other currencies are determined based on a fixed exchange rate. Microsoft will pay you 70% of cost with the remaining 30% going to the phone carrier and Microsoft to cover the upkeep of the marketplace and the testing of the app. (This may vary based on region. See http://msdn.microsoft.com/en-us/library/hh202929(VS.92).aspx for more details.) Many factors go into determining the cost of your app. One of the most crucial is to preform market analysis of similar apps. If you are going to charge $0.99 for a app that users can download for free, you should have a compelling reason for them to download yours instead. Pricing yourself out of the market is not a good strategy. One important thing to remember with paid apps, is that users love trial apps. It gives them the ability to try it out before making the commitment to purchase an app. This results not only into more traffic for your app, but more paid users as well. Windows Phone provides a complete "Try before you buy" API to allow you to create rich trial versions of your application that can be limited in any way you desire. The APIs can even allow you to provide easy ways for users to upgrade to the paid version of the app right from the trial version. If you write quality apps, a well-designed trial mode will drive sales. Tip: It is a good idea to provide some kind of trial version with all paid apps if possible. This will help maximize your potential revenue. This is especially true the more the app costs. 2.Free Apps Apps can be given away freely to everyone. While, this isn't a great way to generate revenue, it can help get your company's name or ideas out to a broader market. Tip: There are many success stories of apps offering both free and paid versions. If a user is searching for "free" apps only, a paid app or "try before your buy" app will not show up in the search. By offering a completely free version with limited functionally, you may actually be able to drive up more traffic to your paid version of the application. 3. Ad Supported Apps Tip: It may be beneficial to offer a free ad supported app a long side a paid version of the same app. Users may start out with the ad supported version, and pay for the full app later to remove the ads. This gives you the flexibility of multiple revenue streams. 4. Subscriptions (Not supported in Windows Phone at this time) This form of monetization is not available in Windows Phone 7 at this time. 5. In-App Purchases (Not supported in Windows Phone 7 at this time) This is a key monetization strategy in iOS and Android, however it is not available in Windows Phone at this time. It was hoped that this would make the cut as a feature in the "Mango" release, but rest assured that this is a highly requested feature and will hopefully be coming soon to the platform. Implementing Trial Supported ApplicationsTrial supported apps work like any other app in the marketplace except that Windows Phone tracks whether or not the app is currently in trial mode or if it has been purchased. It is up to the app developer to test whether the app is in trial mode and adjust the app functionality accordingly. In order to deploy a trial supported app, it must be identified as such when submitting the app for approval. This is done when setting the price of the app in the AppHub.
LicenseInformation.IsTrial in Silverlight appsFor Silverlight apps you can use the LicenseInformationclass to determine whether or not the app is in trial mode. Var info = new Microsoft.Phone.Marketplace.LicenseInformation(); if (info.IsTrial()) { // We are in trial mode here } else { // The user has purchased the app } However, the example above isn't the best way to check this. It can take over 60 milliseconds for the app to determine if it is in trial mode. It would be best to cache this functionality to avoid this cost. A common way of doing this is to add a static public property to the main app.xaml.cs file: public partial class App : Application { private static bool? _IsTrial; public static bool IsTrial { get { if (_IsTrial == null) { _IsTrial = new Microsoft.Phone.Marketplace.LicenseInformation().IsTrial(); } return _IsTrial.Value; } } // Do something app.xaml.cs } Now anywhere in your application you can check for a cached copy this value by simply checking: if (App.IsTrial) { // Do something } GamerServices.Guide class In XNA appsFor Xna apps, you make use of the GamerServices.Guide class to access all of the functionality needed to support trial mode. To check if the app is currently in trial mode, you call: if (Microsoft.Xna.Framework.GamerServices.Guide.IsTrialMode) { // We are in trial mode here } else { // The user has purchased the app } Note here that unlike in Silverlight applications, we do not need to cache this value as it is determined on start up. This method can also be called in Silverlight apps, however it is not recommended as its intent is for Xna apps. The Silverlight app would also have to take a dependency on the Microsoft.Xna.Framework.GamerServices assembly. Testing trial application supportEveryone knows you need to thoroughly test your apps, and developing for Windows Phone is no exception. The marketplace approval process can be brutal and they will test your app inside and out. However, the testing turnaround time can be days, and the marketplace testers may not understand your intentions for how the trial mode should work. You need to test that your app meets all of your criteria while in trial mode and that the app has no remnants of trial mode limitations when the full app is purchased. Testing trial mode is not difficult, but you have to remember that when building and testing an app on your local computer, it was not downloaded from the marketplace. So any check for trial mode will return "false". To get around this you could just go in and manually change your code to set IsTrial to "true" or "false" during your testing. This isn't the most desirable option as it could be easy to forget to change this code before deploying to the marketplace. A better approach is to create a new configuration option for testing applications in trial mode. 1. From your solution open the Configuration Manager, and create a new a "solution configuration":
2. Give the new configuration a name such as "Trial":
3. Open the properties window for each project, select the "Build" tab, and add a new conditional compilation symbol called "TRIAL":
4. Modify your code with a preprocessor conditional such that when a check is performed to determine if it is in trial mode, then it will always return true: private static bool? _IsTrial; public static bool IsTrial { get { #if TRIAL return true; #else if (_IsTrial == null) { _IsTrial = new Microsoft.Phone.Marketplace.LicenseInformation().IsTrial(); } return _IsTrial.Value; #endif } } 5. Finally set the active configuration to "Trial", and when you run your project the section with the conditional around "TRIAL" will be active and you can test your app as if it was in trial mode. Note: that these changes can be deployed in production code since the conditional sections are not compiled when you perform a build in a "Release" configuration ConsiderationsThere are a number of ways to limit your trial period such as the number of times the app can be used, how many days the trial lasts, a limited set of features, etc. While there is no right answer, you will need to keep in mind that if a user uninstalls an app, all of the data associated with the app is removed, and there currently isn't a way to persist any app usage data outside of the app itself on the phone. So, if you store trial related data in the app's local storage, then a user could just uninstall your app and reinstall it again to restart the trial period. This leads us to three viable options for tracking trial periods: 1. Store app usage data in local app storage. The user can always reinstall the app and reengage the trial period, but you can hope that the time involved to do this vs. the value of your app when translate into a purchase 2. Store app usage data on your own servers or to some cloud storage. Each time your app starts, you can make a call to a service to check if the user has reached the end of the trial period. The down side to this is that it could take longer to start your app, and users may not be able to use it there is no internet connectivity. However, you would only need to make this check while the app is in trial mode. Once they have the purchased copy, you would not need to make this call. 3. Offer limited functionality in the trial version of the app. The missing features don't have to be anything huge either. Something as simple persisting log in information in a paid version, could be enough to get user's to make the purchase. To increase the likelihood that a user will upgrade to the full app, you should always make it clear to the user what upgrading gives them. Additionally, users will need to know how to upgrade to the full version of the app both during and after the trial period has expired. They could go directly to the marketplace to upgrade the app, but developers should make it easier for them and increase the likelihood that they will upgrade. In a Silverlight app, you can provide a button or link somewhere in your app that calls the MarketplaceDetailTask to open up the marketplace app on the phone and have it navigate directly to your app: var task = new Microsoft.Phone.Tasks.MarketplaceDetailTask(); task.Show(); In an Xna app, the method to show the marketplace is in theGamerServices.Guide class: Microsoft.Xna.Framework.GamerServices.Guide.ShowMarketplace(PlayerIndex.One);Implementing Ad Supported ApplicationsAnother way to monetize is to add ads to your app. You could offer ads in either paid or free apps, although they are more common in free versions. It is up to the developer to decide where and how these ads should be displayed. Sometimes ads are shown before the app starts, but traditionally ads are shown within the app in a single ad zone that is unobtrusive, but is visible the majority of the time. Microsoft Advertising SDKOne of the easiest to use Ad Frameworks is the Microsoft Advertising SDK from pubCenter. The benefits of this platform are that it's easy to use, has tight integration with Visual Studio, it can be used for Windows Phone and Windows 8 ads, and the fact that it's already installed with the Windows Phone SDK. Getting setup to deliver ads with the Microsoft Ad Framework can be done 5 quick steps: 1. Add the ad control to your app. The framework and controls are already built into the Windows Phone SDK. Just open up your page and toolbox windows and drag and drop the control:
2. Sign up for free at the Microsoft Advertising pubCenter to register your Windows Live ID for receiving ads:
3. Click on the Setup tab in the pubCenter and register your app to obtain an Application ID:
4. Create an Ad Unit that will define the size of the ad as well as the types of advertising data that will be shown:
5. Finally, add your Application ID and Ad Unit ID from pubCenter into your app with the code such as: #if SHOW_TEST_ADS adControl1.ApplicationId = "test_client"; adControl1.AdUnitId = "Image480_80"; #else // Use your real Application ID and Ad Unit ID here adControl1.ApplicationId = "12345678-abcd-efgh-ijkl-mnopqrstuvwx"; adControl1.AdUnitId = "123456"; #endif Tip:It is useful here to be able to test both real ads and fake ads as real ads will not show up in the emulator. This is why it is useful to use conditional compilation symbols and set these values in code instead of in the visual properties window of the control. Now when your app is deployed the ad control will pull ads from pubCenter and display them to your users. You can track the ad impressions and other data with a variety of reports directly from pubCenter. Tip: Here are some additional resources to help you get started with Microsoft Advertising:
Note: To use the Microsoft Ad Framework you must reside in one of the 12 supported countries. However, you can expect more countries to be added over time. Third-party ad frameworksThere are a number of other third party ad frameworks you could decide to include in your application that can range in their features and payout amounts. When evaluating a third-party ad framework, be sure to check the following:
Working with the AppHub MarketPlaceDeploymentThis article isn't going to dive into all of the details about deploying an app to the marketplace, but there are a lot of resources to help you with this. For the purpose of this article it is important to point out the "set price and market availability" step of the process which allows you to:
In this screen shot you can how each of these can be setup:
If you ever need to make changes or open your app up to new markets, you can come back to this page at any time and resubmit your app. Any change to a price alone will take effect immediately. However, if you move from a Paid to Free app or upload any new content, the app will have to go through the certification process again which could take days. Collecting money from AppHubWhen you register at the AppHub marketplace you enter your bank and tax information before you app is submitted. When payouts do start coming in, this money will automatically direct deposited to your account. However, don't expect payouts to start happening right away. No payouts can be made until Microsoft has finalized the collection of the money from the users which can take 15 to 30 days for credit cards or 90 to 120 days for payments made through the mobile carriers. After that, you must reach a minimum threshold of $200 USD before that first 70% commission payout payment will be sent. So if your $.99 USD app only sells 100 copies, don't expect any payouts. You want the broadest worldwide exposure possible to increase the frequency and amount of each payout. A complete list of details about payout information can be found at: http://msdn.microsoft.com/library/hh202925(VS.92).aspx Monitoring App SalesThe AppHub offers a robust set of reports to see how often your app is being downloaded and sold as well as which markets it's being sold in. Through these reports you can see past payouts and look ahead to determine when your next payout might occur. If you have a trial version of your app, you can also use these reports to determine the percentage of people who buy the full app vs. downloading the trial. Here are a few example reports that show previous payouts, download details, daily download summaries:
Marketing your applicationOnce the app is in the marketplace, there is still the job of marketing the app. You don't have to fight for shelf space like in a department store, but you still need to get the word out about the app. There are literally countless ways that an app could be marketed, but here are some tips to get you started:
ConclusionMicrosoft has provided developers with everything they need to build, deploy, sell, and market apps for the Windows Phone to the world while at the same time giving developers the monetary incentives they need to build quality apps. With its ever growing market presence, it is up to the developer community to use these tools to create great apps that the world will love, |
|||
|
|
Mobile Code Samples
22 new code samples cover nearly all the new features for Windows Phone 7.5 (Mango) including the most requested and hotly anticipated areas - camera, media, sockets, sensors, SL/XNA integration, Tile backgrounds and background agents.Click here to download

-
WP 7.5 Overview for Developers
On Demand


This young developer was inspired by his big brother. Find out how he learned to program and why you wont be seeing skydiving Sasquatches anytime soon...
Read More

Get Started with Windows Phone. 


















