Posts Tagged 'IOS'

April 1, 2013

SoftLayer Mobile: Now a Universal iOS Application

Last month, we put SoftLayer Mobile HD out to pasture. That iPad-specific application performed amazingly, and we got a lot of great feedback from our customers, so we doubled-down on our efforts to support iPad users by merging SoftLayer Mobile HD functionality with our standard SoftLayer Mobile app to provide a singular, universal application for all iOS devices.

By merging our two iOS applications into a single, universal app, we can provide better feature parity, maintain coherent architecture and increase code reuse and maintainability because we're only working with a single feature-rich binary app that provides a consistent user experience on the iPhone and the iPad at the same. Obviously, this meant we had to retool much of the legacy iPhone-specific SoftLayer Mobile app in order to provide the same device-specific functionality we had for the iPad in SoftLayer Mobile HD, but I was surprised at how straightforward that process ended up being. I thought I'd share a few of the resources iOS includes that simplify the process of creating a universal iOS application.

iOS supports development of universal applications via device-specific resource loading and device-specific runtime checks, and we leveraged those tools based on particular situations in our code base.

Device-specific resource loading allows iOS to choose the appropriate resource for the device being used. For example, if we have two different versions of an image called SoftLayerOnBlack.png to fit either an iPhone or an iPad, we simply call one SoftLayerOnBlack~iphone.png and call the other one SoftLayerOnBlack~ipad.png. With those two images in our application bundle, we let the system choose which image to use with a simple line of code:

UIImage* image = [UIImage imageNamed: @"SoftLayerOnBlack.png"];

In addition to device-specific resource loading, iOS also included device-specific runtime checks. With these runtime checks, we're able to create conditional code paths depending on the underlying device type:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    // The device is an iPad running iOS 3.2 or later.
} else {
    // The device is an iPhone or iPod touch.
}

These building blocks allow for a great deal of flexibility when it comes to creating a universal iOS application. Both techniques enable simple support based on what device is running the application, but they're used in subtly different ways. With those device-specific tools, developers are able to approach their universal applications in a couple of distinct ways:

Device-Dependent View Controller:
If we want users on the iPhone and iPad applications to have the same functionality but have the presentation tailored to their specific devices, we would create separate iPhone and iPad view controllers. For example, let's look at how our Object Storage browser appears on the iPhone and the iPad in SoftLayer Mobile:

Object Storage - iPhoneObject Storage - iPad

We want to take advantage of the additional real estate the iPad provides, so at runtime, the appropriate view controller is be selected based on the devices' UI context. The technique would look a little like this:

@implementation SLMenuController
...
 
- (void) navigateToStorageModule: (id) sender {
UIViewController<SLApplicationModule> *storageModule = nil;
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        storageModule = [SLStorageModule_iPad storageModule];
    } else {
        storageModule = [SLStorageModule storageModule];
    }
    [self navigateToModule: storageModule];
}
...
@end

"Universal" View Controller
In other situations, we didn't need for the viewing experience to differ between the iPhone and the iPad, so we used a single view controller for all devices. We don't compromise the user experience or presentation of data because the view controller either re-scales or reconfigures the layout at runtime based on screen size. Take a look at the "About" module on the iPhone and iPad:

About Module - iPhoneAbout Module - iPad

The code for the universal view controller of the "About" module looks something like this:

@implementation SLAboutModuleNavigationViewController
…
 
- (id) init {
    self = [super init];
    if (self) {
      _navigationHidden = YES;
_navigationWidth = [[UIScreen mainScreen] bounds].size.width * 0.5;
    }
    return self;
}@end

There are plenty of other iOS features and tricks in the universal SoftLayer Mobile app. If you've got a SoftLayer account and an iOS devices, download the app to try it out and let us know what you think. If you were a SoftLayer Mobile HD user, do you notice any significant changes in the new app from the legacy app?

-Pawel

