I recently published a post on [the lessons I learned from 3 years of HTML5 mobile app development], and during that time I've also discovered many tools and services that have helped me throughout various phases of the development process. There's a few tools in here that are specific to [iOS development on a Windows computer], which poses its own challenges, but is certainly possible.
This article will summarise the most useful tools and services that I use, some of which I make use of almost every day and others which just solve really annoying problems that pop up every now and then. I'm going to leave out the [HTML5 mobile frameworks] themselves from this list (but for anyone wondering, I primarily use [Ionic] and [Sencha Touch], with a little [Phaser] thrown in for game development).
[PhoneGap Build] is the single most critical tool for me, without it I may have never even started developing mobile applications. PhoneGap Build allows you to create [hybrid mobile applications] by compiling a PhoneGap application on their cloud service, rather than having to have the native SDK's installed on your computer (which is required for a [standalone version of PhoneGap / Cordova]).
As far as I'm aware, it is literally the only way to build iOS applications if you do not have a Mac. When I first started developing mobile applications I didn't have a Mac, and I probably could not have afforded one at the time either. PhoneGap Build allowed me to start developing both iOS and Android applications with the tools I already had. To this day I still use PhoneGap Build in my projects and it just keeps getting better.
My [free eBook] is a great resource for anybody who wants to learn more about PhoneGap Build.
[GapDebug] is another tool that is critical to [my development process]. It's easy to debug HTML5 mobile applications on a desktop computer because you can just use the browser and [Chrome Dev Tools] (or the debugging tools of whatever browser you are using).
It's a different story when you install your application on a device though, you no longer have access to those debugging tools. GapDebug essentially gives you those browser debugging tools back whilst your app is installed on a device. You can debug on your computer whilst the application is running live on your device.
It also makes installing your application SUPER simple. Rather than having to install and sync iOS applications through the clunky iTunes program, you can simply drag and drop into GapDebug whilst your device is attached to your computer.
It took me so long to figure out how to create certificates, provisioning profiles and so on for iOS until I discovered [OpenSSL]. OpenSSL will allow you to [generate a certificate signing request] for creating your iOS developer or distribution certificate and can [create the .p12 personal information file] required for signing your application… WITHOUT A MAC.
OpenSSL, like PhoneGap Build, is a critical tool that will allow you to [build iOS applications from a Windows machine (or other operating systems)].
Many people are familiar with [Git] and [GitHub]. This advice isn't specific to HTML5 mobile app development, but if you aren't already using some kind of version control for your projects I would highly recommend [learning the basics of Git].
Git can be used with a service like [GitHub] or [BitBucket] where you can store your repositories. Like many others I used GitHub until I found BitBucket, which is essentially the same thing except free (even with multiple private repositories and team members). So if you're not using either, checkout BitBucket, and if you're already using GitHub… check out BitBucket.
This is the end of the "critical" tools and services that I use, and it bothers me that this has to be on the list. The final hurdle of submitting an iOS application to the Apple App Store from a non-Mac computer is uploading your .ipa file to [iTunes Connect]. To do this you will need to use Application Loader, which is a program that is… only available on Macs.
This means that you literally need to use a Mac for about 5 minutes. If you can't jump on a friends Mac quickly to use Application Loader then you can use [Macincloud]. Macincloud allows you to rent a virtual Mac machine and connect to it remotely. The service isn't great (it's pretty slow and painful) but if you buy prepaid credit it's pretty cheap and it will last you forever.
A lot of HTML5 mobile frameworks (most UI frameworks in general) use a font set for icons. It's much more lightweight to use a font than individual images or even a sprite sheet for all the icons within your application.
Frameworks like [Sencha Touch] and [Ionic] come with a [set of icons by default] that you can use, but sometimes the default icons won't hit the spot.
[IcoMoon] let's you pick out icons from a massive library and create your own customised icon pack that you can then include in your application.
This is probably my favourite discovery. I've always despised having to create [all the necessary icons and splash screen sizes for iOS and Android] (seriously, there's over 40 splash screens and icons you need to create).
Before I discovered the [Ionic resources tool] creating icons and splash screens was a long process in Photoshop, now I can generate all the files I need in a few minutes. Rather than having to create files individually for each size, I create a single 192 x 192 icon and a 2208 x 2208 splash screen and Ionic handles the rest.
There are some limitations with how you can design the splash screen, so I'd recommend you take a [look at this post for more information].
You don't need to be using Ionic for your application to use this tool either, just create a dummy application in Ionic, use the resources tool and copy and paste the icons and splash screens into your actual project.
[Ionic View] is an Ionic specific tool, but it has been a massive boost for my productivity. It's similar to [Hydration for PhoneGap Build] but just… better. Admittedly it has been a while since I've used Hydration but I always had trouble with it.
Ionic View allows you to easily test your application on a real device and it allows you to easily share it with others as well (simply by sending an email, no pestering people with iOS devices for their UDID anymore!).
All you have to do is create an [ionic.io] account and run the following command in your project: