Using AdDuplex as a Fallback for Microsoft pubCenter

Quite a few of Windows Phone developers would like to make money from their apps and games. The best way to do that for US based developers (and hopefully Europeans in the future) at this moment is Microsoft’s own pubCenter. In addition to accepting US developers only, it also serves ads to US customers exclusively. Fortunately it let’s you know when it can’t serve an ad via events so you can react accordingly in your app. And there’s no better way to utilize that unused inventory than using AdDuplex.

Jeff Weber, the creator of one of the best (if not THE best) Windows Phone games – Krashlander, was kind enough to share his fallback code with us. What it does is displays pubCenter ad control when it can display and ad, but when it can’t it falls back to AdDuplex ad control.

The sample code

Both controls are just placed in a simple StackPanel and AdDuplex is set to Collapsed by default.

<StackPanel>    
<ads:AdControl x:Name="MSAdControl"
Height="80" Width="480"
ApplicationId="YOUR_APPLICATION_ID"
AdUnitId="YOUR_AD_UNITID"
/>
<AdDuplex:AdControl x:Name="AdDuplexAdControl"
Height="80" Width="480"
Visibility="Collapsed"
AppId="YOUR_ADDUPLEX_APPID"
/>
</StackPanel>

In code-behind event handlers are attached to pubCenter control events and depending on the result of the pubCenter request either AdDuplex or pubCenter control is collapsed and the other one is displayed.

public MyClass()
{
InitializeComponent();
MSAdControl.AdControlError += new EventHandler<ErrorEventArgs>(MSAdControl_AdControlError);
MSAdControl.NewAd += new EventHandler(MSAdControl_NewAd);
}

void MSAdControl_NewAd(object sender, EventArgs e)
{
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
{
AdDuplexAdControl.Visibility = Visibility.Collapsed;
MSAdControl.Visibility = Visibility.Visible;
});
}

void MSAdControl_AdControlError(object sender, Microsoft.Advertising.Mobile.UI.ErrorEventArgs e)
{
System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
{
MSAdControl.Visibility = Visibility.Collapsed;
AdDuplexAdControl.Visibility = Visibility.Visible;
});
}

IMPORTANT: in case you decide to implement the layout in a way that pubCenter control overlaps AdDuplex control, don’t be fooled by the fact that pubCenter control visually collapses when there’s no ad to display. It still occupies the space and catches all the taps rendering AdDuplex control unclickable. So the key is to explicitly set Microsoft’s control to Collapsed.

Thanks to Jeff for this simple but proven code snippet and check out his awesome game if you haven’t already.

Bug fix release: Silverlight control version 1.1.2

A bug in the AdDuplex Silverlight control version 1.1.1 has been reported. It manifested itself as an exception thrown when AdDuplex control was used on several pages throughout the app. I’m sorry for the inconvenience and trouble it may have caused you.

This bug should be fixed in the new version which is now available for download through the client area.

Thank you to everyone who reported this bug and please accept my sincere apologies. In case you find any issues with the controls, please, don’t hesitate to email me or leave a comment on this blog.

Silverlight Control v.1.1.1 Released. Upgrade strongly recommended

We have released a new version of our Windows Phone 7 Silverlight AdControl. An internal issue has been identified that resulted in some inconsistencies in serving ads, especially in scenarios where AdDuplex was used as fallback to other ad networks.

The issue is not critical in most cases but important enough for the health of the network. I encourage you to upgrade the control to the newest version as soon as possible. You can download it through Downloads page in Client Area.

Another thing I’d like to ask is that you test your app in regard to AdDuplex and related issues. The process of going through the certification is not instant and it pays to check before submitting than resubmitting later.

Things to Remember

Some AdDuplex related things to remember when testing that came to our attention over the recent weeks:

  • Make sure you set AppId property to your AppId on AdDuplex network and not your marketplace app id. You can find AdDuplex AppId for your app in the Client Area.
  • Make sure AdDuplex ad is clickable. Sometimes the ad is visible but obstructed by some transparent object that “swallows” all the taps. This is especially important to check in fallback scenarios when you place AdDuplex under some other ad. Microsoft’s pubCenter ad control is known for this behavior. When it can’t show an ad it collapses some internal visible parts and is actually translucent but it doesn’t collapse altogether and still catches all taps. You should manually set it’s Visibility to Collapsed.
  • Explicitly set Visibility on the AdDuplex control to Collapsed whenever you don’t want to show it. We make every effort to detect when something covers AdDuplex control but it would be easier for everyone if you just let the control know that it’s not supposed to be visible. Remember that running AdDuplex control in some invisible form is a violation of our terms.

In case you have any questions or encounter some issues, please, don’t hesitate to contact us at info@adduplex.com

Thank you for making AdDuplex a success and lets all benefit from it!

XNA Library is Now Available

xna_logoI’m happy to announce that you can start implementing AdDuplex ads into your great XNA games right now!

We’ve just released a public beta of the XNA library for AdDuplex and it’s available for immediate download in the client area. The package includes the library DLL, basic implementation instructions and a sample application for your reference.

Over the next couple of days I will publish a detailed tutorial describing implementation in detail.

XNA developers! Welcome to AdDuplex.

