I'm considering developing apps for Android and Windows Phone 7 that allow the user to read content from an online producer (newspaper/magazine/blogs etc). This provider has a REST API that should allow for straightforward access to the content. A few questions I have:
I saw an OData demo, where getting data from a feed was super easy, with no parsing of any sort required. Is it worth building an OData provider on top of the publication's existing API, just to make it easier for the mobile apps to get data?
I have heard that C++ can be used on wp7 and Android. Is there any reason to develop an app core in C++, then interact with the device APIs in C#/Java? Or is the core logic layer of the app so thin that it's not worth the hassle? It seems like there's really not that much to developing a publication reader app - basically just a GUI on top of an API that provides all the data.
Or, would it make more sense to just develop a mobile version of this publication's web site? Then there could be one service for all mobile platforms. What are the pros and cons of an app that runs on the device as opposed to a website specially built for mobile devices? (Like the Gmail, Google Docs, and GTalk "apps" for the iPhone.)
Thanks.
C++ is not a development language for Windows Phone 7. There are two development platforms for WP7: Silverlight and XNA. There is no possibility of interop with a C++ module.
As far as I know, C++ cannot currently be used to develop WP7 applications. I would check on that before you try to go too far down a cross-compatibility road.
That said, the UI between WP7 and the iPhone is really, really different - the backend code is so small in comparison to well-written UI later, I'd just write two separate apps. It may seem like a time savings but either your app is going to look like it does not belong to one platform or the other, or you'll be spending more time trying to keep the compatible stuff working OK on two platforms.
Related
I am quite confused with the info I read online.
Some say for IOS apps,
Apple restricts developers to writing iPhone applications in
Objective-C, C, C++ or JavaScript as executed by the iPhone OS WebKit
engine.
Apps must be originally written in one of these languages and may only
use Documented APIs in a manner prescribed by Apple. Only code written
in Objective C, C, or C++ may compile and directly link against the
Documented APIs.
while Android apps use Java.
Then I also came across jquery mobile for cross platforms. So I am not sure which route I should take for developing an app. I prefer jquery mobile of course as I think it is not ideal to use two different languages to develop an app. And it takes time to learn Java and Objective-C.
So I want to know - can I just use jquery mobile to develop an app for IOS or Android?
Below is tutorial on developing an app by using jquery mobile,
http://www.noupe.com/tutorial/jquery-mobile-tutorial-creating-a-restaurant-picker-web-app.html
Take a look at my other answers related to this theme:
Hybrid apps vs Native apps: Hybrid vs native apps/
Mobile App vs Web App - Apple no longer accepting web apps?: https://stackoverflow.com/a/14436328/1848600
Tutorials: https://stackoverflow.com/a/14375842/1848600
To make a story short. Hybrid apps are still more then acceptable in Apple app store, you just need to accept some guidelines like:
App must have native look and feel
Do not use 3rd party payment systems
Do not use server side technology to render page content, use ajax instead
There are a range of variables that you should consider before deciding which way to go, as the more you understand your business strategy and IT drivers, the better you will be able to decide which way to go.
Like
Performance
Usability
Maintainability
Budget
Time to Market
Resources
Even though the big corporates like LinkedIn and Facebook are ditching Hybrid, they actually are not [Another debate not related to this question]. Moreover, a lot of small and mid size companies go their own short and long term plans, spanning Hybrid and Native.
Like people will say that if you have small budget then go for Hybrid as you will be able to launch in multiple platforms, but on the other hand you have to think about the long term cost and many other parameters above.
The best Article that lays out, is following, really thought provoking
https://pixyflux.wordpress.com/2015/09/03/how-much-native-binary-vs-spectrum/
I have a question about mobile application development. I'm wanting to develop an application for my Kindle and looking through the tutorials I found that HTML5 CSS and JavaScript could be used to develop Mobile Applications instead of native Programming language like Java, Objective C and so on.
Don't get me wrong I have nothing against learning a little more Java and the Kindle/Android specific APIs. But knowing that you could use HTML5 CSS JavaScript for the Android, Blackberry and iOS platforms AND WEBSITES sound very interesting to me. I've have also seen Game frameworks like Play'n from Google that seems to do a pretty good job with HTML5 and JavaScript.
My question is, is it worth the learning curve of each individual API, and programming languages or are HTML5 CSS JavaScript just going to change the way we do front end development?
Any input on this will be very appreciated.
In general it is worth learning the native SDK for the platform you're targeting because you'll have maximum flexibility, best performance, broadest API coverage keeping up with the latest advances from the platform vendor (e.g. iCloud, Siri APIs etc), and you'll find plenty of open source software that's built by and for the platform's native developers (see http://cocoacontrols.com as one example). So it's definitely worth investing in a platform's native SDK, especially if the platform itself is proven to be successful, such as iOS and Android.
However, sometimes it can be more practical to build an app using Javascript/HTML5 frameworks like Titanium Appcelerator. This can be useful in controlled environments like enterprise apps where your customer base is limited, or just to rapidly prototype a concept.
I would consider a Javascript framework a disadvantage if my app or game had to compete in the open market / App Store against thousands of other native apps. If my competitors are using native code and can rapidly evolve their UX or features, I don't want to be "stuck" with a limited Javascript framework.
On the other hand, if I worked for say, a large supermarket and my job was to create an app that only their staff would use for a few hours a day to do inventory, a Javascript framework would help me prototype faster without any threat of competition or unexpected requirements.
Hope this helps.
This topic can be debated forever but this is my take on it:
If you need performance on a device (such as for a complex game), then it's better to go native because you can fine tune to the specific device or set of devices and platforms you are targeting.
If you can build your idea and have it scale and function well using Web Technologies then it would be wise to continue using Web Technologies because it's extremely easy to scale to multiple platforms with relatively little effort.
If you want to leverage cutting edge API's for a specific platform then it's better to go native
Personally I think that if your app is going to be complex (doing beyond the standard enterprise data API stuff), then it'll be easier to go native in the long run. I've leveraged both methods and whilst Web Technologies were incredibly easy to implement and prototype, implementing anything complex increased the amount of effort needed by a large amount to the point that it negated any time saved by not going native. Eventually I just decided to concentrate on native apps but your milage may vary as Web Technologies are increasingly improving.
How does one approach building the mobile app version of one's Rails app, with little to no mobile development experience? iOS, Android, one or the other, or both.
First, you might want to create (private) APIs for services your web app provides. The de facto standard for Android apps is REST-like endpoints that accept/return JSON. You can use whatever Ruby REST framework works best. Then you need to consider how you would authenticate Android apps, if needed. Do you use the same authentication database? Can you allow anonymous access, what parts of the app do you expose, etc.
Finally, you need to build the frontend. A few options here:
learn Android
hire someone to do it
use a framework that lets you develop using Web(-like) technologies: Thitanium, Rhodes, etc. The upside is that you get to use what you know and might also get an iOS app for free.
The downside is that you can never get the native performance, and look-and-feel might not be completely Android-like (never used Rhodes, so maybe it does this well enough, but still)
Consider using http://www.rhomobile.com/.
We will develop a, social network integrated mobile application which will need to access native device capabilities but 90% of the logic will be implemented in the HTML5/Javascript code posted by Ruby back end to the device. Thus, we would like to update or change the logic/GUI of the app without user involvement. We have strict deadline and have to support iOS, Android and Blackberry.
In this case, what approach would you recommend us? We considered the approaches below but could not decide since we do not have any experience with mobile development even if we are experienced in Ruby, C/C++, Java, Javascript, Flex.
Our considerations:
Develop native apps for each platform and embed the native browsers
to implement our logic, which can take too much time.
Use one of the frameworks for cross-platform development such as
PhoneGap or rhomobile. In this case, we are afraid of facing some performance issues. We would love to hear the experience of developers with those frameworks.
Use Adobe Air for accessing the device and its WebKit component for the rest.
First, I hope you understand that there is no simple answer. At this junction, having been looking at cross-platform solutions for mobile development for two years, I feel that in order to get fully native UI look, and to access all the device and UI features, one is forced to produce native application on each platform.
But, since you asked about cross-platform tools, here's a list of the main contenders:
Sencha http://www.sencha.com/products/touch “Sencha Touch is the world's first app framework built specifically to leverage HTML5, CSS3, and Javascript”
Dojo http://dojotoolkit.org “Dojo saves you time, delivers powerful performance, and scales with your development process”
Phonegap http://www.phonegap.com “PhoneGap is an open source implementation of open standards”
jQuery Mobile http://jquerymobile.com “Touch-Optimized Web Framework for Smartphones & Tablets A unified user interface system across all popular mobile device platforms”
Rhomobile http://rhomobile.com “Free and open source mobile application framework”
Titanium from Appcelerator http://www.appcelerator.com
There are plenty of comparisons online, including on SO, and this fellow actually tried to use several platforms, code included.
Anecdotally, I have seen Phonegap produce a rather iPhone-centric look, that may not mesh well with Android, plus showing performance problems when loading screens (there may be workarounds via pre-loading). Also, access to more complex devices was limited, or at least lagging. Rhomobile is a good fit for data-driven apps (simple display of large databases), but architecturally could show performance issues, so check for yourself. Personally I did not get into Sencha, Dojo seemed a little small, and Titanium showed dated architecture. So next time I'm attempting a cross-platform app, I'll give jQuery Mobile a serious try.
Let us know what you pick and how it works out.
Iam using this rhomobile rhodes for my cross-platform development App which will run in Android, Blackberry and iPhone.
We have developed application and sucessfully runned in all devices without any issues. we used ruby for backend webservice call, And remaining app is constructed with HTML5 and java Script. I didn't face any issues regarding rhomobile.
intially we faced memory issues, But later on we resolved this issue by implementing local storage for our App. For android it wont supports local storage so we used Rhom Storage only for Android Device.
Sounds like a project doomed to fail.
If I were you, I'd build a mobile-friendly site for all 3 platforms if deadline is tight. What native features do you even need, first off? If it's something like a camera, you're better off just build a native app for all 3.
More and more clients wants to have cross-mobile apps (mainly the combination of Android, iPhone and BB).
What's the best way to do it?
Use multi-platform tools like PhoneGap or similar? This tool introduces another layer and the developer would depend on it.
Hire 3 developers to develop the app for each platform? This is costly.
Something else?
Develop a web app optimized for mobile browsers.
If you must develop a native app, don't assume that 3 apps = 3 times the cost. Lessons learned from the first version of the app will make it faster to develop subsequent versions. This is especially true if you can leverage reusable components. For instance, I've developed a cross-platform app in which a web service does the majority of the heavy lifting. Each of the native apps was mostly UI code.
As you said:
Quick & cheap & limited - option 1.
Fullfeatured & custom-designed & costly - option 2.
You choose.
For me - I hate crappy mobile apps so I'd never go with option 1. The competition is so big that if you think of making something mediocre then better not even start.
If you need something quick: as #dbyrne noted, create a dedicated full-featured mobile web page. This will be fast and a lot of users prefer good mobile page to yet another application on the mobile phone.
At least for iOS and Android, the browsers available are sufficiently robust that a web-based application is probably a reasonable place to start. Blackberry might possibly be an issue, depending on what you want to accomplish, and what features and capabilities you require.
I don't like cross-platform packages, especially not across such diverse platform architectures. What you'll wind up with is a Blackberry app that happens to run on an iPhone, and the odds are that something like that will be close to unusable.
Starting web-based has some definite advantages: it's low-cost, and will allow you to quickly "mock up" and deploy new functionality to all users of the app, and give you an opportunity to collect feedback and do testing that would make implementing the app natively on any given platform a lot simpler.