Xamarin, Objective C or Phonegap Which one is better? - iphone

I am new to iPhone development. There is a new project coming up. Please let me know which is the best among Xamarin, Native Objective C development or Phonegap for iPhone development. Is there any good Objective C framework available in that allows faster development?

If you already know csharp and you like it, I suggest you to try Xamarin tools. With Xamarin.Forms you can also write cross platforms apps with only one code.
If you know objective c or swift, and you like it, continue wit it if you don't have to do a cross platforms app. I left html5 at the end.

Related

iOS XCode native vs PhoneGap for speed of development

I'm aiming to do an app like Badoo:
http://itunes.apple.com/us/app/meet-new-people-chat-socialize/id351331194?mt=8
Basically it involves chatting with people and GPS geo-location.
Question is - I have two options:
A. Have this developed in native XCode for iOS
OR
B. Have this developed in HTML5 + PhoneGap
Assuming either route is with an experienced developer, how much time does B save over route A in terms of getting a viable product out?
Performance, speed, and UI are all important for this, so obviously native is ideal... but how much time would PhoneGap save in getting it out?
Thanks so much!
Have this developed in PhoneGap, as you can target multiple platforms. And also phonegap also supports geo location functionality. so its a win win with phonegap.
if you are going to target ONE platform, do the Xcode route. if you are going to target android and ios together, then please Phonegap.
I'm a fan of native development even if you are deploying to multiple platforms.
However, the main point is if you have skills in html/css/javascript and potentially want to support multiple platforms then by all means go with PhoneGap.
If you have skills in iOS development then go native and reconsider what to do if you want to support other platforms later.
IMO, once you've developed an application in one language, then the amount of effort required to do another version in Android, PhoneGap, or whatever is greatly reduced. If you know the target platform well it is painting by numbers.
If you are building for iPhone/iPad (JUST IOS), then xcode will be your best friend and it will be much faster to develop in xcode in that case, as documentation and sites like this one (stack over flow) have many code snippets around and it will make your life easier. And not to mention that storyboards are also excellent in making your User interface. If you take the xcode route, it will still take you roughly the same amount of time as phonegap.
HOWEVER, if you want to make the SAME app for iphone and android, then phonegap will save you 50% project time, and this only applies when you are talking about one app for both android and iphone
Just out of curiosity, where do your skills lie in? ios or html/css?

Question about making games in C and transfering them cross platforms (from iphone to android)

