I'm doing a project over the summer that involves entirely re-writing a large application to be more modern and cross platform compatible. It needs to run on Windows, OS X, and iPad. An iPad build is a priority. It is preferred that it is fairly easy to convert into a web app in the future as well.
My current plan is to do all the GUI in HTML/CSS/JS, using Chrome Embedded Framework to render the pages and handle interactivity. This way all of the UI is cross platform on everything, and I just have to write platform specific code to display it. It also means that if/when I port it to the web, most of the UI is already in web compatible format. The rest of the application code itself should be mostly cross platform as well, just pure C++. There is no CEF for iPad so I'm considering using the UIWebView class to do the same thing. I'm curious what your take is on using HTML as a GUI on the iPad.
My main concerns are:
Performance - I don't know what the performance characteristics of UIWebView are as far as using it for a GUI goes. There will be a lot of interactive dialogs and even some animation required. I did some research into how you communicate to Objective-C from Javascript, and the most popular method (setting the document location to some custom URL like MyApp://, and extracting a message from the string) seems like it would be really slow.
Usability - iOS users are used to a certain standard of interactivity (e.g. really smooth transitions, draggable sidebars, everything is fast and polished). I'm confident I can pull this off on Windows/OS X using CEF, but not sure about iPad.
Thanks for your time!
I assume you are using a Mac with the latest version of XCode (or else you won't be able to publish to the App Store on Mac OS X or iOS) and C++. That aside, your best bet is going to be using two different toolkits. I recommend WxWidgets for Windows & Mac OS X (it provides native look & feels for both platforms) and the standard iOS toolkit for the iPad.
The problem with using a single toolkit for both platforms is how incompatible they are to each other. It is possible to use HTML5/CSS3/Javascript for a gui, but you will have to make three separate projects (one for each platform). Although, I know there is a toolkit that you can use to make desktop applications using HTML/CSS, but I don't think it's compatible with mobile devices.
If you are now wondering how companies make applications for iOS, Android, Windows, Mac OS X, and even Linux, is they have a couple developers who are specific to their platform. So their would be a group of Windows developers, another group of Mac OS X developers, and so on. Sometimes, if they use a cross-platform toolkit like WxWidgets or Qt, the different desktop developer groups are consolidated into a single desktop development group.
Making desktop & mobile applications is harder to do if there are only a few people working on the project.
I decided to go with HTML for desktop and iOS. Making 3 separate projects isn't really that difficult, and rendering with HTML solves most of the cross platform questions. Thanks for all your answers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With