Showing posts with label ios. Show all posts
Showing posts with label ios. Show all posts

Wednesday, 31 August 2011

Porting iOS (iPhone) Apps To Android And Blackberry

Golden Gekko is often asked to extend an iPhone app to other platforms such as Android, Blackberry, Symbian, HTML5, etc.

So, why would they come to us if they’ve already developed an app with someone else? Usually, for one of the following reasons:

a) Current developer lacks skills and experience for other platforms than iOS
b) Unhappy with the existing developer
c) Concerned about the complexity of other platforms due to fragmentation
d) Want a long term development partner that covers all platforms

What is porting?

“Porting is the process of adapting software so that an executable program can be created for a computing environment that is different from the one for which it was originally designed…” and “Software is portable when the cost of porting it to a new platform is less than the cost of writing it from scratch. The lower the cost of porting software, relative to its implementation cost, the more portable it is said to be.” (source: Wikipedia)

In reality there is no such thing as porting from iOS to Android or Blackberry. The development environments are completely different, which means that unless you’ve planned for cross-platform development from the beginning you will have to start from scratch for additional platforms and the cost of pure development will be similar or sometimes higher than the first platform.

So what is the point of this blog?

Even though there is no easy solution to porting, there are lots of tips and tricks that make the process smoother, the cost lower and the app more successful:

1. Adapt existing Use Cases, Wireframes and Designs to the new platform

Even though the code cannot be reused, the overall concept of the app, user journeys, information architecture, designs, etc can. However, you need to make sure that the app is customized for the special attributes of each platform in terms of underlying OS concepts, navigation, screen sizes/resolution, limitations, additional features, etc. If you already have good documentation of the app, we recommend analyzing the deltas and describing the differences compared to the original app, keeping it trackable, so that future changes in the original app will also result in similar changes to the other platforms.

2. Sharing resources such as Copy, language files, graphical assets and media

This is where a lot of long term headaches and savings can be made. By sharing resource files where possible, you only have to update the content once and then automatically propagate to the builds for each of the platforms. Often this involves a scripted conversion step, but setting this up early is of great value for long term savings.

3. Backend communication and integration

If the app communicates with one or multiple backends then the API requests should be the same across platforms. In some cases you should consider developing a middleware that sits between the backends and the apps to avoid having to make changes to multiple apps if there is a change on the backend.

4. Code structure

To make it easier to maintain the code across multiple platforms make sure that you use the same or similar variables, classes, etc as this will save a lot of time for developers to make updates. You might also be able to reuse data structures and algorithms.

5. Preparing for tablets and other devices

Finally it is important to continue to plan for future platforms and devices becoming available. When specifying the new app for Android or Blackberry then also make sure that you consider support for Android Tablets, alternative screen sizes, new Blackberry’s launching, etc. Tablets especially require a modification of graphics, as well as user journeys, to make best use of the extra screen space.

 If you have to reduce cost because of budget constraints you can:
a) Complement the existing app with an HTML5 mobile website - this doesn't replace having an app on the other appstores but is a good way of building a mobile presence across all devices
b) Use a cross platform web runtime solution such as Phonegap for Write Once Run On Multiple (WOROM) - this is always going to be a compromise compared to native apps but can be acceptable in certain cases

In conclusion "porting" or developing for multiple mobile OS is not an easy task but the effort, costs and timelines can be reduced and the result can be very rewarding, if planned and executed properly.

For more about porting to Android also read Techcrunch article "Porting iOS to Android pitfalls and perks"

For more information about how to develop and maintain applications across multiple OS contact us for a call or meeting.

Thursday, 9 June 2011

Key iOS 5 Developer features - a CEO’s perspective

Most of the news leaving the hallowed halls of the Moscone West building in San Francisco, where Apple’s Developer Conference - WWDC 2011 - is taking place, centres around the announcement of iOS 5 and its fluffy new features and services such as iCloud, iMessage, Newsstand, and Reminders. Surprisingly, very little has been reported on the major technical improvements in iOS 5 from a developer perspective. And iOS 5 has a lot of big improvements for developers.

Here are the features that I truly believe will make a major improvement to a developer’s life:

1. Notification Center
One of the main complaints over iOS in the last six months has been the inflation of push notifications that disturb the user experience with an iPhone or iPad. Notification Center in iOS 5 builds on the existing notification system with provisioning now built right into Xcode, making it easier to implement.

With the new Notification Center in iOS 5 you can display and manage notifications without interrupting the user. The user can see all notifications in a single place via the Notification Center from the home screen or from any app by swiping down the status bar. When the user gets a new notification it will briefly appear at the top of the screen instead of a popup. The lock screen also displays the notifications so you can respond to them quickly with just a swipe.

To read more about the Notification Center visit here. 

