Worry About Popularity First, Monetization – Second

I’ve published a post in a personal blog about my position on current state of affairs in WP7 marketplace in regard of monetizing your applications. I think it makes the case for AdDuplex and is the basic reasoning why AdDuplex was born.

The post is called Don’t “monetize” your WP7 apps on Day 1.

And the main point is that gaining popularity for your app is much more important at this early stage of Windows Phone Marketplace, than getting a few extra bucks.

AdDuplex is Now Open for Registration + Bonus

banner_square_freeAdDuplex – a new innovative way to promote your Windows Phone 7 apps for free – no longer requires invitations to join.

AdDuplex helps you promote your WP7 app by helping other developers/publishers to promote their. You just add AdDuplex AdControl to your WP7 Silverlight application (XNA support coming later) and start showing ads for other apps on the network. They, in turn, show ads for your app. It’s that simple.

The exchange ratio is currently set to 8:10. This means that for each 10 ads you show for other apps you’ll get 8 impressions for your app’s ad. The remaining 2 will be sold to support the service.

Join now!

Go Live in February and Get 1000 Impression Bonus!

Register your app on AdDuplex network, implement AdControl and go live in Windows Phone 7 marketplace by the end of February, 2011 and get 1000 extra impressions for your ad absolutely free.

AdDuplex Control Version 1.1 Released

A new version of AdDuplex Silverlight AdControl is now available. It ads click tracking for Marketplace ads (all exchange ads). You can download it from the client area of the AdDuplex site.

In order to facilitate the best possible user experience we didn’t track clicks on WP7 Marketplace targeted ads in the first release. Now we found a way to overcome this limitation without sacrificing the quality of user experience.

Applications running earlier version of AdControl don’t need to update, but we encourage you to use the latest AdDuplex version when you submit a planned update to your app.

And the Winner is … It’s a Tie!

I’m happy to announce that the first 2 third party apps on the AdDuplex network were just published on the Marketplace!

One is called ContaSconto (Zune link) by Kitendo Lab. The app lets you calculate discount amounts, discounted prices, etc.

f6d4be61-5e10-4110-a51d-7a5c3e3f6a4f

Another app using AdDuplex is called FotoIreland (Zune link) by Help Software. It’s a great collection of beautiful shots of, as you might have guessed, Ireland.

105d281a-c522-4bc3-a5ca-f7a7585c3a70

We decided to award both apps with 10,000 impressions on the AdDuplex network.

Congratulations to Kitendo Lab and Help Software on great apps! Keep up the good work. Your prizes will be applied to your accounts.

Tutorial: Integrating AdDuplex Silverlight control into your app

Integrating AdDuplex Silverlight control into your Windows Phone 7 application is really simple. This tutorial will go through the steps of integrating AdDuplex ad control into a fictional application.

Our Initial App

Here’s what our initial application looks like:

image

It’s a simple application with all the traditional WP7 app attributes at the top and scrollable content area filling the rest of the screen. Essentially it’s a 2 row Grid with header part placed in the first row (0) and content in the second (1).

 

Here’s the XAML for our initial page:

<phone:PhoneApplicationPage
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800"
x:Class="WindowsPhoneApplication11.MainPage"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">

<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
</Grid.RowDefinitions>

