Best practices: 6 AIR features that may annoy your users

I get to see and play with a lot of really cool AIR applications (even when they’re still being developed). Every now and then I come across an app that totally ignores any best practices or usability rules. AIR provides developers with a lot of features that could potentially annoy users if not used wisely. I thought it was a good idea to write this article. I’m not saying you shouldn’t use these features, I just want you to think about them before you add them to your application.

  1. Launching your application on login

    NativeApplication.nativeApplication.startAtLogin = true;

    That’s all it takes to have your application launch whenever your user logs in to his account on his computer. However, if this is something that you set automatically without telling the user about it, you may find your application to be uninstalled faster than it was installed. There really is no reason why you should set this automatically. You can also set this on runtime. So why not ask the user if he wants to launch your application on login when he first launches the app? And why not provide a small preferences panel that allows the user to easily change this setting?

  2. Always in front

    NativeWindow.alwaysInFront = true;

    Again, very easy to do and in some cases it totally makes sense to have an application stay on top but it should be the user’s decision and not yours.

  3. Automatically setting the filetype

    NativeApplication.nativeApplication.setAsDefaultApplication("mp3");

    Imagine you’re building an application that can play MP3 files. Are you sure you want to automatically open your application whenever the user clicks on an MP3 file? This is also one of those things you may want to check first and we provide all the methods to do so.
    When you first launch your application, you can first check if your application is already set as the default for this filetype.

    NativeApplication.nativeApplication.isSetAsDefaultApplication("mp3");

    If it’s not, check which application is the default for the filetype you want to use.

    NativeApplication.nativeApplication.getDefaultApplication("mp3");

    This returns the path to the application registered as the default app for this filetype. You can then ask the user something like: “Hey I see you play MP3-files with QuickTime but I can also play these files. Can I set myself as the default application?”.

    Since you already added a prefs panel for setting the launch on login and always in front preferences, you can also add this one. To remove your application as the default for a specific filetype, just call:

    NativeApplication.nativeApplication.removeAsDefaultApplication("mp3");
  4. Full screen applications

    I think there are only a couple of valid use cases for full screen applications (not the fullscreen displaystate but just taking over the entire screen with the exception of the menu bar). The obvious ones are video and kiosk applications. If your application fits in this category or you think taking over the entire screen is totally acceptable for your app, please do make sure that you add close and minimize buttons. If quitting your application is the only way to quickly check an email, the user may never return to your app.

  5. Custom chrome

    This is actually related to #4. If you are making an application that has custom chrome, you should always add the standard close, minimize and maximize buttons. Everyone is used to having these in an application window so make sure you don’t forget to add them. These are the methods to call whenever one of these buttons gets clicked.

    NativeWindow.close();
    NativeWindow.minimize();
    NativeWindow.maximize();

    You should also be aware that because of the way custom chrome is rendered on a user’s machine, an application with custom chrome can take a performance hit.

  6. Self signed applications

    What is “Joe The Plumber” going to do when he sees 2 red icons in the installation screen of the app he’s trying to install? As a rule, no AIR application should be publicly launched without being signed with a code signing certificate. We are aware of the fact that individuals can’t get these certificates anywhere right now and this is something that we are working on. Individuals can get a code signing certificate from Chosen Security. However, for companies, it’s really easy to get a cert.

I hope these “rules” will help you build better applications. I’m sure some of you can think of other rules developers should think about, so feel free to add them to the comments if you know of any.

Tags: , , , , , , , , , , , , , , ,

