The struggle between native and telephone conversation, a simple application

I am going to make a mobile application for the native (i.e. not in the browser). Since I'm a web developer, I'm struggling to decide whether I should try Phonegap or just create my own application in Java or objective-c.

Application requirements are simple. GPS / wifi location, integration with Facebook, and I think I need a database to handle some of the Facebook-dependent links. Like records in the game, for example, such things.

I am a web developer and so far I know neither java nor objective-c. I have never used Phonegap before, so I don’t know if it can fulfill my requirements.

So my question is: Can I use Phonegap for my application, or do I need to switch to a new language?

+73
android ios cordova phonegap hybrid-mobile-app
Dec 28 '12 at 6:34
source share
10 answers

Related:

A larger version of this article can also be found HERE to be transparent, this is my personal blog.

Hybrid vs Native apps

Hybrid Applications:

Pro:

  • Fast development, especially if you are a long-time web developer.
  • 1 language can be used on every available platform. This, of course, requires a Phonegap wrapper. You do not need to learn Objective-C, Java or C # for any development. You only need to understand the basics of Phonegap implementation. You will need to play with the above languages ​​a little, but you do not need to understand them.
  • Phonegap may offer some of its own features, such as the iOS tab bar, or the Android tab bar, and much more.
  • Lower budget costs and a huge community of supporters and developers.
  • A hybrid application offers many advantages of both approaches to accessing the most common device APIs and wide device coverage, without requiring special skills, large budgets and longer time to market, which are more typical for completely native applications.

Minuses:

  • After a while, you will be tormented by blood, literally and metaphorically.
  • Mobile phones (even today tablets) are not fast enough to run a hybrid application smoothly, and mobile JavaScript is best. The Android platform is a nightmare, page transitions do not work smoothly, not to mention the CSS / CSS3 implementation is not implemented. If you think that native Android 2.X and 4.X have differences, look at the incorrect JavaScript / CSS implementation on Android 2.X. iOS is better, but still has a flaw in CSS3 implementation, page transitions are much better. So that these short native applications would always have the best user interface and overall feeling.
  • You will spend much more time creating the application, and then creating it. Creating an application for each platform is a pain in the neck. Browsers on different platforms do not consistently support all the latest HTML and API functions that can make development and testing a problem.
  • If you do not have a good designer, do not even try to create an application; everything looks.
  • If you don’t know what you are doing, there’s a good chance your app won’t get permission to use the Apple App Store. Even the Google Play Store will ban your application if they discover a third-party Phonegap PayPal plugin.

Native applications:

Pro:

  • A native mobile application can provide a better user interface - fast and flexible, can give you better access to device features and can be found in app stores.
  • Without a doubt, native applications have full access to the underlying mobile platform. Native apps are usually very fast and polished, which makes them great for high-performance apps or games. This is more than enough.

Minuses:

  • A larger budget, you will need at least a person / s with Java and Objective-C, even C #, if you want to use the Windows mobile application. Yes, you can find out on your own, but you do not live under the illusion that you will do it in a short time. If you've never done any development, choose Objective-C (iOS is still the best platform). Otherwise, select Java. Java has a syntax similar to other available languages, so it's easy to switch from C # to Java and vice versa. Goal C is your own world. It has a rather unusual syntax.
  • It may take you a longer period of time to develop them all, and time is money. It depends on the complexity of the applications.

In your case, if you have good web development / design skills and / or you have a good designer, you should choose a hybrid application. Only go to your native language if this application is complicated. Everything you want can be done with a hybrid application. And you will find a great and supportive community.

Hybrid applications

What I have not mentioned before, you need to be especially careful. Even if you are an experienced developer, you will find many problems that you cannot solve. Hybrid development should not be wrong with basic web development.

Each mobile platform has its own set of problems, not to mention the fact that mobile phones behave differently depending on the device. If possible, always create an application that runs on slower devices, because the native application will run successfully on almost any device.

There, finally, when creating hybrid applications, application development will take you about 30% -50% of your time, the rest is for debugging and training on the platform. Believe me, even after several years of mobile development, sometimes I have to face problems that I can not solve on my own or quickly enough.

Therefore, be careful when choosing a mobile framework, select 2-3 and spend several days reading about them.

References

Here are some links to help you decide:

PhoneGap + jQuery Mobile 1.4 tutorial is a walkthrough for PhoneGap and the latest version of jQuery Mobile

PhoneGap + jQuery Mobile 1.4 - MacOS - This is a step-by-step guide for deploying PhoneGap on MacOS. jQuery Mobile part is considered in the previous article, there is nothing to repeat.

