There is a long history of technologies and trends that start in the consumer space and eventually make their way to the  Enterprise/IT world. Arguably, Cloud Computing started with being able to buy things online with Amazon.com and then jumped over to the Enterprise software world with SAAS applications like Salesforce.com. History as they say repeats itself and we’re now seeing the same phenomenon with mobile. What started in our personal lives with the ubiquity of smartphones and consumer mobile apps (how did I ever find a place to eat before the Yelp iPhone app came along!)  is now making its way to the Enterprise. Some have called this the ‘Consumerization of IT’, but whatever the latest analyst term du jour, it is clear that Enterprises are having to adapt to a mobile-first world by letting their employees/partners/customers access data (securely) via their iOS and Android devices (for now, the other mobile platforms are barely a blimp on the screen).

Salesforce.com recognized and embraced this trend a while back and in fact mobile is one of the core tenets of the Social Enterprise. In addition to releasing a new version of salesforce.com redesigned specifically to work on mobile touch screens, we’re also releasing a Mobile SDK that lets our customers and partners build custom iOS and Android mobile applications for the Force.com and Database.com platforms. We released a Developer Preview version of the Mobile SDK at Dreamforce and Quinton blogged about it then. Since Dreamforce, we’ve been busy tweaking and improving the SDK and it is now GA. One of the great things about the Mobile SDK is that its open source and the code for both the iOS half of the SDK  and the Android half of the SDK is available on GitHub.

Since I’m a self-proclaimed Android hacker (no offense Objective-C, but you can’t pay me enough to go back into memory pointers and malloc land!), I’ve focused my attention on the Android half of the SDK.  The Android Mobile SDK provides libraries for quickly building native or hybrid mobile apps that seamlessly integrate with Force.com/Database.com data. The native half of the SDK, includes an OAuth 2.0 implementation (which abstracts away the complexity of securely storing tokens or fetching refresh tokens when a session expires) and simple Java wrappers for the REST API that let you develop native Android apps for Force.com or Database.com with minimal code. Here for example is all it takes to query Account records from an Android app.

	new ClientManager(this, accountType, loginOptions).getRestClient(this, new RestClientCallback() {
		@Override
		public void authenticatedRestClient(RestClient client) {
			AccountListActivity.this.client = client;
		}
	});
        .....

	String soql = "select Id, Name from Account limit 10";
	RestRequest request = RestRequest.getRequestForQuery("v23.0", soql);
	RestResponse response = client.sendSync(request);

	JSONArray records = response.asJSONObject().getJSONArray("records");

Note that as part of making the REST API call, the SDK will automatically detect if the user is currently signed into Force.com/Database.com and if not, redirect the user to login via OAuth 2.0. The application developer does not have to implement any authentication logic and does not even have to worry about storing the OAuth access and refresh tokens securely on the device – the SDK abstracts all that away.

In addition to the native libraries, the Mobile SDK also includes a PhoneGap based container that lets you develop hybrid HTML5 applications. Using this container, you could for example develop an HTML5 application in Visualforce and then ‘wrap’ that web application in a thin native wrapper that lets you access phone functions like the camera, address book etc.

If mobile development is your cup of tea, download the SDK from GitHub and start playing around with it. A good place to start is the Mobile SDK workbook. It has samples and instructions on how to use the SDK to develop various kinds of mobile applications (native iOS/Android, hybrid iOS/Android etc.). If you have any specific questions or feedback regarding the SDK, please post on the Mobile Discussion Board.

Bookmark the permalink. Trackbacks are closed, but you can post a comment.