We just finished a very intensive application written in MonoTouch. The application accesses SAP data through the middle tier and provides this in the application. It also allows you to receive direct updates from an application in SAP again through the same middle tier.
We port this to Windows Phone and Android using MonoDroid.
It took me a while to convince the boss that MonoTouch is the way forward, and we pre-tried several different products, including jQuery mobile, ExtJS and Obj C.
The time I tried to convince him was the time to acquire Attachmate, and it looked, at times, how MonoTouch was doomed. Fortunately for us (me), Khamarin rose as the notorious Phoenix from the flame, and they continued to develop Mono * to what he is today.
As a C # developer (and Mono enthusiast), the main victory over Obj C or any of the HTML / JavaScript was the fact that I could use C # to do the job. The documentation was very good, and when doco didnโt quite cut it off (it was recently updated), the community did it.
The IRC channel is very active, and Xamarin staff and community evangelists are always ready to help or give an idea of โโthe problem. Like the mailing lists.
Another plus is the eco-systems that grow around MT. MT.Dialog makes the development of the UI table interface an absolute breeze compared to the Xcode equivalent. Coupled with this .Net BCL, which is admittedly a subset based on Silverlight, but it has everything from Serialization, Email to cryptography, etc. If .Net does not cover it, or if there is no specific Mono * project, you can still use ObjC plugins with your MT code.
I do not agree that MT "until it proves itself" as a proven platform. We use it, and although we are a relatively small company, there are many large companies that also use it. Some of the applications Apple presented in television ads here on Aus are reportedly written in MT.
To stay objective, the 2 minuses of MonoTouch for me were that you still need to read ObjC (although, tbh, I see nothing in common ... As a 'C #' developer, I should be able to read and write many languages โโanyway) and the fact that MonoDevelop has historically been a bit of a mistake.The main mistakes seem to have been crushed, and with his open source project you can always fix them and help the rest of us!
To answer your questions:
- We will need to store quite a lot of data on the client
Use the System.IO.Net classes in C #. If you are not sure about this, there are examples of examples in MSDN (MT hides the implementation of the iOS file storage)
- The client wants the application to work offline
they can do all this, but in my opinion, the Native app will always be better.
- Our skill set is a lot of C # ASP.Net web development. Definitely not Goal C
MonoTouch is C # - play your strengths and you have the app in a few weeks, not months!
My 2 pennies! I would not hesitate to repeat the same route again and again.