More about final beta at http://ionicframework.com/blog/the-final-beta/ |
Along with Visual Studio for Hybrid Mobile App development, I'm exploring Ionic Framework. Being an AngularJS developer Ionic Framework is a natural choice. As I write this blog, today the final beta of Ionic Framework is released. That means Version 1.0 is pretty close.
What's Ionic Framework?
It's a Phone Gap based Hybrid mobile app development framework. Phone Gap is great due to HTML/JS to code mobile apps. Ionic Framework adds AngularJS on top it. That means code is clean and can be sophisticated.
Why not just add AngularJS reference on Phone Gap (instead of Ionic Framework)? That's certainly an option but following are somethings to take care of
- Reference ngTouch AngularJS module - which handles 300 ms delay on touch.
- Routing / navigation on mobile phone can be complex. Angular-mobile-nav library is useful for small scale mobile apps.
- Mobile User Interface and Controls - custom develop or use directives, web components and styling out there on Internet. This is needed to make your app user friendly on mobile phone.
Above are taken care in Ionic Framework and it offers more,
*image reference http://ionicframework.com/docs/api/service/$ionicActionSheet/ |
Ready made web components - These are AngularJS directives. Ionic came up with Tabs, Side Menu, Action Sheets etc.
CSS - Styles that make the HTML code look very close to native application. Default CSS is developed using Sass.
Ease of development - Ionic wrapped multiple Cordova features and provided with additional ease. For example ionic serve launches app view in a browser. It live reloads code changes to the browser. Using Chrome Developer tools debugging and verifying functionality of most of the app (excluding native features) is pretty easy. By the way Chrome Dev Tools has in-built screen size emulation for various mobile devices.
Getting Started:
- Install Ionic by using node package manager npm install corodova ionic -g
- Start a project using pre existing templates, I prefer blank template ionic start my-project-name blank
- CD into the new folder and run ionic serve for launching app with boilerplate code in a browser
Folder Structure
Application code should be under the folder www. Index.html bootstraps AngularJS with ng-app directive. Under www/js app.js creates AngularJS module used in Index.html
// Dependent "ionic" AngularJS module has all required services and directives.angular.module('myMobileApp', ['ionic']);
.run function has certain boilerplate code for status bar and keyboard accessory bar
If it's a single view (or route) for the app ion-content embedded in ion-pane directive is sufficient get the job done. Below is a Hello World view.
<ion-pane><ion-header-bar class="bar-dark">
<h1 class="title">Hello World</h1>
</ion-header-bar>
<ion-content padding="true">
<h3>Hello Ionic World</h3>
</ion-content>
</ion-pane>
ng-controller can be tied up at any level in the markup (of course under ng-app)
Sample Tab View (view from tabs template downloaded through ionic start myApp tabs) |
When there are multiple views (or routes) use directive ion-nav-view. Routing in Ionic is based on UI-Router which works like a state machine. This is useful with mobile screens like Tabs and Side
Menu which have nested views. This works well with parallel views as well.
Define routes in app.js (preferably) in config function. Following are some sample routes.
.config(function($stateProvider, $urlRouterProvider){
$stateProvider
.state('list',{
url:'/list',
templateUrl: 'views/list.html',
controller: 'listController'
})
.state('details', {
url: '/details/:company',
templateUrl: 'views/details.html',
controller: 'detailsController'
});
$urlRouterProvider.otherwise('/list');ngCordova
ngCordova wraps PhoneGap Plug-Ins in AngularJS. In PhoneGap to access phone's native features PlugIns need to be used. They are also useful for code reusability across platforms. In an example to access Camera, a plug-ing need to be added using Cordova.
With ngCordova these plug-ins are encapsulated into AngularJS Services, so we could inject directly into app code and use native phone features easily.
At the time of this blog it's an Alpha release; So proceed with caution.
Use ngCordova module as a dependency to access all services that come with it. Here is a sample controller function taking a picture and setting to a variable on $scope. This variable is tied to img element in the view (markup)
App using ngCordova at work on my phone. |
$scope.captureAPic = function() {
$cordovaCamera.getPicture({
quality : 75,
destinationType : Camera.DestinationType.DATA_URL,
sourceType : Camera.PictureSourceType.CAMERA,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 320,
targetHeight: 480,
popoverOptions: CameraPopoverOptions,
saveToPhotoAlbum: true
}).then(function(imageData) {
$scope.myImage = "data:image/jpeg;base64," + imageData;
}, function(err) {
console.log(err);
});
Template
<button class="button" ng-click="captureAPic()">Start Camera</button>
<img src="{{myImage}}" width="320" height="480"/>
<img src="{{myImage}}" width="320" height="480"/>
Limitations
No Windows Phone support yet. This means one codebase for all major platforms is not quite true with Ionic framework (just yet). Having said that, some apps just work okay on Windows phone because of underlying Phone Gap support.
Ionic Framework point of view seems to be get major two platforms iOS and Android right at first.
In conclusion Ionic Framework is quite a promise. I developed two app for Android using the same. For me Beta turned out quite stable.
Break A Record - Play Store link bit.ly/break-a-record-android
Schedule and Feedback app for Google Developer Group - Hyderabad DevFest 2014 - bit.ly/dev-fest-hyd
It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Most of ideas can be nice content.The people to give them a good shake to get your point and across the command.
ReplyDeleteMobile App Development Company in Dubai
Android App Development Company in Dubai
Very nice post here thanks for it I always like and search such topics and everything connected to them. Keep update more information..
ReplyDeleteMobile App Development Company In Chennai
Android App Development Company In Chennai
Android Application Development Company In Chennai
Thanks for sharing your wonderful information...It's really nice blog...Keep updating more information from your blog. Web Design & Development Company in Bangalore | Website Designing Companies in Bangalore | Web Designing Companies in Bangalore | Website Design Company in Bangalore | Website Development Company in Bangalore
ReplyDeleteWelcome to the blog of Website Application Development, a blog that discusses the issues that are important to website application development. This blog was started to help website application development solve problems. We welcome you to post ideas and questions. We hope you find this website application development blog useful.
ReplyDelete