<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="ADDUPLEX TUTORIAL" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="lorem ipsum page" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0">
<Grid.Background>
<RadialGradientBrush GradientOrigin="0.371,0.363" RadiusY="0.712" RadiusX="0.712">
<GradientStop Color="Black" Offset="1"/>
<GradientStop Color="#FFA7A7A7"/>
</RadialGradientBrush>
</Grid.Background>
<ScrollViewer HorizontalAlignment="Left" VerticalAlignment="Top" Padding="10" Margin="10" BorderBrush="#FF6C6C6C" BorderThickness="1">
<TextBlock TextWrapping="Wrap" Height="2634" Width="455"><Run Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed gravida eros sit amet enim egestas rhoncus. Praesent id orci ut dolor malesuada mollis. Cras nisi elit, dictum a ultrices in, hendrerit vitae felis. Nam in dui id neque venenatis volutpat et vitae lorem. Aenean blandit augue eget lorem ornare id blandit justo auctor. Curabitur quis cursus lacus. Cras nec tellus nisi. Quisque et est nulla, sit amet malesuada dolor. Vivamus tempus fringilla metus, vitae porttitor est mattis sit amet. Mauris vestibulum mauris at lectus dapibus tincidunt. Aliquam pellentesque eleifend purus, et lacinia nisi vulputate vel. Maecenas quis luctus erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas eu enim velit, in rutrum nisi. Ut in tortor ante. Nulla et facilisis urna. Fusce in orci urna, a scelerisque orci. Donec tristique diam hendrerit dolor accumsan semper."/><LineBreak/><Run/><LineBreak/><Run Text="Vestibulum mauris nibh, dignissim sit amet lacinia eget, imperdiet nec turpis. Sed volutpat viverra lacinia. Sed vel purus lacus, nec faucibus turpis. In hac habitasse platea dictumst. Vestibulum ligula urna, convallis at condimentum in, feugiat vitae lorem. Maecenas sit amet purus turpis, ac imperdiet neque. Etiam dolor justo, imperdiet a scelerisque et, congue vitae felis. Donec faucibus interdum arcu consequat vulputate. Mauris pharetra, turpis in dictum consectetur, risus ligula fermentum ipsum, convallis luctus sapien quam a risus. Nullam at facilisis tellus. Sed elit velit, volutpat vitae placerat quis, sagittis vel dolor. Suspendisse in sem imperdiet eros pulvinar pellentesque sit amet dignissim felis. Ut iaculis mollis orci, ut ultrices nibh lacinia sit amet. Morbi tincidunt mollis diam nec dictum. Morbi purus libero, molestie a bibendum at, ornare vel tortor. Vivamus suscipit eros eget arcu venenatis sagittis. Donec id rhoncus tellus. Suspendisse rhoncus mi sodales felis consectetur ut tincidunt nisi sodales."/><LineBreak/><Run/><LineBreak/><Run Text="Nullam ultrices lobortis sapien ut lacinia. Morbi eget justo ac magna accumsan interdum ac in sem. Nam at purus a ante tincidunt feugiat. Nunc sollicitudin egestas justo. Donec sollicitudin tempus justo, id iaculis est laoreet quis. Curabitur euismod sagittis ullamcorper. Mauris volutpat, mauris in interdum mattis, ante purus interdum mauris, non semper ipsum ligula quis risus. Mauris felis diam, rhoncus eget condimentum nec, pellentesque non lacus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quis est at odio aliquam vulputate viverra ut tellus. Pellentesque eget neque lobortis metus sollicitudin venenatis. Nam tempor justo in lectus dictum vulputate. Praesent vel leo leo. Proin vitae arcu ligula. Etiam eget mi nec est faucibus malesuada. Ut non diam ante. Nam lectus ipsum, adipiscing in tempus vitae, semper vitae risus. Aliquam dictum malesuada lorem. Duis consequat ornare mattis. Vivamus ac libero eget libero faucibus pretium sed quis nunc."/><LineBreak/><Run/><LineBreak/><Run Text="Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed convallis luctus pharetra. Morbi tincidunt diam id nisi vehicula posuere. Proin sodales aliquam augue, sed imperdiet dolor pharetra nec. Sed eget libero facilisis dolor suscipit pretium. Proin rhoncus odio semper nulla placerat a semper nunc mollis. Vestibulum vehicula, nisi et egestas suscipit, nisl est commodo sapien, vitae tempor nisl augue tincidunt risus. Nulla accumsan mauris sit amet tortor viverra rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec urna arcu, tincidunt eget luctus sit amet, eleifend a nulla. Vestibulum et metus eget arcu sollicitudin vehicula eget vehicula metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi viverra viverra cursus."/><LineBreak/><Run/><LineBreak/><Run Text="Sed at mi sed turpis viverra bibendum. Nunc quis diam eget tortor hendrerit convallis quis in velit. Vestibulum ac lectus ligula, eget sodales risus. Etiam placerat lectus vitae ipsum commodo a ullamcorper urna malesuada. Etiam laoreet ultricies mattis. Fusce consectetur mollis eros id convallis. Vivamus sagittis purus eget libero ornare convallis. In non elit vel lacus hendrerit auctor non at tellus. In hac habitasse platea dictumst. Etiam porta, sem quis lacinia consectetur, odio dolor hendrerit nisi, sollicitudin sagittis quam mi in tellus. Donec consectetur ante sit amet elit laoreet semper. Mauris eget ligula id sapien pharetra euismod et id risus. Mauris auctor semper massa nec tempus. Curabitur gravida sodales elementum. Sed sed dolor eget turpis imperdiet viverra. Integer a elit nisl."/></TextBlock>
</ScrollViewer>
</Grid>
</Grid>
</phone:PhoneApplicationPage>