P.S. If you're not on iOS but you still want some SoftLayer love on your mobile device, check out the other SoftLayer Mobile Apps on Android and Windows Phone.

November 1, 2011

SoftLayer on the iPad

Shortly after we began implementing the SoftLayer Mobile application for the iPhone and Android, Apple released the iPad. With our development resources limited, we focused on adding the functionality our customers required to the iPhone application with only a few small features added to support the new device.

As we became more familiar with the iPad, we started seeing a few key areas where SoftLayer Mobile could benefit from the large format iPad user interface. We've been able to incorporate a phenomenal feature set in the SoftLayer Mobile application, and as our desired feature set has become more and more complete, we've gotten a bit of breathing room from our iPhone releases. We used that breathing room to re-visit the iPad and what it could mean for the SoftLayer Mobile customer experience on a tablet. The result of that investigation is the SoftLayer Mobile HD application:

SL HD

As you might expect, SoftLayer Mobile HD shares quite a bit of functionality with its iPhone sibling. The application offers a window into your SoftLayer environment so that you can browse, create and edit support tickets; discover information about computing resources and bandwidth; and keep up-to-date on the latest notifications from our data centers. The iPad application also helps you keep track of financial information by allowing you to browse your account and its invoices. All this functionality benefits from the intuitive interface of the iPad. You have more room to browse, more room to edit, and fewer screens to navigate as you manage and explore your virtual SoftLayer data center.

SL HD

SL HD

Best of all: The application is only in its first release, and already shows great promise! We have plenty of room to grow and tons of ideas about the next features and functions we want to add. If you're iPad-equipped, get the SoftLayer Mobile HD application in the iTunes App Store. When you're navigating through the interface, take note of anything you'd like to see us change or add, and let us know!

-Scott

May 27, 2011

SoftLayer Mobile - Coming of Age

The SoftLayer Mobile application allows customers to work with support tickets, examine and control servers, monitor bandwidth information and more. The application is available on two platform: Apple iOS - supporting iPhones and iPads, and the Google Android operating system - supporting mobile phones and devices from a variety of vendors.

The SoftLayer Mobile application is quickly approaching its first birthday. The application was first introduced to the world in June of 2010. Frequent visitors to this blog may remember when we introduced the iPhone application right here in the SoftLayer blog. We got back with you again when the Android application reached the milestone of 100 downloads. Our success with the application continues to this day with the both the iOS and Android versions sporting impressive download statistics which multiply those of a year ago many dozens of times over.

In the course of the past year, we've gotten some great suggestions for improvements from our customers. The first request was for the application to store account passwords a feature which we implemented quickly. From those humble beginnings we added some larger, more complex functionality based on your feedback like two-factor authentication using VeriSign Identity Protection, bandwidth charting, and the ability to check account balances and make one-time payments against those balances from your phone.

We'd love to continue that trend and hope to tap into the experience of the thousands of you who are working with the application. In the coming year, we hope to expand our existing functionality, include new features, and support both new operating systems and new devices. We'd love to hear about your ideas on how we can best improve the SoftLayer Mobile application to make it an even more valuable tool for you.

Would you like improved tracking of your bandwidth? Can we offer greater control over your server's network ports? Do you need to monitor your server's CPU usage even while you're in line at the bank? Is there one particular task that compels you to visit the SoftLayer Customer Portal time and again? If so, and if it would be convenient for you to have that information on the phone in your pocket rather than on the computer at your desk, please let us know!

To offer your suggestions, please create a support ticket in your SoftLayer account detailing your needs. Alternatively, if you are already using the SoftLayer Mobile application, drop us a line through the feedback links built into the Support section.

If you haven't been using the SoftLayer Mobile application, then we'd like to invite you to download it and explore its features. For more information, and for links and information about downloading and installing the application, visit our Mobile Application resource page.

Keep watching that page over the coming months as well. We have some exciting projects in the works and hope to share them with you very soon!

-Scott

Subscribe to ios