Saturday, May 31, 2014

Guidelines for the first release of Mobile App

    
   There are many articles which explains whether we need to have mobile optimised site or app, but not much what you need to do when you decide to create an app. I am writing this article to understand the essential features we need to incorporate in the first release or first version of the mobile app. 
    I am not going to discuss much on business features like shopping cart or how to leverage device capabilities like GPS and have feature like Store locator etc., as I presume you would have analyzed those.  These are more in terms of app’s scalability and good user experiences to gain end-user’s trust.


i) Forceful and Optional App upgrade capability: [Assuming background refresh is off,as there is a general mindset among users that it drains battery]
Upgrade and crash are inevitable with every app. We start with basic functionalities on the first version, and also we never try to bundle too many features on the first release. Once it starts gaining attention we try to bundle more features and have subsequent app releases. We definitely need to build a capability to ensure, existing consumers never miss the critical future updates.  
             It might be an optional upgrade or forceful upgrade capability ,we definitely need to incorporate it as part of the app. One possible implementation is having a service which would check every time when the app is launched to see if user is having the required version else display an modal alert. You can also have a cancel option on this alert to make this upgrade optional or just an upgrade option to make it a mandate. 

ii) Identify Opportunities to expose any feature API:
While designing the app identify if there are any features which can be bundled separately and can be used by other apps. For eg., Assume you have a photo print store and building an app for that, you can expose your app’s checkout process as an API for other photo apps  to send print order to your stores. This would be a good revenue building opportunity.

iii) Plan your permissions:
As a first version app publisher, we must try all possible ways to gain user’s trust. It is not advisable to ask for permissions until we require it. I have seen lot of apps asking permission to send push notifications but never send one. In case if you decide to use device features and require permission, never ask for permissions just using the OS alerts alone, but before displaying the OS alerts, display a custom alert apprising the user your intent. 
Provide excess caution with Android app as user will be listed with all access details when user is trying to installing the app and they may decide not to install.

iv) Deep Link Capabilities:
Provide deep link capabilities for all the features inside the app, which would help you for marketing and support purpose. 

v) Registration and Login:
This is quite important, lot of people try apps just by word of mouth. On first launch, when they are immediately shown a registration screen, they might be wary to proceed. This includes open id login approaches as well. The better approach would be like what “Polar” app does. You define the UX in such a way to allow the user start using the app and make them realize why registration is helpful in due course of time.
Also, have an ability inside the app to migrate and attach the essential user data when he decides to register. 
In case, if app definitely requires a registration, apprise him the benefits of registration and then request for that. 

vi) Temporarily shutting down a feature:
You might have more than one important feature inside the app and chances are,due to any reason a feature might not work properly. We must provide facility for our user to use other features while preventing access  to the corrupted feature alone by gracefully displaying an alert. This can also be used when we decide to temporarily prevent the users from using a particular feature.  
For this, we can also build a service as explained in forceful and optional app upgrade capability.

vii) Analytics and Crash log:
This is quite important to understand which feature is more popular and study user’s behavior. In addition to analytics, we need to provide ability to send crash logs from app, which would help us to analyze which feature has buggy implementation and try to fix in our next release. For analytics we have Omniture,Floodlight or Google tags. For crash logs we have Hockey,APIGEE kind of tools.
Android apps has ability for SEO tagging which can be leveraged as well. 

viii) Security:
Ensure that you don’t have any access key stored inside the app and fetch it through service when required. At the minimum, just open the ipa file in editor and check if there are any credentials stored without encryption and try to fix.

ix) Engagement Statergy:
I have noticed lot of apps when they release their first version, they are very successful, but in due course of time without proper engagement statergy they lose customer’s engagement with app and thereby revenue. I will write an another blog on these techniques but definitely plan one before releasing the app.

x) Multilingual support:
Though for the first version you might release it in only one language but design it in such a way it supports multilingual in later releases.

xi) Terms and condition, privacy policy pages:
These pages are tend to change and never implement these pages as part of native implementation,as later if we need to change we would require an app release and it is recommended to have these pages in HTML,so update becomes easier.

xii) User Feedback:
Always have ways for the user to give feedback. Identify the touch points and provide option whenever possible. It can be like when user completes a shopping. Never take the user directly to app store for rating, provide an interface where he can reach out to you for comments/feedback and then if it is positive (like he gives 4 star rating on your UI), request them to give ratings in app store. 
Bare minimum have your contact information for the user to reach you, which would build trust.

xiii) Welcome screen and Help:
Though this is essential, never crowd all information about how to use your app in its entirety here. Start with basics,keep apprising them with information as and when needed. This is very essential to get user’s attention, because the user will tend to skip this help screen.
Provide a web link where user can view all these information. So, whenever they need support they can refer to that.

 xiv) Sharing:
People always like to share good things. Provide an ability inside the app for enabling the users to share a link for downloading our app.