Chương 1: TỔNG QUAN VỀ LẬP TRÌNH DI ĐỘNG 1. Lập trình di động và lịch sử phát triển Lập trình di động có lẻ là một từ không hề xa lạ với tất cả chúng ta. Trong khoảng thời gian gần đây, lập trình di động đang phát triển rất mạnh mẽ, hàng ngàn, hàng triệu ứng dụng của điện thoại thông minh được ra đời mỗi năm. Trên thị trường ứng dụng di động hiện nay, 3 hệ điều hành chiếm thị phần cao nhất là Android, iOS và Windows Phone, tiếp sau đó là một số hệ điều hành khác như BlackBerry… - Android Android là hệ điều hành mã nguồn mở dựa trên nền tảng Linux dành cho thiết bị di động như điện thoại thông minh và máy tính bảng.
Android được phát triển bởi Open Handset Alliance, quản lý bởi Google và một số công ty khác. Android luôn chiếm hơn 70% thị phần của mảng di động. Đa số ứng dụng Android được viết bằng ngôn ngữ Java, do đó các bạn lập trình viên Java có thể dễ dàng chuyển hướng qua mảng này. Giao diện người dùng của Android dựa trên nguyên tắc tác động trực tiếp, sử dụng cảm ứng chạm tương tự như những động tác ngoài đời thực như vuốt, chạm, kéo dãn và thu lại để xử lý các đối tượng trên màn hình.
Các thiết bị Android sau khi khởi động sẽ hiển thị màn hình chính, điểm khởi đầu với các thông tin chính trên thiết bị, tương tự như khái niệm desktop trên máy tính để bàn. Màn hính chính Android thường gồm nhiều biểu tượng (icon) và tiện ích (widget). Giao diện màn hình chính của Android có thể tùy chỉnh ở mức cao, cho phép người dùng tự do sắp đặt hình dáng cũng như hành vi của thiết bị theo sở thích. - iOS iOS là một hệ điều hành điện thoại di động được phát triển bởi Apple và phân phối độc quyền cho phần cứng của Apple.
Ban đầu, iOS được công bố năm 2007 cho IPhone, sau đó được mở rộng để hỗ trợ các thiết bị khác của Apple như iPod Touch (tháng 9 năm 3 2007), iPad (tháng 1 năm 2010), iPad Mini (tháng 11 năm 2012) và thế hệ thứ hai của Apple tivi trở đi (tháng 9 năm 2010). Giao diện người dùng của iOS được dựa trên khái niệm về thao tác trực tiếp bằng tay, sử dụng các cử chỉ đa cảm ứng. Các yếu tố giao diện điều khiển bao gồm các thanh trượt, công tắc và các nút. Tương tác với các hệ điều hành bao gồm các cử chỉ như chạm, trượt, vuốt.
Từ ngày ra đời và phát triển hệ điều hành iOS đã trở thành một xu hướng trên toàn cầu với sự phát triển thịnh hành của dòng điện thoại smartphone. - Windows Phone Windows Phone là hệ điều hành dành cho điện thoại thông minh của Microsoft, thay thế cho nền tảng Windows Mobile. Dù vậy hiện tại hai hệ điều hành này vẫn chưa tương thích được với các phiên bản cũ do thời gian phát triển quá nhanh. Windows bắt đầu được ra mắt chính thức vào tháng 2/2010 ở triển lãm Mobile World Congress diễn ra ở Barcelona, Tây Ban Nha, đến tháng 10/2010, 10 thiết bị Windows Phone đầu tiên đến từ HTC, Dell, Samsung, LG đã được ra mắt và bán ra rộng rãi trên thế giới một thời gian sau đó.
Windows Phone có giao diện người dùng được Microsoft gọi với cái tên "Metro". Màn hình chính, có tên là "Start Screen", được cấu tạo bỏi những "Lát Gạch" (Live Tiles). Những viên Gạch này link đến những ứng dụng, tính năng, chức năng và những thứ khác (như tên danh bạ, bookmarks, tập tin nhạc. Người dùng có thể thêm, sắp xếp hoặc xóa Gạch, tuy nhiên nó không đồng nghĩa việc gỡ ứng dụng ra khỏi thiết bị.
Trên đây là 3 hệ điều hành điện thoại di động phổ biến nhất trên thế giới. Với những hệ điều hành trên, việc xây dựng một ứng dụng di động đều phụ thuộc vào ý định của người lập trình. Với mỗi hệ điều hành, các ứng dụng di động đều rất phong phú và đa dạng. Các loại hình phát triển và các tính năng.
Hiện nay, phát triển một ứng dụng di động được chia làm ba loại chính: Native App, Mobile Web App và Hybrid App. Mỗi loại sẽ có một đặc điểm riêng của mình. - Native App 4 Đây là phương tiện mạnh mẽ và phổ biến nhất được các lập trình viên sử dụng để phát triển các ứng dụng cho thiết bị di động. Hiểu 1 cách khái quát thì đây là cách thức phát triển dựa vào các công cụ lập trình gốc được các hãng phân phối.
Ví dụ như với Android chúng ta có Eclipse + Android SDK hoặc sử dụng Android Studio của chính Google, với iOS chúng ta có xCode đặc trưng của MacOS, với Window Phone thì chúng ta có Visual Studio và một số IDE của hãng thứ 3 khác… Điểm mạnh của native app là lập trình viên có thể sử dụng được hết sức mạnh của hệ điều hành, và ứng dụng chạy mượt mà mà hơn. Không những vậy hiện này đã có một số công ty đã phát triển công nghệ sử dụng một ngôn ngữ chung (C#, Javascript…) để viết các ứng dụng native cho nhiều nền tảng (Android, iOS, Window phone). Ví dụ như Xamarin, Titaninum, NativeScript, Rem Object… là các công nghệ đa nền tảng (cross-platform), bạn chỉ cần biết một ngôn ngữ thì có thể viết được các ứng dụng native. Tuy vậy điểm yếu của native app là cần nhiều lập trình viên để tạo ra các ứng dụng cho từng nền tảng, dù hiện này các công nghệ cross-platform mới như Xamarin, Titaninum… đã giúp các lập trình viên giảm bớt khối lượng code phải viết, nhưng vẫn phải cần các lập trình viên chuyên cho từng nền tảng.
Vì thế ứng dụng ra thị trường thường chậm hơn và chất lượng giữa các ứng dụng trên từng nền tảng có thể không đồng đều. - Mobile Web App Bản chất ứng dụng chỉ là webview được nhúng file html, css, js vào trong đó, hoặc nó truy cập trực tiếp vào website nhà cung cấp, hoàn toàn được phát triển bởi các lập trình viên web. Điểm mạnh của nó là có thể tạo ứng dụng rất nhanh, phù hợp với những ứng dụng có tính marketing cao, không phụ thuộc vào hệ điều hành, rất tiết kiệm chi phí (không cần phải thuê thêm các lập trình viên di động cho từng nền tảng). Nhưng bù lại nó hầu như không có khả năng tương tác với hệ điều hành, hiệu năng thấp, trải nghiệm người dùng không cao và chỉ hoạt động khi có internet.
Mobile webapp hoàn toàn không phù hợp với nhưng ứng dụng có tính phức tạp cao, yêu cầu trải nghiệm người dùng lớn. - Hybrid App 5 Đây là 1 “con lai” của Native và Webmobile. Bản chất của Hybrid là giao diện được viết bằng ngôn ngữ HTML, CSS, Javscript nhưng nó cho phép gọi được các API của hệ thống để thao tác với hệ điều hành (đọc ghi file, bluetooth, camera, sensor). Vì vậy hybrid vừa tận dụng được sức mạnh của Mobile webapp vừa khả năng thao tác hệ thống của Native app.
Trong tương lai công nghệ Hybrid hứa hẹn sẽ là sự thay thế hoàn hảo có các ứng dụng mobile hiện nay. Đại diện cho công nghệ Hybrid này có thể kể đến PhoneGap, Ionic, Trigger.IO… 6 Chương 2: IONIC FRAMEWORK, ANGULAR JS, APACHE CORDOVA VÀ CÁC VẤN ĐỀ LIÊN QUAN 2. Angular Js là gì? AngularJS là một dự án mã nguồn mở được phát triển đầu tiên bởi Miško Hevery một nhân viên của Google. Hevery bắt đầu nghiên cứu và phát triển dự án vào năm 2009 và phiên bản 1.0 được cho ra mắt vào năm 2012.
Do sự hữu ích của dự án này nên Google quyết định là công ty chính thức đứng đằng sau hỗ trợ sự phát triển của Angular JS. Angular JS là một khung làm việc được viết bằng Javascript (hay còn được gọi là Javascript Framework). Angular JS không chỉ đơn giản là một thư viện mà nó còn là một framework. Khác với các thư viện Javascript như jQuery, Angular JS đưa ra hướng dẫn cụ thể hơn cách cấu trúc mã lệnh HTML và Javascript.
Các đặc tính của Angular Js Angular Js bao gồm các đặc tính cơ bản sau: Angular JS là một Framework phát triển dựa trên Javascript để tạo các ứng dụng web phong phú. Angular JS thường dùng để phát triển frontend (giao diện khách hàng) thông qua các API để gọi dữ liệu, sử dụng mô hình MVC rất mạnh mẽ. Mã nguồn Angular JS tự động thích ứng với các trình duyệt khác nhau nên bạn không cần phải lo vấn đề tương thích trình duyệt. Là mã nguồn mở, hoàn toàn miễn phí và được phát triển bởi hàng ngàn các lập trình viên trên thế giới.
Chung quy lại có thể hiểu khi làm việc với Angular JS giống như là đang làm việc với Ajax, sử dụng cơ chế Bing Data, hoạt động theo mô hình MVC và sử dụng Service để tương tác với dữ liệu từ server. Các thành phần chính của Angular Js Angular JS được chia làm ba thành phần chính sau đây: 7 Ng-app: định nghĩa này chỉ thị một kết nối ứng dụng Angular JS tới HTML. Ng-model: chỉ thị này liên kết với dữ liệu của ứng dụng Angular. Ng-bind: chỉ thị này dùng đưa dữ liệu vào HTML tags.
Các tính năng của Angular Js Sau đây là các tính năng cốt lõi quan trọng trong Angular JS Data-binding: (liên kết dữ liệu) tự động đồng bộ dữ liệu giữa model và view. Scope: (phạm vi) Đây là những đối tượng kết nối giữa Controller và View. Controller: Đây là những hàm javascript xử lý kết hợp với bộ điều khiển Scope. Service: Như tôi đề cập ở trên, AngularJS sử dụng các API được xây dựng từ các web service (PHP, ASP) để thao tác với DB.
Filters: Bộ lọc lọc ra các thành phẩn của một mảng và trả về mảng mới. Directives: đánh dấu vào các yếu tố của DOM, nghĩa là sẽ tạo ra các thẻ HTML tùy chỉnh. Templates: hiển thị thông tin từ controller, đây là một thành phần của views. Routing: chuyển đổi giữa các action trong controller.
MVC: Mô hình chia thành phần riêng biệt thành Model, View… Deep Linking: Liên kết sâu, cho phép bạn mã hóa trạng thái của ứng dụng trong các URL để nó có thể đánh dấu được với công cụ tìm kiếm. Dependency Injection: Angular giúp các nhà phát triển tạo ứng dụng dễ dàng hơn để phát triển, hiểu và thử nghiệm dễ dàng. Ưu và nhược điểm của Angular Js Ưu điểm: Angular cho phép tạo ra các ứng dụng một cách đơn giản, code sạch. Angular sử dụng data bind giống .NET với tính năng liên kết với HTML nên giúp người dùng cảm thấy dễ chịu.
Angular đang ở giai đoạn thử nghiệm. Angular có thể chạy trên hầu hết các trình duyệt điện thoại thông minh.