The title is slightly (read: very) hyperbolic, but I find myself using the same plugins again and again in the mobile applications I'm creating. The plugins provided by PhoneGap Build themselves allow us to do a great deal of things, but with the ability for anybody to create and submit their own plugins we can do so much more. This post will summarise the plugins I find most useful, and a few more that I haven't had the chance to try out yet.
There's a set of plugins supplied by PhoneGap Build that provide a core set of PhoneGap's features – these are things like the Camera, Geolocation and Device Information. Not all of these must be included in a PhoneGap Build project though, in fact, by default you have to manually include any of these features that you want to use in your config.xml (see this post if you're not sure how to set up a PGB project). Here's a few that I use the most:
The Geolocation plugin provides information about the users location by using the devices GPS and inferred locations from other sources such as IP, WiFi etc.
This plugin, as the name would suggest, allows you to launch a browser within your application. Users can also use this browser to navigate to pages other than the one you specifically linked to. When they are finished using the browser, they can cancel the window and return right back to your application.
The Splashscreen plugin gives you more control over the display of your applications splash screen. As most of you will probably already know, that is the graphic that is displayed briefly as your application is launched. I babbled on about the Splashscreen plugin so much that I decided to split it out into its own blog post here.
As boring as it is, if your app is pulling content from the Internet in some way you're probably going to have to deal with how to manage what happens when the user is not connected. This plugin allows you to easily detect and manage this process.
As well as the plugins provided by the PhoneGap Build service, there are plenty of exciting plugins that have been submitted by the developer community (you can even make your own!). Here's a few third party plugins that I use.
The Facebook Connect plugin allows you to hook into the native Facebook application for authentication, which provides for a much more smooth sign in experience. If authentication can not be achieved this way then the plugin will gracefully fall back to a browser based authentication process.
This isn't a plugin that I use very often, but it is very cool. The Barcode Scanner plugin allows you to read a range of barcodes, including QR Codes. I wrote up a more detailed blog post on this here.
The status bar is the little bar at the top of iOS devices that has the time, battery, network connectivity and so on. This plugin provides you greater control over it. Again, I'll spare the detail here – if you want to read up on this a little more you can take a look at another of my posts here.
This is the Google Analytics plugin – using this allows you to hook up your app to your Google Analytics and track the amount of users using your app, session times, events, device types and more.
I like just browsing through the user submitted plugins sometimes to see what's in there, it really does feel like being a kid in a candy store. There's so many cool things I want to try out in my own apps that I haven't had the chance to (or I've just plain forgotten about). Here's a few that are on my radar right now…
Geo Fencing Plugin
I've played around quite a bit with Geolocation and even the background geolocation plugin when I was creating RunTap, but this plugin allows you to track significant location changes and entry into specified regions.
This is a really simple plugin and I'm not sure why I haven't used it yet! A lot of application (think Facebook, Twitter) allow you to scroll to the top of a list by tapping the status bar. This plugin allows you to capture and utilise that event in your own application.
Push notifications are something I've neglected to do so far. This plugin allows for integration with the PushWoosh service which provides a simple solution for sending push notifications.
TestFlight SDK Plugin
Another popular service that I'm yet to utilise but am very keen to. User testing in the past for me has involved pestering people for their UUID's and painfully creating provisioning profiles for new users.
What plugins do you use most often? Let everyone know in the comments below. I'll be sure to follow up with some more posts once I try out some more plugins.
PS: This blog is very Sencha Touch heavy with a bit of PhoneGap Build splashed in – would you be interested in seeing a complete PhoneGap Build eBook?