Using Phonegap for Native Application development

34,888

Solution 1

I've built a couple of applications using PhoneGap, and for what it provides, it's great. There are a couple of quick notes I would like to point out, which might help you.

Disable device-based features you're not using The accelerometer, geolocation features are by default turned on. If you're not using them, I would turn them off, as your app will load faster (initialize) and run smoother.

onDeviceReady - This is the method that's called once phonegap has loaded and is ready. $(document).ready or whatever you're used to, doesn't really apply here - unless you're only doing interface/hard-coded HTML stuff. If you're interacting with iPhone features, like GeoLocation, you will need to do everything after onDeviceReady has been called.

Pick a UI/library There are a ton of options for the interface/libraries, jquery-mobile, sencha touch, jqtouch, etc.. These each offer a unique approach, and feature-set. Do some research and use one, but avoid combining. You can read about some more options, tools here: http://www.phonegap.com/tool (link updated)

Also, more on just mobile development in general, with PhoneGap If you're looking to build apps, that are distributed through the Android market and iPhone App Store, I would read through their exhaustive lists for guidelines on how to develop your app. For example, in the tools link above, there is a "tool/plugin" called Easy APNS - while this is useful for Android - and technically doable on the iPhone, it violates the development agreement, as it states you must use the Apple notification network, etc.. This is just an example, but reading up on that stuff will save you a lot of headaches, if that's your end goal.

All in all, it's great for lightweight apps, especially if you come from a web development background. LocalStorage, GeoLocation, etc.. works really well. I hope this helps a little... and feel to ask questions.

Additional Edit:

I really think it comes down to what you want to do, and what you know how to do. Matt pointed out that developing native apps, for iOS is better, etc.. Yeah, if you have the time and knowledge to learn that - of course native will be better. But PhoneGap is made for web developers that can take their existing skillset and build apps. Also, PhoneGap allows you to build apps quickly, for iOS, Android, Symbian, Palm, Blackberry. With minor adjustments to your codebase for each.

Solution 2

Here are all the best Performance guides I've read for PhoneGap... there is alot to be wary of to ensure you have solid, stable performance... but you can pick it all up in just one evening of reading.

Here are the best nuggets:

PhoneGap/Mobile Web Performance Tips

Enabling New Functions

Architecture

Architecting your App in Ext JS 4: http://www.sencha.com/learn/architecting-your-app-in-ext-js-4-part-2

Solution 3

Before expressing my opinion of Phonegap, I need to issue a little disclaimer saying that I am, by no means, a web developer. For me, writing JavaScript and CSS is like pulling teeth. That said, I don't like Phonegap.

There are a few very appealing aspects of the framework, mainly the "Write-Once-Run-Anywere" appeal and the "I-Don't-Have-To-Learn-Objective-C?" appeal. The framework can even give you access to some of the hardware features like the accelerometer. All of these are valid, to a certain extent.

That said, none of the great iOS apps are built using any kind of cross platform framework. There are so many subtle and elegant UI interactions that are handled for you by the native UIKit controls that many users and developers take for granted until they're missing, like the slew of incredibly detailed view animation curves and scrolling bounces that aren't there in the web-view based UI. You could toil to reproduce them perfectly, but for that time investment, why not just go native?

A second point to note is that the support community for Phonegap-built iOS applications is drastically smaller than natively developed applications. If you're one to rely on the community during projects, this should also give you pause.

In the end it comes down to the quality of experience you want to deliver. The upper bound is lower with Phonegap. If you're ready to accept a less-than-excellent user experience in exchange for reduced development times and increased portability, than it is a very viable framework.

As subtext for any who are interested, Marco Arment and Dan Benjamin recently discussed this topic. You can listen to it here.

Solution 4

The installation procedure involves a number of packages (Java, Apache Ant, Ruby, iOS SDK, Android SDK and PhoneGap itself), which all have to be correctly installed and set up. This can be a major effort. To be fair, they have something called PhoneGap Build in beta that should make this much easier.

We use it with NS Basic/App Studio to produce apps which qualify for app stores.

Solution 5

if your are not making a game nor widget, just plain nice-looking app then phonegap is your choice.

But you should take care with your JS, avoid doing anything in JS for example if you want to do any animation avoid setting a timer with small intervals (eg. 100 ms), avoid jquery and alike animations. For example instead of animating fade by setting a short-period timer decreasing opacity at each point step by step (this is how jquery fade work), you should use css3 transitions from opacity 1 to opacity 0.

My advice is to go with something like zeptojs.com, after all phonegap won't run ie6 :-)

Check some tutorial on how to make your JS more light

http://bcksp.blogspot.com/

Share:
34,888
SaKet
Author by

SaKet

Updated on July 28, 2022

Comments

  • SaKet
    SaKet almost 2 years

    I recently came across Phonegap. Have anyone of you tried it. Its an incredible tool which claims that developers can use HTML 5 based framework like Sencha touch and Jquery at the same time having access to native features on phone. Also the code is portable from Android to Iphone with some effort. Before I plunge into it I want to know what is forum's experience with Phonegap. What are the pain points and is it really scalable for enterprise level application development.

  • SaKet
    SaKet about 13 years
    It seems that developers are divided on Phonegap.
  • TNC
    TNC about 13 years
    If at the end of the day, you have time and money to learn the different languages to build native apps for Android and iOS - then by all means do that :) But for most of us, using what we know to build apps that run really well on multiple devices, is a no brainer.
  • David Tang
    David Tang almost 13 years
    +1 Great point on the size of the community.
  • Traveling_Monk
    Traveling_Monk almost 13 years
    easyapns is for iPhone notification only(not android) and does use Apple notification network, not sure where you get the idea that it breaks the developer agreement..
  • Admin
    Admin almost 13 years
    +1 Great point on user experience. It really matters in iOS.
  • DOK
    DOK almost 12 years
    PhoneGap Build is still in beta a year later, more than six months after Adobe bought the original developer, Nitobi.
  • memical
    memical over 11 years
    actually you can now build games as well
  • memical
    memical over 11 years
    you can create the same user experience in phonegap too. I do not think it is only a matter of learning objective c. as other mobile OSes become popular: Androi now, lets see what happens to Windows Mobile and Firefox OS ... the crossplatform solution will be THE solution if you want to not be limited to the x% market share that iOS will have then.
  • Matt Wilding
    Matt Wilding over 11 years
    @memical, the Facebook dev team would disagree with you, for one. I'm not saying it doesn't make sense from a market coverage perspective, I'm saying it's not as performant as native. Despite what you say, that's a fact.
  • Mrunal
    Mrunal almost 11 years
    nice explanation.. Thanks :)
  • Mrunal
    Mrunal almost 11 years
    Great collection of documentation.. Really helpful thanks :)
  • JoshuaDavid
    JoshuaDavid almost 11 years
    A good debugger is your best friend. Check out this to remote debug iOS: stackoverflow.com/questions/7242997/…
  • Vish
    Vish over 9 years
    is porting angular js based webapp to mobile app using phone gap good option or not..in term of performance and ui?