SEARCH

We recently launched a cool adaptation of RPS-101 on Facebook.  It's built in Silverlight and it's loads of fun turning up some pretty funny results.  Of course when you get an app out into the wild it's nice to know what's going on with it.

Overview of Silverlight tracking features

Overview of Silverlight tracking features

Our custom tracking tool was integrated into the app with our new feature set.  The new features include graphs, user-agent details, and a custom gameplay stats module.  But we decided to go one-up on those features and build a custom Silverlight suite to track penetration and new installs.

There's some contention about Scott Guthrie's "one in four" so the first number we're after is penetration before they come to our app.  The second number is "what happens next" - when presented with the prompt to install Silverlight are users likely to take action and install it?

Tim Sneath detailed the Silverlight install experience guidelines in his blog.  It outlines the best-practices around the install experience.  It appears from the documentation that it's possible for a seamless installation experience inside of Internet Explorer but most browsers require a restart after the plug-in is installed.

Unfortunately it's a little outdated (Oct 2007) and fails to detect Silverlight correctly in non-IE browsers breaking the code around their seamless experience for everyone else.  The premise is simple, though, prompt the user for a download and then set a timeout to repeatedly check for plug-in availability.  When it comes online replace the <div> contents with the Silverlight object tag.

So we did some research around the install experience and used a simplified check to see if the browser has Silverlight 2.0 available:

function isSilverlightInstalled()
{
   var isSilverlightInstalled = false;

   try {
      try {
         var slControl = new ActiveXObject('AgControl.AgControl');
         isSilverlightInstalled = true;
      }
      catch (e) {
         if ( navigator.plugins["Silverlight Plug-In"] ) {
            isSilverlightInstalled = true;
         }
      }
   }
   catch (e) { }

   return isSilverlightInstalled;
};

This simple function (from the JavaScript files in the experience guidelines) worked for us.  Whenever the client hits the Silverlight page the JavaScript simply posts back the availability of the Silverlight client.  Because our Dormouse platform seamlessly handles stateful users we're able to keep track of install statistics and adoption across sessions.
$(document).ready(function () {
   if ( !isSilverlightInstalled() ) {
      postBackSilverlight(0);
   } else {
      postBackSilverlight(1);
   }
});

function postBackSilverlight(installed_val) {
   var restURL = getRootIFrame() + "/postBackSilverlight";

   $.get(
           restURL,
         {
            installed: installed_val,
            nt: theTime.getTime()
         },
         function(data){}
      );
}

The stateful user on the Dormouse platform keeps track of Silverlight installation status.  If it's the first time Silverlight status has even been posted back then we post a message to our Zabra REST service indicating pre-install conditions and save the information on the User objects.  When these are summed up we get "Pre-App Silverlight Penetration" statistics.

If a user has doesn't have Silverlight they'll take one of two actions - install Silverlight and come back or bounce from the app and not return.  Whenever a user comes back to the app with the plug-in newly installed we post a new message to Zabra "SilverlightInstalledAfterApp" which tells us that someone installed Silverlight and came back.  The difference between the total Users who are "Not Installed" and "Installed After App" users will leave us with our bounce number.

This works great on our Zabra system and seamlessly integrates into our Dormouse platform. Want to implement it yourself?  All you need is a way to track user data across a few sessions.  You might store their Silverlight status in a cookie, SharedObject, PHP session, or CMS system.  Here's some pseudocode to keep track of Silverlight installs:

postBackSilverlight(user, silverlightinstalled) {
   if(user.silverlightinstalled has been set) {
      if(user.silverlightinstalled equals false) {
         if(silverlightinstalled equals true) {
            statistics.post("new silverlight install");
         }
      }
   } else {
      if(silverlightinstalled) {
         statistics.post("silverlight installed before app");
      } else {
         statistics.post("silverlight not installed before app");
      }
   }
}

We've passed these into some nice charts that let our clients keep tabs on user adoption both before their app and after hitting the installation user experience.  Hopefully Silverlight will hit a critical mass where adoption is no longer a concern.  For now we're all keeping our eyes on the future of a really promising technology.

Share and Enjoy:
  • Digg
  • del.icio.us
  • StumbleUpon
  • Technorati

Leave a Reply

Name (required)

Mail (will not be published ) (required)

Website

 

  • Viagra online
  • Order cheap cialis
  • Buy viagra no prescription
  • Cialis online
  • Buy generic cialis
  • Order propecia no prescription
  • Cheap propecia online
  • Propecia online pharmacy
  • Order levitra online
  • Cheap price cialis
  • Online pharmacy levitra
  • Buy viagra online
  • Buy discount levitra
  • Cheap cialis online
  • Propecia hair loss