What we want to do is place AdDuplex ad control at the bottom of this page.

Add a Reference to AdDuplex Assembly

We will be using Expression Blend in this tutorial and accomplish everything without switching to XAML view. That said you can obviously do all of this in Visual Studio and XAML.

First you’ll need to download AdDuplex Ad Control for Silverlight distribution archive and extract it to a folder of your choice. The contents of the folder should look something like this:

image

Now we go to the Project menu in Blend and select “Add Reference…”

image

In the “Add Reference” dialog just navigate to the directory where you’ve extracted AdDuplex distribution archive and select AdDuplex.AdControl.Silverlight.dll

The reference to the AdDuplex assembly is added to your project.

image

Preparing a Place for the Control

We need to adjust our page layout so we can place the AdDuplex control without affecting usability of our app.

To do that we are going to add an additional row to our layout Grid and set it’s Height to Auto.

image

As you can see Blend still stretches our content area over both rows. It did this by setting RowSpan of the content panel to 2:

image

We Reset it back to 1 and we have our content panel adjusted to our new layout:

image

And the place for our ad control is prepared.

Placing Control on the Page

Now we just need to place the ad control into that place.

In Expression Blend toolbar click the Assets button:

image

In the assets window start typing “adcontrol” and the list will be filtered to AdDuplex AdControl:

image

Select the control and then double-click in the toolbar:

image

The control is inserted into the page:

image

Now we just need to move it into position:

image

Note: make sure you place the control into a container that has no margin or padding on the sides. The control is designed to occupy the whole width of the page (480 pixels).

Now we just need to configure the control to serve ads for our app and we are good to go.

Configuring AdDuplex AdControl

When you register your application in AdDuplex system it gets an internal identifier called AppId. You can see the AppId for your app in the AdDuplex client area. We just need to set that AppId value to AppId property of the AdControl.

Select AdDuplex AdControl in Blend. In the Properties pane (usually on the right) type “AppId” into a search box:

image

Enter your app’s AppId into the field and you are set. Now when we run our app it works as before and AdDuplex AdControl is nicely incorporated.

image

Here’s the resulting XAML for our final app:

<phone:PhoneApplicationPage
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:AdDuplex="clr-namespace:AdDuplex;assembly=AdDuplex.AdControl.Silverlight"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="800"
x:Class="WindowsPhoneApplication11.MainPage"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">

<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition/>
<RowDefinition Height="Auto" MinHeight="81"/>
</Grid.RowDefinitions>

<!--TitlePanel contains the name of the application and page title-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="ADDUPLEX TUTORIAL" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="lorem ipsum page" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>

