FunctionSource, Your Source for Developer News

Smart App Banners: How to use them, and their limitations

Posted by Dion Almaer 8 months ago on ios mobile

The “Smart App Banner” feature in iOS 6 promises to let you pimp your app without the ugly splash screens that drive people so nuts (especially for freaking content sites…. looking at you The Verge, and ABC):

Ugh, I just want to read your content! Anyway, back to the smart app banners. I was very curious to play with them and see what kind of controls I could put in place.

It all comes down to:

<meta name="apple-itunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL">

The good news:

  • Since iOS is in charge of what to show, the area “trusted” (how long until people fake it out?)
  • If the application is unavailable (device / OS doesn’t support it, or in the wrong region), it won’t be shown
  • The system knows if the app is installed (wouldn’t want to tell the web site… privacy an all) so it can flip the action from install to open
  • You can pass a “URL” as an argument (app-argument), meaning you can give the site deep link ability. In our case, we can pass walmart://product?id=X on a product details page, and when if you open the app it can display the product.
  • Affiliate info can be passed in (affiliate-data).
  • I wanted to see if I could dynamically add the meta tag, and that works fine.

The bad news:

  • I would like to be able to say “If the user has the app installed already, don’t bother showing the ‘OPEN’ for this page please”. E.g. I am just trying to use this to push downloads.
  • I would like to be able to say “If the user doesn’t have the app installed, don’t bother showing the ‘INSTALL’ for this page please”. E.g. I am just trying to give you a nice deep link here.
  • I would like to be able to tweak the messaging and call to action. E.g. “To see rich details of this product, open in the native app”
  • I would like to declare “I don’t want to bug the users, so only show the message once a month”
  • I would like to declare “Place this above the view port, so it isn’t in the users face, but if the user scrolls up they will see it”
  • As a developer of dynamic apps where the client does the rendering, you are severely limited. Dynamically adding the meta tag works (as stated above), but it doesn’t seem to work when I: a) change the meta tag, b) remove the meta tag. If you imagine pushState’ing around and wanting to turn off the banners, no cigar.

This feature has a ton of potential. If you want to throw a meta tag on your home page, or on the incoming page (e.g. if referrer != yourself), then you are golden. If you want to do much more… no cigar.