Hi All,
I am trying out the AeroGear libraries to get a sense of them. As a newbie to the libraries, I took some notes about my first experience, and would like to share my notes with you. Comments, directions and suggestions are most welcome.
General:
- It's not clear if I can use the client libraries with my own server side, or if I can use the AeroGear controller without using the client libraries. So, my initial thought was, I definitely need the AeroGear controller to integrate my AeroGear powered client app with my RESTful backend.
- Maybe it is because the external libraries/tools used in the documentation apps releases new versions so fast, but getting the example app from github, running it on my machine and then modifying the app to play with it was harder than creating a new app and using AeroGear libs in them directly.
iOS:
- iOS API Cookbook is a really nice doc to get to know about how to use AeroGear iOS API.
- It is not clear enough how the backend side should be designed to work with client libraries, and this is problem if you start using AeroGear with client side libraries (a mobile developer will probably start so, like I did). If an iOS developer wants to use the library, she should go through AeroGear Controller docs to know how the server side should be. And here "AeroGear Controller User Guide" is not enough to figure the things out. Therefore, one needs to go through aerogear-controller-demo on github to understand the details (e.g. after struggling with how the server side APIs should be, it turned out that REST API itself was what i was looking for - so easy if it was stated clearly [see general section above for why I find this difficult]).
- xCode template is a really nice start, as it makes getting the first app running quick. But template creates a part of todo app which doesn't have authentication and therefore the app isn't functional.
Android:
- Unlike iOS development, developing Android apps and compiling them has many different alternatives. But as a maintainer of Android, Google puts Eclipse + ADT option in the first place. So, I think at least there should be an option for AeroGear to use it with Eclipse + ADT setup. Especially using community tools to build is initially harder for newbies (e.g. I tried to get maven running on eclipse using m2eclipse, and todo app does not compile on my eclipse while it does on terminal). Some bugs and configuration changes in maven, maven-android, android-sdk-deployer and m2eclipse slowed down the initial steps, i.e. it was not as quick and straightforward as AeroGear iOS API to get the first app running.
- Sending query parameters to server side is slightly different on iOS and Android (or maybe I couldn't find the same way, but Android sends where clause as JSON object, while iOS sends key-value pairs as HTTP GET query parameters). So, I needed to update my server side (which i developed for iOS) to use it for Android (or I could build my where clause in iOS manually).
HTML5:
- As AeroGear.js uses AJAX to connect to the backend, and in my case (also I believe in most cases) as my RESTful endpoint was not residing on the same host with my app, I needed to use jsonp data type, which requires different response format. Therefore I needed to update my server side (again - it was designed for iOS and updated for Android).