Development experience for WP7 or gMaps
We are Alexei Strakh and Alexander (often Alexey :)) Sorokoletov is the author of gMaps , one of the most popular applications for Windows Phone 7 in Europe. We are doing our favorite thing - developing an application for WP7 and want to share our experience and history of creating gMaps. Come to Windows Phone Camp on September 5th - we will personally tell you everything there and answer your questions.
We are both Belarusians, but one of us unexpectedly began to work in Russia. Since the Marketplace in Belarus is closed, they are registered on the Russian market (but this is another story, how can a citizen of Belarus register in the Russian Marketplace)
About a year ago, we decided to go to Moscow to see the presentation of Windows Phone 7. I was interested in the opportunity to write on Silverlight for my phone, and since we have enough skills in it, we decided to try it immediately. At the same time, they wanted to see how fast and convenient the phone was (I even had to sign a few pieces of paper, but in the end I played). The result was positive, I really liked the speed and platform. We believe that it was the low entry threshold that was the catalyst for such a rapid growth of the WP7 Marketplace. C #, Silverlight / XNA and the Microsoft developers community have done their job!
And here is where it all began: “I was looking for, I was waiting, I was waiting ... I could not find ... I had to write Google Maps for WP7 myself ...”.
At the time of writing, there were paid (only) analogues of gMaps , but they lacked something and we decided to get confused and write our own version. Actually, gMaps is the google card for Windows Phone 7. In addition to the simple display of maps, there are the following convenient features:
The first time, as it usually happens, the application did not pass certification due to the lack of settings for disabling GPS inside the application. Actually, it’s good that it didn’t go away, since gMaps were in a terrible wrapper - crooked icons made in 10 seconds by a splashscreen and crashed due to any unusual Google response.
When gMaps took a more acceptable look, got into the Marketplace and the first statistics appeared, it turned out that on the first day of publication the application was downloaded about 3 times. The application immediately overtook all of our combined applications that existed at that time in the Marketplace and it was cool.
Within a month, gMaps overtook even youtube, and at the DevCon 11 conference we were awarded a prize for the most downloaded application in the Marketplace .
A quick start helped to collect a huge number of reviews, which made it possible to assess the real needs of users and quickly adapt to them. Users wrote everything in a row, asked how to do this or that, proposed new features, and discussed existing ones. For a more structured feedback, we decided to use UserVoice . This allowed us to identify the hottest functionalities and implement them first. However, this did not significantly reduce the flow of letters and reviews in the Marketplace.
Thanks to active communication with users, we found several enthusiasts. One of them is Stephane Rosi, which helps us deal with the UserVoice forum, for which special thanks to him!
We also got a designer from Brazil - Diego Eis, who said that our design, to put it mildly, was no good and proposed a new option. As it turned out later, Diego is quite a famous person in Brazil, with his own company for creating websites, design for them. Now we periodically collaborate with him to design new functionalities, such as integration with Latitude , Turn by Turn navigation, and so on.
Communicate with users - they like it and it will be useful for you!
And some statistics. At the moment, gMaps is approaching 300k downloads and already has about 5k reviews with an average rating of 4.1. We use google analytics to analyze the use of the application and some of its features. We have an average of 17k active users per day (about 50k application launches)
Without a doubt, there were problems and this is good. Difficulties harden.
The native Maps application works an order of magnitude faster, there is more pleasant animation. MapControl does not allow you to get the same speed and animation, unfortunately. In Mango beta, the speed was improved, but beta 2 returned it to its previous level. In addition, MapControl's extensibility is poor.
Due to the same extensibility, adding offline maps to work turned out to be quite difficult. We put off this functionality in favor of the more popular ones.
MapControl does not work well when turning, for example, the path is erased, pushpins do not turn after the map, multitouch is buggy. In future versions, we will try to make Driver mode more stable, as well as with support for landscape mode.
The error "Unspecified error" from the bowels of MapControl, which was also mystically fixed (by removing Stroke from one of the Path in the pushpin template with the current position), the
error was reproduced at maximum approximation, again it is not clear where, why and why.
It turned out to be difficult to implement Tap & Hold on the map - we tried all possible options - both ready-made and self-made - in the end, we use the TouchPanel from XNA with a dope to support landscape mode.
Oh, the vaunted Google applet has given us a lot of work :)
It turns out that a lot of Google can do it, and a lot of things its Google application doesn’t. Google does not support local search since last November (it will still work until 2012). The Places API, offered as an alternative to Local Search, does not return the required results.
In addition to integration issues, after several days of downloading, a question arose with query limits.
Linking a card to a Google account temporarily helped, as well as creating a paid version of the application. Google considers requests for the HTTP Referer header, which cannot be changed in Windows Phone 7.0, and which depends on the application identifier.
Buying a large package of requests turned out to be some impossible task. Representatives of the g-corporation offered the package “all together, what is needed for happiness”, including many things that we did not need. You can’t just increase the limit of geocoding requests. :(
We are waiting for the mango, there the problem with limits can be solved in another way.
When integrating with Google Latitude , shortcomings also appeared:
- oauth2 stopped working in IE, it’s good that support offered a temporary solution
- get friends' locations and display them on the map because of privacy More precisely, Google cannot provide third parties with access to the data, but it can display it on the map itself. We are looking for workarounds, we want latitude on Windows Phone.
In the best of times, 100+ letters came in a day, try to understand, read and process this. It helped that it was possible at the initial stage to analyze, assemble and implement the most popular functionality. After integrating with uservoice, it became even easier. An analysis of the letters showed that approximately the same requests come to the uservoice forum. They also used gmail autofilters and auto answers. All feedback was also analyzed in the form of review, which throughout the whole time was from 50 to 100 per day, due to which interesting correspondence was tied up and interesting facts / bugs / suggestions were found out.
No matter how good the emulator is, you always need to test the application on devices with windows phone 7.0 - only there you can understand the speed of the application, and the user experience.
If you have installed Windows Phone Developer Tools for Mango Beta (1,2,2+), you can create applications for 7.0, and test them on the emulator. Unfortunately, this emulator does not exactly reproduce the wp 7.0 version. For example, the Referer header (or Accept-Encoding) can be set in the application for 7.0 and everything will work on the emulator. On a device with wp 7.0 you get an error.
We decided not to make a lot of settings. Periodically, this leads to confusion for users, but we are firmly convinced that the less the settings, the more pleasant it is to use the application.
As it is written in one wonderful book (getting real) - additional settings are just a release of responsibility for the fact that we do not know what will be convenient for the user. All necessary settings are made in the user interface (for example, switching the metric-imperial system), which are quite easy to change during the work with the application.
And, I think, the golden rule of the mobile developer is to use the platform for which you are writing. Feeling the platform, it is easier to create the optimal scenario for working with the application.
The first two months of the application’s life, it was free and without ads. This approach from the start made it possible to get a large number of users and feedback. After the application had its own user base, we decided to add advertising, which did not reduce downloading. However, reviews began to appear like “An advertisement appeared. Uninstalling ... ".
Despite the fact that the application is quite popular, it still has not been able to monetize normally. Now in the Marketplace there are two versions of the application: gMaps (free with ads) and gMaps Pro (ad free) . From the free version there is a link to the Pro version of the application.
In order to interest users in buying the paid version, and at the same time not to lose the audience in the free one, we decided to shift the functionality in the application releases. That is, we decided not to make a separate set of features available only in the Pro version, but at the same time, all the new features first fell into the paid version only, and a couple of weeks later into the free one.
In order not to annoy the user with advertising, they decided to make it hidden. This, of course, significantly reduced the number of displays, but almost did not reduce the number of users. We selected and tested advertising providers for a long time. And since to change the provider it was necessary to change AdControl and update applications (which was difficult to explain to users who asked what was new in this version), it was decided to installAdrotator . With it, we conducted various experiments and, in the end, returned to where we started. We have tried the following ad vendors:
We started with PubCenter, and returned to it after all the experiments. The only drawback of PubCenter is the inability to withdraw the revenue. This can be done only by having a USA address, SSN / EIN and an account with a USA bank, which we are going to do in the near future if the speed of PubCenter expansion does not increase.
It's no secret that the mango update for Bing Maps will be powerful, so we try to do everything possible to keep up with the update and constantly (about 2 times a month) roll out new versions.
Diego Eis ( @diegoeis ) - our designer from Brazil
Stephani Rosi ( @stephanerosi ) - moderator of the UserVoice forum from Italy
Zhenya Domanov ( @jayminsk ) - just a good person who painted us Logo
Dima Danchenko ( @ Dan4a )
Stas Shusha ( @JourneymanMW )
We have some ideas for creating games and utilities. One of the ideas is to develop a multiplayer game, the participants of which can play not only from the phone, but also from the desktop. We already tried this concept and created a multiplayer game called "Naval Battle X" (classic naval battle). We also migrated the UI to Silverlight 4.0 and released it as a Facebook application . This allowed playing with opponents not only from the phone, but also from Facebook. This was the first stage of testing the concept and we will continue to develop this idea.
We have other tool applications like this:
Less than a year has passed since the launch of the WP7 platform, and it has already shown itself as a promising, rapidly developing mobile OS. Microsoft really made the right choice, taking Silverlight / XNA as the basis for development for WP7, providing a low entry threshold. The support of the developer community has been and remains amazing. Periodic contests, events, webinars, many online documentation and training materials - all this is the key to the success of the platform!
As for us, we are glad that we are doing what we love. It turned out exactly what we wanted - we were able to use our experience in .NET and Silverlight on the new mobile platform. The living community does not get bored, constant feedback and the use of the phone every day gives rise to many ideas that are easy to implement.
Windows Phone 7 brings us both fun and money. Agree, it’s rarely possible to combine these things :)
We are waiting for your comments and suggestions:
Alexander Sorokoletov ( @alexsorokoletov )
Alexei Strakh ( @alexeystrakh )
AP:
you can see applications without Windows Phone / Zune here:
Who we are and what we do
We are both Belarusians, but one of us unexpectedly began to work in Russia. Since the Marketplace in Belarus is closed, they are registered on the Russian market (but this is another story, how can a citizen of Belarus register in the Russian Marketplace)
About a year ago, we decided to go to Moscow to see the presentation of Windows Phone 7. I was interested in the opportunity to write on Silverlight for my phone, and since we have enough skills in it, we decided to try it immediately. At the same time, they wanted to see how fast and convenient the phone was (I even had to sign a few pieces of paper, but in the end I played). The result was positive, I really liked the speed and platform. We believe that it was the low entry threshold that was the catalyst for such a rapid growth of the WP7 Marketplace. C #, Silverlight / XNA and the Microsoft developers community have done their job!
gMaps and why is it
And here is where it all began: “I was looking for, I was waiting, I was waiting ... I could not find ... I had to write Google Maps for WP7 myself ...”.
At the time of writing, there were paid (only) analogues of gMaps , but they lacked something and we decided to get confused and write our own version. Actually, gMaps is the google card for Windows Phone 7. In addition to the simple display of maps, there are the following convenient features:
- geocoding and reverse geocoding - (search by address, search address by coordinates)
- local search - oh, yes, now finding the nearest bar or gas station is even easier. You can also read reviews about the object found, you can get directions or call.
- routes (from current location, ab, on foot, by car, by bike)
- several layers in addition to the standard ones - traffic jams and public transport
- the ability to share a map and location is a very convenient thing, much better than what google maps offer even for an ondroed
- Following and turning the card in driver mode (Driver mode)
Statistics, reviews, downloads
The first time, as it usually happens, the application did not pass certification due to the lack of settings for disabling GPS inside the application. Actually, it’s good that it didn’t go away, since gMaps were in a terrible wrapper - crooked icons made in 10 seconds by a splashscreen and crashed due to any unusual Google response.
When gMaps took a more acceptable look, got into the Marketplace and the first statistics appeared, it turned out that on the first day of publication the application was downloaded about 3 times. The application immediately overtook all of our combined applications that existed at that time in the Marketplace and it was cool.
Within a month, gMaps overtook even youtube, and at the DevCon 11 conference we were awarded a prize for the most downloaded application in the Marketplace .
A quick start helped to collect a huge number of reviews, which made it possible to assess the real needs of users and quickly adapt to them. Users wrote everything in a row, asked how to do this or that, proposed new features, and discussed existing ones. For a more structured feedback, we decided to use UserVoice . This allowed us to identify the hottest functionalities and implement them first. However, this did not significantly reduce the flow of letters and reviews in the Marketplace.
Thanks to active communication with users, we found several enthusiasts. One of them is Stephane Rosi, which helps us deal with the UserVoice forum, for which special thanks to him!
We also got a designer from Brazil - Diego Eis, who said that our design, to put it mildly, was no good and proposed a new option. As it turned out later, Diego is quite a famous person in Brazil, with his own company for creating websites, design for them. Now we periodically collaborate with him to design new functionalities, such as integration with Latitude , Turn by Turn navigation, and so on.
Communicate with users - they like it and it will be useful for you!
And some statistics. At the moment, gMaps is approaching 300k downloads and already has about 5k reviews with an average rating of 4.1. We use google analytics to analyze the use of the application and some of its features. We have an average of 17k active users per day (about 50k application launches)
Problems encountered
Without a doubt, there were problems and this is good. Difficulties harden.
Slow MapControl
The native Maps application works an order of magnitude faster, there is more pleasant animation. MapControl does not allow you to get the same speed and animation, unfortunately. In Mango beta, the speed was improved, but beta 2 returned it to its previous level. In addition, MapControl's extensibility is poor.
The inability to simply add offline mode
Due to the same extensibility, adding offline maps to work turned out to be quite difficult. We put off this functionality in favor of the more popular ones.
Card rotation
MapControl does not work well when turning, for example, the path is erased, pushpins do not turn after the map, multitouch is buggy. In future versions, we will try to make Driver mode more stable, as well as with support for landscape mode.
Errors with multitouch
The error "Unspecified error" from the bowels of MapControl, which was also mystically fixed (by removing Stroke from one of the Path in the pushpin template with the current position), the
error was reproduced at maximum approximation, again it is not clear where, why and why.
It turned out to be difficult to implement Tap & Hold on the map - we tried all possible options - both ready-made and self-made - in the end, we use the TouchPanel from XNA with a dope to support landscape mode.
Google services
Oh, the vaunted Google applet has given us a lot of work :)
It turns out that a lot of Google can do it, and a lot of things its Google application doesn’t. Google does not support local search since last November (it will still work until 2012). The Places API, offered as an alternative to Local Search, does not return the required results.
In addition to integration issues, after several days of downloading, a question arose with query limits.
Linking a card to a Google account temporarily helped, as well as creating a paid version of the application. Google considers requests for the HTTP Referer header, which cannot be changed in Windows Phone 7.0, and which depends on the application identifier.
Buying a large package of requests turned out to be some impossible task. Representatives of the g-corporation offered the package “all together, what is needed for happiness”, including many things that we did not need. You can’t just increase the limit of geocoding requests. :(
We are waiting for the mango, there the problem with limits can be solved in another way.
When integrating with Google Latitude , shortcomings also appeared:
- oauth2 stopped working in IE, it’s good that support offered a temporary solution
- get friends' locations and display them on the map because of privacy More precisely, Google cannot provide third parties with access to the data, but it can display it on the map itself. We are looking for workarounds, we want latitude on Windows Phone.
Feedback
In the best of times, 100+ letters came in a day, try to understand, read and process this. It helped that it was possible at the initial stage to analyze, assemble and implement the most popular functionality. After integrating with uservoice, it became even easier. An analysis of the letters showed that approximately the same requests come to the uservoice forum. They also used gmail autofilters and auto answers. All feedback was also analyzed in the form of review, which throughout the whole time was from 50 to 100 per day, due to which interesting correspondence was tied up and interesting facts / bugs / suggestions were found out.
Device Testing
No matter how good the emulator is, you always need to test the application on devices with windows phone 7.0 - only there you can understand the speed of the application, and the user experience.
If you have installed Windows Phone Developer Tools for Mango Beta (1,2,2+), you can create applications for 7.0, and test them on the emulator. Unfortunately, this emulator does not exactly reproduce the wp 7.0 version. For example, the Referer header (or Accept-Encoding) can be set in the application for 7.0 and everything will work on the emulator. On a device with wp 7.0 you get an error.
Usability
We decided not to make a lot of settings. Periodically, this leads to confusion for users, but we are firmly convinced that the less the settings, the more pleasant it is to use the application.
As it is written in one wonderful book (getting real) - additional settings are just a release of responsibility for the fact that we do not know what will be convenient for the user. All necessary settings are made in the user interface (for example, switching the metric-imperial system), which are quite easy to change during the work with the application.
And, I think, the golden rule of the mobile developer is to use the platform for which you are writing. Feeling the platform, it is easier to create the optimal scenario for working with the application.
Monetization
The first two months of the application’s life, it was free and without ads. This approach from the start made it possible to get a large number of users and feedback. After the application had its own user base, we decided to add advertising, which did not reduce downloading. However, reviews began to appear like “An advertisement appeared. Uninstalling ... ".
Despite the fact that the application is quite popular, it still has not been able to monetize normally. Now in the Marketplace there are two versions of the application: gMaps (free with ads) and gMaps Pro (ad free) . From the free version there is a link to the Pro version of the application.
In order to interest users in buying the paid version, and at the same time not to lose the audience in the free one, we decided to shift the functionality in the application releases. That is, we decided not to make a separate set of features available only in the Pro version, but at the same time, all the new features first fell into the paid version only, and a couple of weeks later into the free one.
In order not to annoy the user with advertising, they decided to make it hidden. This, of course, significantly reduced the number of displays, but almost did not reduce the number of users. We selected and tested advertising providers for a long time. And since to change the provider it was necessary to change AdControl and update applications (which was difficult to explain to users who asked what was new in this version), it was decided to installAdrotator . With it, we conducted various experiments and, in the end, returned to where we started. We have tried the following ad vendors:
- Microsoft PubCenter - proved to be the most reliable in terms of API and errors. At first there was a rather high eCPM (~ $ 3-4), which eventually went down to ~ $ 1 for 1k impressions, which was still higher than that of other providers, given that 100% of the impressions were paid.
- AdDuplex is a WP7-oriented advertising provider that allows you to advertise your applications in exchange for displaying ads in your application. So there is a “Monetize" mode in which you get money for displaying ads. Good ad WP7 applications with good CTR. Rhubarb is quite low (eCPM did not rise above $ 0.7 and <80% of impressions are paid), but remains quite attractive for free self-promotion (or advertising your other applications)
- Google AdMob - AdControl is slow and with errors, periodically leading to the suspension of the user interface. eCMP low, FillRate (number of responses with advertising to the total number of advertising requests) ~ 20%
We started with PubCenter, and returned to it after all the experiments. The only drawback of PubCenter is the inability to withdraw the revenue. This can be done only by having a USA address, SSN / EIN and an account with a USA bank, which we are going to do in the near future if the speed of PubCenter expansion does not increase.
Future updates
It's no secret that the mango update for Bing Maps will be powerful, so we try to do everything possible to keep up with the update and constantly (about 2 times a month) roll out new versions.
- localization (user interface, responses from the backend, map) - will already be available in the next release of gMaps Pro 1.11
- The Latitude google . This system - an analogue of 4sq, allows you to update your location, make checks, view a list of friends, their positions and statuses on the map. Latitude only recently appeared in the official google maps application for the ondroed , and now it will be on wp7 - it is planned in the next release of gMaps Pro 1.11. I must also say that the search for an application integrated with Latitude did not return any results for wp7.
- Favorites (places, routes, integration with google favorites)
- Offline maps - support for the ability to cache map sections (cities, countries). So far, due to MapControl limitations, this functionality cannot be implemented in a simple way and is postponed.
- Public transport routes
- Mango support (compass, deep linking and live tiles)
Special thanks to everyone who helped us with the development of gMaps
Diego Eis ( @diegoeis ) - our designer from Brazil
Stephani Rosi ( @stephanerosi ) - moderator of the UserVoice forum from Italy
Zhenya Domanov ( @jayminsk ) - just a good person who painted us Logo
Dima Danchenko ( @ Dan4a )
Stas Shusha ( @JourneymanMW )
Development Plans and Other Applications
We have some ideas for creating games and utilities. One of the ideas is to develop a multiplayer game, the participants of which can play not only from the phone, but also from the desktop. We already tried this concept and created a multiplayer game called "Naval Battle X" (classic naval battle). We also migrated the UI to Silverlight 4.0 and released it as a Facebook application . This allowed playing with opponents not only from the phone, but also from Facebook. This was the first stage of testing the concept and we will continue to develop this idea.
We have other tool applications like this:
- zTop is an application for tracking position in the Marketplace in the selected region and categories. Builds a convenient graph on which displays the position of the application in each available region. It also builds historical graphs that show how the position has changed over time, which allows you to analyze events that affected the rating (advertising, release, etc.). There is a desktop version that, in addition to the features listed above, allows you to watch Marketplace reports on downloads and sales.
- App Discounts - an application showing the current discounts in Markeplace by category.
- Naval Battle is a single-player naval battle (with which it all began exactly a year ago).
Conclusion
Less than a year has passed since the launch of the WP7 platform, and it has already shown itself as a promising, rapidly developing mobile OS. Microsoft really made the right choice, taking Silverlight / XNA as the basis for development for WP7, providing a low entry threshold. The support of the developer community has been and remains amazing. Periodic contests, events, webinars, many online documentation and training materials - all this is the key to the success of the platform!
As for us, we are glad that we are doing what we love. It turned out exactly what we wanted - we were able to use our experience in .NET and Silverlight on the new mobile platform. The living community does not get bored, constant feedback and the use of the phone every day gives rise to many ideas that are easy to implement.
Windows Phone 7 brings us both fun and money. Agree, it’s rarely possible to combine these things :)
We are waiting for your comments and suggestions:
Alexander Sorokoletov ( @alexsorokoletov )
Alexei Strakh ( @alexeystrakh )
AP:
you can see applications without Windows Phone / Zune here: