3 Ways to Improve User Engagement on Your Mobile Solution

3 Ways to Improve User Engagement on Your Mobile Solution

After months of development, your app finally makes it onto the app store. However, a few weeks later, you take a look at the app’s analytics to find an unexpectedly high number of total uninstalls.

Why are users deleting your app and what can you do to improve user engagement?

1. Improve User Onboarding
A crucial, often overlooked process in designing an app is the user onboarding process. User onboarding is essentially the method in which the app introduces itself to a new user. Within the first few minutes of use, your app should make a solid first impression.

– Start the app off with a friendly tour to get the user acquainted with the main features
– Highlight features one at a time – do not overwhelm your user with introductions to all of the features at once
– Place mission critical information upfront and concisely
– Place user values upfront – You want the user to envision how they will be using your app in their day to day life as soon as possible.

Below are a few examples on user onboarding on Winn Dixie. Our UX and UI designers put great care into the onboarding strategy– putting the designs through various critiques and presentations with the client. User Onboarding testing was implemented as early as wireframes.

Winn Dixie app Iphone iOS

Winn Dixie grocery app

Winn Dixie App Grocery

2. Reduce Clicks
Ideally, a user wants to use the least amount of clicks to get to the information they want. Information or features buried into tabs and menus may infuriate users trying to accomplish a simple task. Sometimes the cost of effort may not be worth the payoff for a user.

To resolve these pains, consider bringing in various testers as early as the design phase. Sometimes paper prototypes can be very telling of a user’s engagement of an app based off something as simple as an app’s layout. Reduce the amount of effort a user has to make by designing the method of navigation with well-defined paths.

3. Debug your app

On first glance through reviews of a low rated app, the number one issue reported by users is: the app is buggy and keeps crashing. The bane to any user on any software is one that they can not use properly. Buggy apps can be caused by a multitude of occurrences. Here are the top three reasons why your app may be buggy and bugging your customers away:
– Android or iOS hardware and software have updated causing your app to be out of date
– Uncaught memory leaks
– Weak user testing

Late last year to in anticipation for the release of iOS 10, the Shockoe development team thoroughly prepared by catching up on documentation and thumbing through depreciated features. Apps like 21st Century were given an update to ensure that the app would not be out of date. Changes included improvements to security and touch ups on depreciated UI features.

Test the app thoroughly to find as many bugs as possible and prepare another cycle of development! At the end of development, put the app through another round of testing to ensure that your app is functioning as ideally as possible.

Positive user engagement is essential to maintaining users. While the suggested improvements drive to enhance user experience on your app, be prepared to take note and study of how these methods impact user interaction. Taking a closer look into what propels users to continue to use your app or what you find users interacting the most within your app will greatly help you analyze and improve positive points in your mobile solution.

Interested in what it would take to kick off your project?

Our experience and core services include strategy & transformation, user experience & design, mobile application development, and API management.

Appcelerator Titanium iOS Debugging with XCode

Appcelerator Titanium iOS Debugging with XCode

Earlier this week, I was debugging and I was reminded of the sheer power of the XCode developer tools, even in the context of a not-quite-native application like a titanium application.

The Problem

Andrew was working on an application that will load in a large number of images and PDFs from a remote server and display them to the user, in-app. However, when we got to the point that we would be displaying a certain one of our images, we saw this in the Titanium console:

Sorry, what? It seems like something odd is happening at a native level, and Titanium is getting too confused to return a sensible error message. Well, guess it’s time to open a support ticket with Appcelerator and wait for them to figure out what the issue could be, right?

Wrong. One of my favorite things about Appcelerator Titanium is its open-source nature. What we can do from here, is open up the native project generated by Titanium and debug it with the normal native debugging tools. When you build a Titanium application for iOS, a (pretty much) normal XCode project is generated from your project, compiled, and run on whatever test device you have selected. In situations like this, we can take that project and manually re-build it in XCode for debugging purposes.

Opening your project in XCode

To open your project in XCode, first run

in your project’s directory. This will ensure you have a native project generated for your Titanium project. From here, all you need to do is open XCode, and open up the XCode project in the build/iphone folder.

Path to a Titanium project's compiled XCode Project

Setting Native Breakpoints

Now that we’ve got the project in XCode, we need to set up a native breakpoint so that we can see what the issue is with the Objective-C code that Titanium is executing on our behalf. Fortunately, the message that Titanium printed out gave us a selector name:

. Let’s go ahead and set up a symbolic breakpoint for that selector:

Add a breakpoint in XCode by clicking the second icon from the right in the side bar, and then clicking the plus in the bottom right

Add the symbol from the error as the symbol name

Enter the XCode debugger

Now that we’ve got our breakpoints set up, we can run the project in XCode, and execution will stop when our breakpoint is hit in the Titanium SDK code.

The debugger will automatically pause execution when you hit a breakpoint.

Let’s go ahead and step over a few commands and see if we can figure out exactly what’s going wrong.

Step Over

Huh, it looks like we’re having some issue turning our Titanium file into a UIImage that we can apply to the native UIImageView. Let’s use the variable inspector to figure out exactly why we’re failing to convert this into an iOS image.

XCode variable inspection

Well, one look at the MIME type is enough to see exactly what’s wrong. Our file isn’t an image! Even though this didn’t tell us exactly where the issue was, it was enough to direct our debugging (we eventually figured out that we were accidentally saving a PDF file as an image – oops!). Issues like this are why I’m very quick to reach for XCode when I see a native iOS issue – it makes it much easier to figure out what parts of your code might be incorrect when you can easily trace through Appcelerator’s code!

Creating a Push Notification Server with Node.js

Creating a Push Notification Server with Node.js

At Shockoe we’re used to integrating our clients’ complicated backend systems into our apps, and this often includes push notifications. However, to get that initial proof that our app is playing nicely with GCM and APNS we’ll sometimes rig up a sandbox server of our own. Since we’re used to JavaScript, Node is an obvious go-to. Here are the steps for rigging up a simple push notification server in Node.js.

A push notification server consists of two parts: storing deviceIds and sending push notifications. To achieve this we’ll create two endpoints: register and send. Register will utilize the mongodb node module mongoose and Send will leverage two platform-specific node modules: apns and node-gcm. We’ll also be using restify to set up our endpoints.


For a basic implementation we only need two pieces of information: the deviceId and platform (Android or iOS). Technically–in some mongoose schema code golf scenario–we just need the deviceId, and could make both calls with one always failing.

So our mongoose schema, with the proper requirements, would look something like this:

Mongoose is generally a lot more powerful than this implementation, with validations and enumerations that allow for easy error checking, but for the purposes of this demo we’ll use a basic schema. After making sure mongodb is installed and running on your machine, our restify endpoint would look something like this:

Ideally we would perform a find on DeviceSchema to make sure we’re not adding duplicate devices.


For Send we’ll implement a basic endpoint that will send a push notification to every device in the database. We can use a simple GET, grab the devices from mongo, and call functions to send the push, based on whether the target is an iOS or an Android device. The Android push module can take an array of deviceId’s instead of one at a time, so we’ll push those ids onto an array and call the sendAndroid function on all of them.

Ideally we would only send the 200 response once we were sure that every push had been sent successfully, but for now it will indicate that the send functions were called.

Our sendIos function will leverage the apns module, which takes an options object. Make sure to include your push key and certificate .pem files at the root of your project:

For android we’ll use node-gcm. Make sure you have your api key:

After that it’s just a simple matter of running your project and you’re ready to hit these endpoints and test push notifications on your app!


Why iOS7 is a Game-Changer for the Enterprise

Why iOS7 is a Game-Changer for the Enterprise

The recent launch of Apple’s new iOS7 has many talking about how the new version of the operating system was the final death knell of Apple’s skeuomorphic roots, but beyond the style and sleekness of the upgrade, the enterprise should see the feature dense iOS7 as a major force in driving enterprises to mobile.

Security has and will continue to remain a major concern for the enterprise, but as Q2ebanking.com’s CSO Jay McLaughlin recently stated, the iPhone is by far the most secure device to try and integrate into the enterprise — as long as users aren’t jail-breaking the device.