I want to build games in C on iphone (I know C# and Java right now, but i can learn C).
I know Android can run on Native Dalvik, can I easily transfer a game from iphone to Android for example..and to JTME.
I have books on android that explain about game development, but none of them actually talk about developing a game in C (or native dalvik)..
So the question is how easy it is to transfer a game written in C across platforms?
You can use Marmalade SDK take a look here Marmalade SDK
As far as I know, you can use C/C++ on both iPhone and Android for a game's "game" part, however the device related parts should be done with different code, might in Objective C on iPhone or Java on android.
You should try some open source game engine that supports both the platforms, you may check this SO question.
Hope that could be helpful
If you going to written games in basic 'C' language you can use it in android using NDK,
for reference check here,
http://developer.android.com/sdk/ndk/overview.html
http://mobile.tutsplus.com/tutorials/android/ndk-tutorial/
but i don`t know whether same code can be used for iphone.
The best approach, in my opinion, us to use C AND openGL code for the bulk of your work. C and opengl work on iphones, androids, and of course, macs and windows.
You will need some wrapper code for each platform. So objective-c for iphone, windows code for MS, and the android native toolkit wrapper code.
Once your app is started, all the "real" game coding in c and openGL will work on all the platforms

Flash Programming(Adobe Air) Vs Objective C?

This isnt a Programming quest but i couldn't think of a better place to ask this question..
I recently started Developing Apps for iPhone using Objective C and Apple xcode environment.now i am quite comfortable with Objective c and iPhone SDK. But now my Company has decided to stop using XCode Environment to build apps but use Adobe Air(Flash Programming) to build apps instead and i have been asked to start Studying Flash Programming and using Adobe Air.. since i couldn't find much information regarding developers or apps build with Adobe Air anywhere i had few questions in mind which i thought someone might be able to answer here
Yes Flash will have the best animations i guess but isnt iPhone's Core Animation Framework ,use of Open GL or use of Game Engine's like Cocos2d available for iPhone good enouf if compared with Adobe Flash??
The Utility Apps can be better build with Apple's own Development Environment even if entertainment apps that dont require much development task might be a bit easy with Flash
Apple Development Environment Xcode and iPhone Sdk must have tons of better api's and features then adobe air could offer??
I have no idea how actually Flash Programming is done.. so after getting comfortable with Objective C is it really worthwhile to just let it go and start studying Flash??
IT would be really great if someone can help me with which will be the right process to develop apps for iPhone Objective C or Adobe Flash ??
The advantage of flash, as sosborn said, is that you will be able to easily port the project to Android, iPhone, and other platforms. You guessed correctly when you said that apple's environment will be able to function with less issues. By going from flash to iphone, you may have some conversion issues to fix.
If the company wants to develop for multiple platforms, then that change is totally valid and smart. If the only reason is ease of development from a graphics standpoint, ask them to look into cocos2d. If they really must use flash graphics, they can be pretty easily set up for use with coco.

Is Titanium bugfree? and is it equally compatible for developing iOS apps as XCode and Objective-c?

Few days back i was pretty much sure that Titanium is a great IDE for developing iOS apps but in last few days i have gone through few articles about Titanium and some of these articles pointed that Titanium is not fully featured for iOS development and it is buggy as well.
SO i came here to my StackOverflow friends to know is it true? does someone really faced any problem or encountered any bug while developing an iOS app using Titanium.
Please Advise about should i use it or should i go for Objective-C?
Thanks.
I believe Titanium is probably more buggy than native Cocoa Touch libraries and is, by definition, not fully featured as native Objective-C development.
The main question before you choose your development way is: will you in future ever consider to port your iOS application to Android? If the answer is 'yeah!' and you don't know Java, but you are more familiar with web technologies like CSS, Javascript and HTML/HTML5 rather than C/C++/Objective-C, I think the natural choice should be Titanium.
On other hand, if you're quick in learning new languages and have some good experience with C/C++, Objective-C is the way - later on you probably can quickly learn Java and jump into Android platform.
Second criteria is: is Titanium capable of delivering UI/UX you'd like to have in your apps? Titanium successful stories can help you answer that question - Titanium: Applications Showcase. Also try many native apps check what they offer. Compare and make decisions.
Important: I've never tried Titanium myself. I just face the similar dilemma as you. I want to extend my mobile app dev skills into Android world and consider Titanium as one of ways to go (I know basic JavaScript/CSS/HTML5, but not Java).
EDIT: I've just checked out your profile and it seems you're coming from Android world. I'd add to my answer: if learning Java was easy for you and you're already familiar with ups&downs of Java development for Android, learning Objective-C should be easy. The main difference is that in iOS you have to manage memory yourself and it can be a little painful.
Some good stuff:
1. Memory Management Programming Guide
2. Learning Objective-C: A Primer
3. The Objective-C Programming Language
Titanium basically uses JavaScript for developing application in iOS and Android. If you are comfortable working in JavaScript and CSS you can try Titanium.
Its my personal opinion, try learning Objective C, its really great language. If you have knowledge of C or C++, then understanding the concepts of Objective C becomes easier.
Try Objective C, you won't be disappointed.
I'm using Titanium (and have been playing with it for a few months) and can say with definitive emphasis that it's buggy as hell. :-) If you're looking for a single-platform solution, ie only Android or iOS, and plan on only supporting that single platform, it's a no-brainer to avoid TiStudio.
What Titanium is trying to do is to abstract and simplify the underlying nature of the platform you're on. It doesn't do this fabulously, but for simple apps, I've had lots of success.
That said, because it's attention is split amongst three (with Blackberry support incoming) platforms, it will always lag behind the native dev systems, and always lack in advanced features. That's the trade-off.
All that said, TiStudio is lightyears better than TiDeveloper (Appcelerator bought Aptana and is now in the process of integrating Titanium development with the Aptana IDE), and they're really working hard to make the platform top-notch.
I've landed on it as a platform due to my abject hatred of Java (after two months trying to relearn Java using the native IDE path) and my desire to do cross-platform development. I'm also confident I can route around the Titanium bugs/flaws as I'm basically writing my own app development framework on top of the Titanium SDK, so I can automate things that suck, fix errant behaviors, etc. It's a lot of work.
But that's basically where mobile development is right now. You pick your poison. Stick with a native SDK and be locked into one platform and have to deal with an annoying language (both Java and Objective C are ancient by modern Python/Ruby/whatever standards), or try something like Titanium which offers simplicity and a more flexible language, but is less tightly integrated an more buggy.
Best of luck!

support iphone,ipad,android

develop android apps that should support iphone,ipad,android.is there any way for developing this kind of generic app or we need to develop aps depending on mobile os
Though it is possible to create an universal application for iphone and ipad i don't think you can do the same for Android.
In my opinion it is always better to port your application to Android based on your requirements so that you can take advantages of the API's that the platform is offering you.
You can try using a framework named Titanium Appcelrator. This framework will help you target iPhone, iPad, Android with the same code base. This also lets you access most of the Native hardware features available with these platforms but not all. It seems that this also may support Blackberry soon.
We are struggling with the same question at the moment. Since we are working for Android, Maemo, Meego, iPhone and Blackberry (+Symbian 3 soon), HTML5 looked promising, and we dedicated quite some time investigating it. The end result was HTML5 is not yet ready for the development we were hoping for. It's fine if you need simple functionality, but as soon as something more advanced is needed, you need to create a different version. Even if it suits your needs, every platform requires different HTML5-to-native bridge, and every platform has a different engine. As you can see, only front end part could be partially used.
In your case, you need two different applications, one for Android, another one for iPhone/iPad. Try to see if you could take advantage of HTML5, if not, you are unfortunately stuck with separate development for some time to come. Unless you will create a web app and use it with device's browser.
You can create common functionality libraries with C or C++ and use these libraries in iPhone/iPad and use Android's NDK tool to integrate theses libraries with Android
On Android, you're using Java as the main language, and you can also use C and C++ . On iOS, you're using Objective-C as the main language, and also can use C and C++. So the common denominator would be C (at least on the iPhone there are no C++ GUI classes). I have no idea about developing on Android, but on iPhone it's no fun to purely work in C (and I'm not sure if it's even possible, maybe it is but should I when working with Objective-C/Cocoa is fun).
What you can do is write generic logic and share that between both systems, like a library. For example, I worked on a project where we used a C++ SIP/VoIP library that also compiles and runs on Symbian. It shouldn't be a big problem to write C code that can be shared between iOS and Android, as long as it is mostly about logic and not about calling system-specific stuff (you can of course include system specific stuff and guard that with #ifdef but you don't want your library to have more system-specific than system-agnostic code, I guess). For example, if you intend to write a networked game you could implement the network protocol in a way that could be shared between iOS and Android.
But as soon as you're hitting the GUI level I don't think you can share any code, and even if you could you probably don't want to because if you use the native languages/IDEs you are faster designing the GUIs each in their respective main languages/IDEs than trying to find a common way and then have to live with compromises and trying to make it work on both systems all day long. Better to implement the GUI native to each platform (e.g. Xcode has a very good graphical tool called Interface Builder that can save a lot of work/typing).
we can go for the XML VM to run the android apps in iphone.
Check this for more info.
xmlvm.org