2. Automatic Reference Counting (ARC)
I might be going out on a limb here, but in my opinion the ARC is what is normally referred to as garbage collector. One of the key complaints by Android developers, particularly when developing for iOS, is the difficult of memory management in iOS.  This also affects users since apps constantly crash.  With ARC though, the developer no longer needs to be an expert in memory management as the compiler does the job for you.  In theory this should allow apps to run faster and more reliably. Whether it will make apps more stable in general or cause developers to become sloppy remains to be seen.

3. Twitter integration
To be fair this has been one of the main features discussed in the media. But I believe this is more due to the fact that the media loves Twitter.  What they don’t say though is that Android has supported Twitter and other social networking integration for over a year, as Android allows apps to interact with each other.  Nevertheless, iOS now provides the key features of Twitter as well.  The deep integration allows the association of a Twitter account within iOS settings. So now the integration with an app does not have to be done by the user by logging in and or adding an account manually.  Since most apps nowadays provide sharing through Twitter, this will enhance the user’s experience enormously.

4. Core Image
During the last year some of the coolest and most popular apps have been photo editing or photo filtering apps such as Instagram, Hipstamatic, Camerabag, Photogene and many more. Core Image provides a framework for editing images and videos, making it a lot easier to implement these features into any app.  In addition to this, the framework is tightly integrated with the hardware to make performance even better.

5. OpenGL ES
The new OpenGL capabilities are what really excite game developers and 3D animators.
With the GL Kit in iOS 5 the capabilities for advanced rendering and texture techniques have become even better, and we are yet to see how those capabilities can be utilised.

6. PC Free
The sixth and last feature I want to highlight has little to do with the developer SDK but may turn out to become one of the biggest advantages.  Today the majority of users upgrade to the latest iOS within the first couple of months. Some though, will still stick to an older version and cause headaches for developers in terms of backwards interoperability support.  Hopefully PC Free will be so tempting a feature that only a small share of users will remain with older versions of the OS. Unfortunately, however, Apple also announced that the oldest iPhones cannot be upgraded to iOS 5 so some legacy issues will still remain.

So there you have a CEO’s perspective on iOS 5.  Let’s start making use of it when it’s launched (hopefully) in September.

Golden Gekko is attending WWDC but it seems, playing with the SDK and Apple’s other new toys has kept them too busy to give us a full report yet.

Wednesday, 2 February 2011

Why HTML5 sites for mobile require a mobile specialist

Although several mobile browsers now support HTML5 this is a version of HTML5 adapted for mobile:

A.      The design and user interaction of a mobile site is completely different to its equivalent website.  The use of the touch screen, the smaller screen size, different usage occasions and scenarios require a user experience designer with experience in mobile

B.      The browsers vary significantly depending on the OS – for example iPhone vs. Android but also between different Android devices.  Resolution/ screen size and layout (landscape vs. portrait) may differ from device to device

C.      The functionality of HTML5 on mobile devices can integrate parts of the native functionality such as location, messaging, contacts, accelerometer, etc.

D.      Each OS requires particular encoders for video

E.       Android in particular has differences depending on the OS version (1.6, 2.1, 2.2, 2.3 and soon 3.0) which means that the mobile site needs to be tested across all device versions

In summary there is currently not one version of HTML5 but several. For a mobile implementation of HTML5 you need someone with experience in mobile development. Before there is a stable development standard for mobile sites, there is still a lot of standardisation work remaining.

Sunday, 7 November 2010

The Beauty of Fragmentation

Having developed mobile apps for over 5 years we have an enormous amount of good and bad experience from different platforms and fragmentation. So can there actually be good things about fragmentation?

Good
  • Working within standardisation is a slow and complicated process. To innovate, technology companies must sometimes divert from the standard
  • The agreed standard is not always the simplest or smartest way to do something. Therefore platform developers constantly strive to improve the future standards by implementing them as proprietary components before the standard has been established
  • Proprietary technology creates de facto standards – Microsoft Windows, iPhone OS and Adobe Flash are great examples of this
  • Differentiation is good – we want different screen sizes, keyboard inputs, sizes and colours. Not everyone wants a black or white iPhone

Bad
  • Applications have to be tested on all different variations of e.g. the Android or Symbian OS, display resolutions, user input methods (Touchscreen, QWERTY, etc) and hardware configurations
  • The cost of optimising and testing the applications is substantially higher for Android, Symbian, Web Runtime and J2ME due to fragmentation
  • The development phase is longer due to the time consuming additional device optimisation and testing that is required

At Golden Gekko we constantly work on improving our platforms and tools to get around these challenges and instead leverage the positive differentiation of fragmentation.

But the title of the blog was the beauty of fragmentation and not pros and cons or how to battle fragmentation. The following graph from Tweetdeck illustrates the enormous variety of Android devices now being used to download and use apps from the Android Market. Beauty or Beast? You be the judge.