“iOS 7 presents new vulnerabilities in the fact it contains new code, technology and features,” McLaughlin told TechRadar.com. “Once discovered, you’ll see new exploits created – many of which would be used for jailbreaking purposes – which inherently breaks and destroys the strength of Apple’s underlying security model for iOS. […] Historically, Apple has tightened its security within iOS with each subsequent release, adding stronger encryption, Data Execution Prevention, ASLR and the new A7 processor’s ‘Secure Enclave.’ As such, when in a non-jailbroken state, the iPhone is one of the most secure consumer devices.”

Here is eight features of Apple’s iOS7 that will change the business world for the better:

Stronger Security through TouchID & Activation Lock

One of the biggest drawbacks of extending the enterprise to mobile is the multitude of security threats to which mobile devices can expose an enterprise.  TouchID made news when in less than a week a computer club in Germany demonstrated there are ways to bypass the TouchID system.

Even so, ComputerWorld’s Michael deAgonia writes that it is still a groundbreaking advancement for mobile.

“I’ve already decided [TouchID] will be a game-changer. In concert with new Activation Lock features in iOS 7 — GPS tracking can’t be deactivated and access to the iPhone is blocked without entering your iCloud username and password, even after a device wipe! — it’s hard to see this as anything but a major win for security.


The hoops someone would have to jump through to hack into the phone — lifting fingerprints, making a fake print using latex — are complicated, if they even work at all. For me, this doesn’t change its usefulness; it’s just a reminder that no security function is 100% foolproof.”

Weak passwords, disabled security locks and misplaced devices are what keep security-minded companies up at night when thinking about extending mobile in the enterprise.  While not perfect, fingerprint-based authentication in concert with the Activation Lock and device wipe capabilities can allow companies to quickly intervene in a potential security violation before sensitive data is compromised.  Better to wipe a $200 smartphone quickly than expose a business to tens of thousands, or even millions of dollars to a potential data breach while a would-be hacker fiddles with latex fingerprint molds.

Simplicity With Enterprise Single-Sign-On

For the busy folks on the front line delivering packages, checking manifests and entering patient data and all the while jumping between programs to do so, the repetitive authentication for each transaction can become major deterrent in the use of the products, or at the very least the secure use of them.  What if that worker could log into a CRM app and then jump into an order-tracking app without another sign-on?  iOS 7 allows users to take their corporate credentials across apps, even including apps from the App Store. This reduces the need to remember and enter a number of different passwords while also keeping data secure.

Opening Up on Managed Open-In

Would you like an employee accidentally tweeting the Q4 forecast numbers?  Probably not.  Thanks to Managed Open-In, companies can force their employees to open email attachments in specific corporate-managed applications rather than an app of the user’s own choosing.  So, even without a containerization solution to protect corporate data, enterprise information technology departments can keep business data in business-related applications on the mobile device. The business can then dictate to the user the open in options by app or user account, providing a lot of management flexibility.

Private Server Conversations With Per-App VPN

Per-App VPN allows information technology departments much more granularity in access to back-end systems. Only specific apps can gain access to a corporate network, so unmanaged or unapproved apps can never gain access to sensitive data within the enterprise.  As well this restricts the ability to remove data from unapproved applications thanks to Managed Open-In.  This feature greatly improves user experience and firewalls privacy so that non-business data is unable to touch the corporate network.  One of the major benefits to business?  Since this can quickly create barriers between SAP and Facebook, Per-app VPN makes Bring Your Own Device (BYOD) a much more realistic goal for enterprise.

Mobile Device Management Software Made Simple

iOS7 includes a new MDM protocol to streamline third-party MDM solutions.  For large businesses, the need to keep hundreds or thousands of users up to date with supported versions of software can be daunting without management software.  Corporate-owned devices can be automatically enrolled in an MDM solution during activation, automating much of the custom commands, fonts and wirelessly set-up managed apps.

Giving iWork Mobile to Get

Microsoft made a kingdom into an empire by licensing their end-user productivity tools.  Now, just like Google Drive did, Apple is giving away iWork with Cloud capability in their latest release.  This move won’t push blue chip companies to defect in droves from Microsoft’s enterprise licensing program, but for smaller businesses this strategic investment on Apple’s part could help them justify the cost of equipping Apple devices while simultaneously extending on one set of productivity tools between laptop and mobile device.

Keep the “Property” in “Intellectual Property” Through App Store Volume Purchase Program