28 Responses to “Best practices: 6 AIR features that may annoy your users”

  1. Steven 17. Dec, 2008 at 12:09 pm #

    Nice post and you’re sooo right. But shouldn’t it be called “worst practises”?

  2. Serge Jespers 17. Dec, 2008 at 12:12 pm #

    Well… No… I want to show what the best practices would be (like adding a preferences panel or asking the user first if this is something he wants to do). I’m not saying you shouldn’t use them, you should just think about them

  3. eme 17. Dec, 2008 at 12:44 pm #

    Hi again, good post! I had no idea about nº3!

    As for custom chrome, any chance on getting rid of the grey frame in windows?
    http://www.enproceso.es/tutoriales/air/grey_frame/grey_frame_2.swf

    I guess setting the window size as big as the current screen wouldn’t be a ‘performance acceptable’ solution, because drag & drop becomes really croppy on big screens.

    thanks!

  4. Jonas De Smet 17. Dec, 2008 at 2:35 pm #

    I hope there will be an other way to sign your application. Buying a cert for a free application for a period of 3 years sounds pretty stupid and “not done” for developers…
    How about the second “error”, red label? Seems like nobody should ever go beyond this warning…

  5. James 17. Dec, 2008 at 2:53 pm #

    I’m sure 1-4 will become less prone to abuse just as soon as someone comes up with an ‘Application Settings’ framework, much like the auto-updater framework. Now, if only I (or anyone else) could get around to making one of those…

  6. Duane's WOrld 17. Dec, 2008 at 4:36 pm #

    #1 – autostart? Hmmm you mean like Adobe Media Player? I agree – very annoying.

    For number 5 (Custom Chrome) too many beginners also forget the StartMove()

    private function init():void
    {
    // Add an event listener to feed to the startMove function
    mainPanel.addEventListener(MouseEvent.MOUSE_DOWN, startMove )
    }

    private function startMove(event:MouseEvent):void
    {
    stage.nativeWindow.startMove();
    }

    Without this, the custom chrome apps cannot be dragged around the screen. Add this as #7 most annoying feature.

    I am just glad nobody build an AS3 class for blinking text.

    ;-)

  7. Serge Jespers 17. Dec, 2008 at 4:42 pm #

    Well… The Adobe Media Player has a preferences panel where you can easily change this behavior. I also think, it’s not the default setting…

    Good point on the StartMove thing!

  8. ariel sommeria 17. Dec, 2008 at 7:04 pm #

    All the points you stated are true. What is interesting is that Adobe itself doesn’t push for this, for example by adding examples and docs in their SDK. Maybe this will come later?

  9. Rob 17. Dec, 2008 at 10:03 pm #

    One thing I think custom chrome settings miss is the ability to add a system default shadow. I know this would be hard to add, but it is hard to get something that works on all platforms, or create one for every OS out there.

    The grey boarder problem on window shows up as a box on OSX when you use expose and mouse over the window. Issue with the runtime not knowing the window boundaries so it refers to it as a square.

  10. Harry Garland 17. Dec, 2008 at 10:27 pm #

    I totally agree with @Duane about point #1 and the Adobe Media Player.

    To reinforce the point, I have REPEATEDLY uninstalled AMP for this reason exactly (and because of all the irrelevant “pop culture” garbage it tries to shove down my throat). Every time I install a CS4 product, AMP gets installed, and every time it does, I uninstall it.

  11. fb 18. Dec, 2008 at 6:32 pm #

    Actually these are not AIR features that annoy users, these are common features that annoy users.

  12. Serge Jespers 18. Dec, 2008 at 6:58 pm #

    @fb – You are absolutely right… but this blog is about Flash, Flex and AIR ;-)

  13. Rich Apps Consulting 19. Dec, 2008 at 7:02 pm #

    thanks serge for such a beautiful post.

  14. Jasmeet Singh 05. Jan, 2009 at 10:49 am #

    hi Very basic but good points to be remembered.

  15. Jeroen Beckers 13. Jan, 2009 at 9:59 pm #

    Paying $500 to get rid of the two red installation signs isn’t really an option for starting developers, freelancers etc like myself… Can you really expect developers to buy such an expensive certificate when they have created a free-to-use AIR application ?

  16. Serge Jespers 13. Jan, 2009 at 11:00 pm #

    @Jeroen; It’s just $199 for a year with Chosen Security and in that year, you can sign as many apps as needed.

  17. Jeroen Beckers 17. Jan, 2009 at 9:02 pm #

    I expect my application to stay alive a bit longer than 1 year.

    But still: I can’t release a free AIR application without paying $200-$500 or have the users get big-red crosses during installation. Luckily my target audience are Flash/Flex developers so I’m hoping they will understand what the crosses are about.

    And thanks for the 6 tips: I’m currently creating the ’stay on top’ OPTION :)

  18. Christian Pfeil 29. Jan, 2009 at 10:21 am #

    Hi,

    what about this?

    var type:String = NotificationType.CRITICAL;
    stage.nativeWindow.notifyUser(type);

    I think it’s important too.

    Cheers
    Christian

Trackbacks/Pingbacks

  1. Arul Kumaran - 17. Dec, 2008

    good to know :) RT @sjespers: Blogged: 6 AIR features that may annoy your users: http://bit.ly/XzHq

  2. <mx:AnandVardhan/> » Blog Archive » Links I am reading today - 17. Dec, 2008

    [...] http://www.webkitchen.be/2008/12/17/best-practices-6-air-features-that-may-annoy-your-users/ [...]

  3. Wait till I come! » Blog Archive » TTMMHTM: Accessible Currency converter - 17. Dec, 2008

    [...] Jespers explaining What not to do in Air Applications – don’t break age-old usability [...]

  4. AIR + FLex » [AIR] 6 Dinge, die einen Benutzer verärgern! - 17. Dec, 2008

    [...] interessant finde ich den Artikel von Serge Jespers, der über 6 “Problemzonen” einer AIR-Applikation spricht. Funktionen von Anwendungen, [...]

  5. Some points to consider when building AIR apps | Psyked - 19. Dec, 2008

    [...] http://www.webkitchen.be/2008/12/17/best-practices-6-air-features-that-may-annoy-your-users/ December 19, 2008 | In General chit-chat | No Comments [...]

  6. localToGlobal » Blog Archive » news review -> 51th week of 2008 - 22. Dec, 2008

    [...] > Best practices: 6 AIR features that may annoy your users | Serge Jespers [...]

  7. Andrew Shorten » Determining when you should (and shouldn’t) use AIR - 12. Jan, 2009

    [...] if used inappropriately, may actually annoy your users or make them less productive – check out Serge’s post for advice on how to make sure that doesn’t [...]

  8. Introducing ImageSizer 0.4.2 | Psyked - 20. Jan, 2009

    [...] mentioned by Serge Jespers in his post: “6 AIR features that may annoy your users” [link].  Back with version 0.3.10 I introduced some Pixel Bender filters to the application.  Version [...]

  9. Radhakrishna Bhat - 09. Mar, 2009

    http://tinyurl.com/8kjrac . Best practices. Developing AIR apps

  10. Kannopy, Inc. - 24. May, 2009

    Best practices: 6 AIR features that may annoy your users: http://is.gd/CZCh

Leave a Reply