jQuery Mobile vs Sencha Touch - jQuery Mobile Sencha Touch comparison

jQuery Mobile vs Kendo UI - jQuery Mobile comparison Kendo

7 of the most famous HTML5 mobile frameworks - The name says it all

7 lesser-known HTML5 frameworks - The name tells everything

+157
Dec 28 '12 at 12:59
source share

If your application does not have animation effects and I just prefer to create cz on the network (Phonegap) in less time, we can run in several types of mobile OS. if your application contains more user interface and animation effects, then it’s best to go with your family ..

even though you are developing webview (Phonegap), you need to learn some basic steps in Android and iOS

How Phonegap Works on Devices

IOS Animation and download viewing in iOS web browsing are very complex and good, animation effects can be noticeably observed

Android
We should consider the version of the device and device for android when working with html code. Some highly configured devices in android give a clearer and more effective animation, but some devices (mainly the old version and some devices of the company) cannot give good animation effects, the rendering effect varies from device to device in android.

+16
Dec 28
source share

In my humble opinion, using Phonegap you can simply develop simple applications, nothing more. The documentation is not enough, and, like others, you said that you spend much more time fixing bugs and finding plugins than creating your own application. I would do my best to learn Android or iOS or something else, look at this as an investment of your time. (Yes, my comment is a little biased).

+7
Oct 23 '13 at 8:13
source share

The last thing I looked at is PhoneGap - it's all html, css and javascript. This way you can feel at home. PhoneGap can handle GPS location, see this article from PhoneGap documentation. Regardless of whether you want to get Objective-C, it depends on how quickly you pick up new languages, as this is a bit of a departure from web development.

+3
Dec 28
source share

It totally depends on your needs.

After publishing my first application in a few months (my own Android application with database support, a calming connection), I decided to rewrite my application using phonegap (since I want to clone the application in iOS, so instead of doing it in ObjC, why not javascript?)

When on Android it cost me, a Java developer, 3 weeks to learn and encode everything from scratch. Having banged my head on the wall several times, how to synchronize the ListAdapter with the Restful Service from my server, how to use the application theme (quite difficult, in my opinion, especially when it comes to special effects, such as transparency, border, ...), and Also, how to effectively structure your code base (if you are familiar with Java, you will find that all classes are very related to each other, since most of the tutorials are written about this)

When in Phonegap everything is done in 1 week. Css, html, with onsenui and angular do the GUI development just like around the 1st student assignment, and the theme is just a piece of cake. I do not need to run it on a real device, just use the browser during development, the change code and update are enough. angular provides two-way binding to the DOM, and this creates tremendous awesomeness when collecting and displaying data. For example:

 <ul ng-each="for sentence in sentences" > <li>{{ sentence.title }} </li> </ul> 

When the sentences variable changes (received from the server), the DOM also changes automatically. However, javascript is just javascript. I found that I tried to debug the application many times, especially when I execute MapReduce functions using PouchDB (a big mistake, today I need to return to the cordova-sqlite-plugin ), and most of the time I have to read the log to find out the problem (Chrome and Firebug tools can't catch a breakpoint). It’s also difficult to restructure the application (javascript, again), so if you don’t sort your code base at the first sign, you may run into clutter (and debugging will again become a real pain). PhoneGap is also based on a web interface, so sometimes you will hear that “because it doesn’t support this bla bla bla on this platform” (for example, localStorage ), and you have to stand behind it if you cannot find a good plugin.

Conclusion With the exception of restrictions on web storage, PhoneGap works fine with a simple database-based graphical interface (in most cases, most database-enabled applications have a simple graphical interface). If you are going to develop such an application, then stick to it.

+3
May 20 '14 at 19:22
source share

check out ionic , with support from angular.js, to compensate for some of the flaws mentioned in the accepted answer. Tutorial for running the employee directory application: http://coenraets.org/blog/2014/02/sample-mobile-application-with-ionic-and-angularjs/

+2
Mar 11 '14 at 1:57
source share

@Gajotres wrote a great answer, but hybrid application performance has come a long way since 2012. I answered a related question that covers the difference between a hybrid and a native development application in 2017.

The moral of this story is that the development of hybrid applications has improved significantly over the past few years, but still cannot match the native ones for certain use cases.

With tools like Ionic (first released in 2013 ) and React Native (first released in 2015 ), it’s never before been easier to create hybrid applications with native components. Hybrid applications are now faster, less buggy, and able to interact more deeply with their own user interface.

The threshold for the performance of hybrid applications is significantly higher than several years ago, but there is still a moment when you may need to develop an application in your native language.

Original answer:

Yes, the general opinion is that hybrid applications are inferior to the native Programs. Although this can be frustrating for developers more familiar with web technologies, this is for a good reason:

  • Inability to interact with native components . Although plugins exist, such as the cordova-plugin-statusbar , there are restrictions on how to interact with your own components and how to use them using the technology’s web interface. One big (and disappointing) problem that I personally carried out was the inability to have input at the top of the keyboard as the keyboard comes to life. It sounds unissue until you look in the application where it is an important function, for example, in a chat application like Slack.
  • 300 ms delay Although modern browsers start phase this out , the proportion of the second delay present in hybrid applications makes the application feel slow and not native. This problem is becoming less significant. More users are taking workarounds such as FastClick.js and some such as Ionic to eliminate it by default.
  • Haters are right (sort of) . Although hybrid application development has come a long way, there are still minor glitches and lags in features that are simply missing from the Native app. screen transitions, application transitions and battery life are still common areas for errors to appear and there will probably be some time even if they begin to become less noticeable.
  • There are several excellent proprietary solutions . With newer languages ​​such as Apple Swift , it is becoming easier in the code in the native language. At the same time, tools such as React Native fall into the gray area between Native and Hybrid, allowing developers friendly technologies such as JavaScript, but are compiled into their own code.

The moral of the story is that it really depends on what is important for your particular use case. Hybrid apps have become a viable option and no longer an embarrassing side show. Conversely, there are still minor aspects of interacting with Native UX, which are not yet possible only using the Native application.

In general, I recommend displaying your project and determining if the application needs any advantages of its own application. Using tools like the Ionic View app, it’s easy to put together the basic layout of your app and test on a real device, regardless of whether the Hybrid app works for you.

+1
May 9 '17 at 10:09 PM
source share

There is also AppGyver Steroids, which integrates PhoneGap and its own user interface very well.

With Steroids, you can add such things as your own tabs, your own navigation bar, your own animations and transitions, your own modal windows, your own drawer / panel (external facebooks menu) to the PhoneGap application. Basically, nowhere CSS + JS does not cut it, Steroids fall into their own layer to perform the action.

In addition, when using steroids, you can (although you don’t have to) use a multi-page architecture (multiple web views) rather than a single one. When using single-page applications, all things like transitions are CSS workarounds, and as Mani said, even modern tablets and phones are not fast enough to make them smooth. This is always obvious when it is a phone conversation application, especially when you have a bunch of processes, or if you are scrolling because JS processes are upside down (fixed in iOS 8).

Using multi-page architecture means that you get 100% native performance (because these parts are actually native). And unlike a phone conversation, you get consistent user interface behavior and easier debugging (using a single-page application is often difficult to recreate a specific state in your application). The multi-page page simplifies the development and support of your applications, as your code base remains cleaner.

Check out the demo: http://youtu.be/oXWwDMdoTCk?t=20m17s

0
Aug 01 '14 at 10:22
source share

I also found any good article here http://www.comentum.com/phonegap-vs-native-app-development.html , it compares these two methods in different categories.

The summary looks like this:

  • Interface Design (same)
  • Cost (Hybrid has an edge)
  • Development time (Hybrid has an advantage)
  • User experience and performance (Native has an advantage)
  • Maintaining health (same)
  • No limit (Native has an advantage)
  • Security (same)
  • Support and resources (Native has an advantage)
  • Tools and debugging (Native has an edge)
  • Independent platform (Hybrid has an advantage)
  • Popularity (Same)
0
May 15 '16 at 4:16
source share

One of the great options missed here is development with Xamarin .

Although this does not help harness the skills of OP web developers, it has many advantages over PhoneGap and almost no disadvantages.

Xamarin vs PhoneGap Pros:

  • A mature structure that provides access to the most (if not all) native features of mobile devices.
  • Learn only one language (C # for most developers) for all mobile devices of the platform.
  • You have the performance of native applications on iOS / Windows Mobile (since the application is compiled into native code) and very close to Android (it still compiles to its own APK, but should have a thin shell that translates the .NET class library API into APIs Android classes at runtime).
  • It is supported by Microsoft, which supports the overall generous quality of the platform and development tools itself. For example, you will use Visual Studio, and this is probably the best development environment and now has a free community version with every available feature needed for Xamarin development.

Xamarin vs PhoneGap Cons:

  • It takes some time for pure web developers to migrate to the C # and Xamarin class library APIs.

Therefore, Xamarin is a very reliable option for cross-platform development these days.

0
Sep 01 '17 at 16:33
source share



All Articles