<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0">
<Grid.Background>
<RadialGradientBrush GradientOrigin="0.371,0.363" RadiusY="0.712" RadiusX="0.712">
<GradientStop Color="Black" Offset="1"/>
<GradientStop Color="#FFA7A7A7"/>
</RadialGradientBrush>
</Grid.Background>
<ScrollViewer HorizontalAlignment="Left" VerticalAlignment="Top" Padding="10" Margin="10" BorderBrush="#FF6C6C6C" BorderThickness="1">
<TextBlock TextWrapping="Wrap" Height="2634" Width="455"><Run Text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed gravida eros sit amet enim egestas rhoncus. Praesent id orci ut dolor malesuada mollis. Cras nisi elit, dictum a ultrices in, hendrerit vitae felis. Nam in dui id neque venenatis volutpat et vitae lorem. Aenean blandit augue eget lorem ornare id blandit justo auctor. Curabitur quis cursus lacus. Cras nec tellus nisi. Quisque et est nulla, sit amet malesuada dolor. Vivamus tempus fringilla metus, vitae porttitor est mattis sit amet. Mauris vestibulum mauris at lectus dapibus tincidunt. Aliquam pellentesque eleifend purus, et lacinia nisi vulputate vel. Maecenas quis luctus erat. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Maecenas eu enim velit, in rutrum nisi. Ut in tortor ante. Nulla et facilisis urna. Fusce in orci urna, a scelerisque orci. Donec tristique diam hendrerit dolor accumsan semper."/><LineBreak/><Run/><LineBreak/><Run Text="Vestibulum mauris nibh, dignissim sit amet lacinia eget, imperdiet nec turpis. Sed volutpat viverra lacinia. Sed vel purus lacus, nec faucibus turpis. In hac habitasse platea dictumst. Vestibulum ligula urna, convallis at condimentum in, feugiat vitae lorem. Maecenas sit amet purus turpis, ac imperdiet neque. Etiam dolor justo, imperdiet a scelerisque et, congue vitae felis. Donec faucibus interdum arcu consequat vulputate. Mauris pharetra, turpis in dictum consectetur, risus ligula fermentum ipsum, convallis luctus sapien quam a risus. Nullam at facilisis tellus. Sed elit velit, volutpat vitae placerat quis, sagittis vel dolor. Suspendisse in sem imperdiet eros pulvinar pellentesque sit amet dignissim felis. Ut iaculis mollis orci, ut ultrices nibh lacinia sit amet. Morbi tincidunt mollis diam nec dictum. Morbi purus libero, molestie a bibendum at, ornare vel tortor. Vivamus suscipit eros eget arcu venenatis sagittis. Donec id rhoncus tellus. Suspendisse rhoncus mi sodales felis consectetur ut tincidunt nisi sodales."/><LineBreak/><Run/><LineBreak/><Run Text="Nullam ultrices lobortis sapien ut lacinia. Morbi eget justo ac magna accumsan interdum ac in sem. Nam at purus a ante tincidunt feugiat. Nunc sollicitudin egestas justo. Donec sollicitudin tempus justo, id iaculis est laoreet quis. Curabitur euismod sagittis ullamcorper. Mauris volutpat, mauris in interdum mattis, ante purus interdum mauris, non semper ipsum ligula quis risus. Mauris felis diam, rhoncus eget condimentum nec, pellentesque non lacus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec quis est at odio aliquam vulputate viverra ut tellus. Pellentesque eget neque lobortis metus sollicitudin venenatis. Nam tempor justo in lectus dictum vulputate. Praesent vel leo leo. Proin vitae arcu ligula. Etiam eget mi nec est faucibus malesuada. Ut non diam ante. Nam lectus ipsum, adipiscing in tempus vitae, semper vitae risus. Aliquam dictum malesuada lorem. Duis consequat ornare mattis. Vivamus ac libero eget libero faucibus pretium sed quis nunc."/><LineBreak/><Run/><LineBreak/><Run Text="Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed convallis luctus pharetra. Morbi tincidunt diam id nisi vehicula posuere. Proin sodales aliquam augue, sed imperdiet dolor pharetra nec. Sed eget libero facilisis dolor suscipit pretium. Proin rhoncus odio semper nulla placerat a semper nunc mollis. Vestibulum vehicula, nisi et egestas suscipit, nisl est commodo sapien, vitae tempor nisl augue tincidunt risus. Nulla accumsan mauris sit amet tortor viverra rutrum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Donec urna arcu, tincidunt eget luctus sit amet, eleifend a nulla. Vestibulum et metus eget arcu sollicitudin vehicula eget vehicula metus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi viverra viverra cursus."/><LineBreak/><Run/><LineBreak/><Run Text="Sed at mi sed turpis viverra bibendum. Nunc quis diam eget tortor hendrerit convallis quis in velit. Vestibulum ac lectus ligula, eget sodales risus. Etiam placerat lectus vitae ipsum commodo a ullamcorper urna malesuada. Etiam laoreet ultricies mattis. Fusce consectetur mollis eros id convallis. Vivamus sagittis purus eget libero ornare convallis. In non elit vel lacus hendrerit auctor non at tellus. In hac habitasse platea dictumst. Etiam porta, sem quis lacinia consectetur, odio dolor hendrerit nisi, sollicitudin sagittis quam mi in tellus. Donec consectetur ante sit amet elit laoreet semper. Mauris eget ligula id sapien pharetra euismod et id risus. Mauris auctor semper massa nec tempus. Curabitur gravida sodales elementum. Sed sed dolor eget turpis imperdiet viverra. Integer a elit nisl."/></TextBlock>
</ScrollViewer>
</Grid>
<AdDuplex:AdControl Margin="0,1,0,0" Grid.Row="2" AppId="123"/>
</Grid>
</phone:PhoneApplicationPage>

 