Migration Completed

I’m happy to report that server migration went smoothly and everything should be operational by now in full capacity. In case you notice any irregularities and/or bugs in the new setup, please, don’t hesitate to let us know at info@adduplex.com.

One thing to notice is that the new servers are operating on UTC timezone settings and old ones were on CST. So, even though there was no interruption in service, you will probably notice a drop in your stats for March 2 since the “server day” was 6 hours shorter than the real one.

Planned Migration, Client Area Downtime

Thanks to all the app authors participating in AdDuplex network for making it a success and driving traffic up! In order to provide best possible service going forward we decided to move our servers to Windows Azure.

Tomorrow, March 2nd, 2011, we will be performing a planned migration to a new hosting environment. The core ad serving engine should stay operational throughout the process, but we will close the client area on the old server to maintain consistency. We plan to start the process around 7:00 AM GMT. Please, make any planned changes to your ads before that time. You will be able to access Client Area on a new server once DNS records are updated (usually within a day).

Thank you for your cooperation!

Incoming Clicks Statistics

Up until now our app statistics page reported on the clicks originating from your app. That was probably not the most interesting metric for you. Way more interesting is how many clicks did you get on your ads displayed in other apps. Now you can learn just that.

image

Keep in mind that we track Marketplace clicks in unobtrusive way. Meaning that the click is only tracked when user returns to the app where he/she clicked on the ad. If the user never returns to the app, the click is not registered in the system. So, the actual number of clicks (both incoming and outgoing) is most definitely higher than reported.

Announcing AdDuplex XNA SDK

244155284

I’m happy to announce that we have completed initial development and internal testing of AdDuplex library for XNA. We would like to test it with a couple of XNA apps before making it available for the general public and we need your help.

We Need Your Help

We would like to make a test run of the SDK with 2-3 apps and we are looking for developers willing to participate in this closed beta. We are looking for XNA games that are already in the marketplace and can/wish to push out an update with AdDuplex SDK within a week or so.

What We Offer in Return?

If you participate in the beta we will give you a permanent exchange ratio of 0.9 (normally – 0.8) or 10,000 free ad impressions on the network. It’s up to you to choose what you prefer.

How to Participate?

In case you want to participate please send an email to info@adduplex.com with the name of your game/app and approximate timeframe for the next update (with AdDuplex code).

Thank you!

Use Your WP7 App Popularity to Promote Your Other Apps

Our terms and conditions contained a clause that prohibited apps participating in Ad Exchange to use their credits to promote anything else than themselves. After some consideration we decided that this clause is too strict for no particular reason. We’ve rewritten that clause and now it looks like this:

4.1. Apps participating in the Ad Exchange Program can only have ads advertising official Windows Phone 7 Marketplace apps. Advertising of other apps or services is prohibited.

This means that now you can leverage popularity of one or several of your apps to promote your newer or less popular apps. A great way to boost exposure of that great app that went under the radar for some reason.

Can’t Commit 100% to AdDuplex? You Don’t Have To!

There’s a lot of developer interest in AdDuplex. Thank you! That said one repeating theme I hear is that it’s hard for developers to decide not to earn any money from their apps at start. I thought it goes without saying that you are not required to be exclusive neither to AdDuplex, nor, as far as I know (but you should check the terms), to any of the other, traditional ad networks.

So, to set the record straight I’ve decided to post several implementation samples for scenarios mixing AdDuplex with other ad networks.

Scenario 1. Different pages – different ad networks

Not much to add here. Just implement some ad network on some pages of your app and AdDuplex on other pages.

Scenario 2. Distribute impressions by some ratio

You can just dedicate some percentage of your app usage to showing ads from some ad network and the rest to AdDuplex. A 50:50 split could be implemented like this:

var rnd = new Random();
if (rnd.NextDouble() > 0.5)
{
    AdNetworkAd.Visibility = Visibility.Visible;
    AdDuplexAd.Visibility = Visibility.Collapsed;
}
else
{
    AdNetworkAd.Visibility = Visibility.Collapsed;
    AdDuplexAd.Visibility = Visibility.Visible;
}

 

Scenario 3. Show AdDuplex in regions not supported by the other ad network

The best known example is Microsoft’s pubCenter. It shows ads to US customers only. So you can safely show AdDuplex to non-US users without loosing a single cent of your ad revenue. A code like this would do it:

if (CultureInfo.CurrentCulture.Name == "en-US")
{
    AdNetworkAd.Visibility = Visibility.Visible;
    AdDuplexAd.Visibility = Visibility.Collapsed;
}
else
{
    AdNetworkAd.Visibility = Visibility.Collapsed;
    AdDuplexAd.Visibility = Visibility.Visible;
}

 

These are just some of the most obvious scenarios. You can implement more advanced scenarios yourself. One that would make a lot of sense is if your commercial ad network collapses the ad space when it can’t serve the ad for it. You can hook up to this event and display AdDuplex when the network fails.

As you can see there’s no reason not to maximize ROI of ad space in your apps. It’s easy and straightforward to implement, and AdDuplex ad control is on 27kb (uncompressed) so there’s basically no tax for doing so.

Makes sense? Join AdDuplex now!