Enterprises can now buy apps and books for their iPhone and iPad-using employees and keep the to those apps or books to transfer them to other workers. For a handful of users, this might not seem like much, but those 99 cents start to add up quickly when it comes to thousands of users or expensive B2B apps or books or other such pricey materials.  Previously, companies had to go through a painful process of buying redemption codes to hand out to employees to go out and download the apps on their own.

Microlocation through Apple’s iBeacons

Apple’s iOS 7 supports low-cost transmitters that can work with an iPhone or iPad to collect location data, even if there’s no location system installed in a workplace or other environment. The system works over Bluetooth 4.0 and can be used to interact with an environment just by passing through it.

Major League Baseball has been a staunch supporter of the practical for Apple’s new tech for a few years now, and they have been off and running with how to use the iBeacon technology since last winter.  So far, MLB has created an experience to populate a ballpark guides stadium specific information and which prompts users with different results based on where they are located, be it prompting the ticket bar-code at the entrance for the ticket-taker or popping up a coupon for a free soda once one smells the aroma of hot dogs.

“We’ve been looking at customizing the app based on where you are within the stadium, but GPS is notorious for not working indoors, especially when you are in a building made of steel,” MLB iOS developer Marc Abramson told Mashable. “Instead, we are incorporating Apple’s new Bluetooth and iBeacon technologies for iOS 7 and couldn’t be more excited about the potential.”

“Essentially, we want to create micro-locations within the stadiums where you can get different experiences,” Abramson said.

On the factory floor or in a busy transit center this sort of device/environment interplay could change the way the user interacts and experiences their environment.

Endless Possibilities

These eight features are just a few of the many advances that Apple has made with their revolutionary iOS7 product.  Beyond what we wrote about above, there’s plenty more worth mentioning: Multi-Tasking APIs, AirDrop and PDF annotations are but a few.

The advance of mobile technology inside the enterprise will lead to major innovations for businesses and with the introduction if iOS7 large organizations have even less reason to put off extending to mobile.

We wrote months ago that organizations who move quickly but cautiously will be the ones that reap the largest long-term benefit for their business.  That said, Apple has addressed many of the major concerns for caution in the competitive marketplace with the introduction of technologies like Per-App VPN and ESSO.  Extremely secure yet game-changing technology is now available to the enterprise and iOS7 has done enough that smart enterprises will use these security, locational and MDM advances to propel their business forward in the next year with the largest gain at a fractional risk.

Beginner's Titanium: Working With Map Annotations on iOS

With the release of Apple’s iOS 6 the device’s maps have changed from the usage of Google maps to using Apple’s own mapping service.  Fortunately, very little has changed when working with map annotations across iOS versions 5 and 6.

Today we are taking a closer look at some of the features when utilizing map annotations.  A map annotation requires a latitude and longitude value to tell the map where to display the annotation.  Although this is all that is required to display a pin on the map, if you want to detect click events on your map pins, then you will need to add a title to the annotation.
var myannotation = Ti.Map.createAnnotation({

latitude: latitude, //coordinates

longitude: longitude, //coordinates

animate: false,  //it won't animate the pin

title: "My Title", // will be required if you need to detect a 'click' event

subtitle: "My Subtitle",

image: 'images/my_annotation_image.png' // can be used to replace the default pin


The click events are registered to the map view itself and the annotation clicked is specified in the event object.  It is also possible to add subtitles and images to your annotation to customize the display of information.  Another great feature is the ability to use custom images for your map pins.
MyMapView.addEventListener('click', function(e){
if(e.clicksource === 'pin'){
Ti.API.info("The Pin at Latitude: " + e.annotation.latitude + " Longitude: " + e.annotation.longitude + " was clicked.");

The only caveat being that the center of the image is placed at the specified latitude/longitude values.  Possible workarounds are extending the transparent area around your image so that the base of your pin is centered in the image.

Minimizing the size of your custom image also helps due to there being less error in the offset.  Hopefully an offset property will be released soon!

Changing the custom pin image of an annotation during runtime is a little trickier.  In order for the appearance to be updated, the annotation must be removed and added back to the map view.

Armed with these features, creating a map-based app can be accomplished efficiently with effective results!

Happy Mapping! 

Page 1 of 212