P.S.: Testing Your Own Ad

You can test how your own AdDuplex Ad Exchange ad looks in an app by setting IsTest property of the control to true:

image

AdDuplex is ON!

imageI’m happy to report that the first batch of invites has been sent and that means that AdDuplex Ad Exchange Network for Windows Phone 7 has officially launched!

While the first participants implement AdDuplex into their apps we will continue to improve the service and invite more developers to join in. Don’t hesitate to request an invite if you have some upcoming new or updated Silverlight WP7 apps and don’t mind some free promotion.

First app running AdDuplex ads hits the Marketplace

screenshot3Those who requested AdDuplex invites should expect them in the mail tomorrow (January 17th), but it wouldn’t be fair to ask you to put the ad control into your great applications without making sure that it’s safe to be submitted to the Windows Phone Marketplace for certification. That’s why I’ve added it to my own Tic-Tac-Toe 3D Free (link opens Zune) game.

I’m happy to report that the app has passed the certification process and has been published to the Marketplace (click on the screenshot on the right to see a full-size image). Check it out to see the ad control in action. And, by the way, it’s a fun free little game too!

We are ready to send out the first batch of invitations tomorrow, so you still have a chance to be one of the first to join in and enjoy the benefits of increased exchange ratio, influencing the direction of the project and more.

Request your invitation today!

Introducing AdDuplex – Ad Exchange Network for Windows Phone 7

I’m happy to announce a new project called AdDuplex. It’s an ad exchange network targeted specifically at Windows Phone 7 apps and games.

Advertise before You Monetize!

banner_squareLots of developers create mobile apps hoping to get rich in the hot market. While top apps can support their developers, getting to that top is tricky. And it’s going to be even trickier as the Marketplace is filled with more and more apps.

Current Microsoft’s Marketplace implementation doesn’t help with getting attention to your great new app. Apps are sorted either by download count or by release date. With more than a hundred new apps released every day it’s easy to fly under the radar. And there’s little hope for independent developers to get into the Featured section.

You absolutely need to promote your app on your own before it gets traction and buzz starts flowing around automatically.

This is where AdDuplex comes in.

AdDuplex Concept

AdDuplex was created to help developers get much needed attention to their awesome apps without spending money on it. Help other developers promote their apps and they’ll promote yours.

You just add a simple control to your app, setup an ad copy for your app and ads start flowing. The exchange ratio will be in the 0.8 – 0.9 range and we will use the remainder to sell ads to support the service.

We will concentrate our attention on 4 line text ads in a 480×80 block in the beginning.

Once your app gets enough exposure you can mix AdDuplex ads with ads from traditional ad networks to generate revenue. Or maybe we will add a model that let’s you switch from exchange to a partial or full revenue generation model.

Great, Sign Me Up!

We plan to launch a closed (invite-only) beta in a week (hopefully on or before January 17th, 2011). At that time a control for Silverlight based Windows Phone applications will be available with support for XNA to follow later. But you can request your invite right now.

So, join now and help us launch a great network to benefit independent WP7 developers! We will thank you with a better exchange ratio for early adopters which is guaranteed to be better than regular at all times.

Thank you for your consideration and spreading the word!

In case you have any questions, please, do not hesitate to contact me at info@adduplex.com or in the comments below. To be notified about the project news, subscribe to our RSS feed and follow @AdDuplex on Twitter.