Để có tài liệu tham khảo cho việc dạy và học lập trình phát triển ứng dụng cho thiết bị di động chạy trên nền tảng iOS, tôi đã chọn đề tài “Phát triển ứng dụng cho thiết bị di động trên
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌCNGÀNH MẠNG MÁY TÍNH & TRUYỀN THÔNG
Cần Thơ, 04/2015
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CẦN THƠ KHOA CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG
BỘ MÔN MẠNG MÁY TÍNH & TRUYỀN THÔNG
LUẬN VĂN TỐT NGHIỆP ĐẠI HỌCNGÀNH MẠNG MÁY TÍNH & TRUYỀN THÔNG
Trang 3tôi thực hiện đề tài này
Để hoàn thành luận văn tốt nghiệp này, tôi xin tỏ lòng biết ơn sâu sắc đến Thầy Ths Đoàn Hoà Minh đã tận tình chỉ bảo và hướng dẫn trong suốt quá trình thực hiện luận văn
Tôi chân thành cảm ơn quý Thầy, Cô trong Khoa Công nghệ thông tin và truyền thông, trường Đại học Cần Thơ đã tận tình truyền đạt kiến thức trong những năm học qua Với vốn kiến thức được tiếp thu trong quá trình học không chỉ là nền tảng cho quá trình nghiên cứu luận văn mà còn là hành trang quý báu để tôi bước vào đời một cách vững chắc và tự tin
Tôi xin gửi lòng biết ơn sâu sắc đến cha mẹ, gia đình, bạn bè, những người
đã luôn bên cạnh, chăm sóc, ủng hộ, động viên tôi trong suốt thời gian học tập và nghiên cứu
Cuối cùng xin chúc tất cả mọi người dồi dào sức khoẻ và thành công hơn nữa trong công việc của mình
Trân trọng kính chào
Cần Thơ, ngày 26 tháng 04 năm 2015
SINH VIÊN THỰC HIỆN
Tô Thế Duy
Trang 6Hình 2.2 Xcode phiên bản 6.3 trên App Store 13
Hình 2.3 Giao diện Xcode 14
Hình 2.4 Navigator area 15
Hình 2.5 Giao diện ứng dụng 16
Hình 2.6 Giao diện code 16
Hình 2.7 Giao diện quản lý chi tiết 17
Hình 2.8 Activity viewer 18
Hình 2.9 Utility area 18
Hình 2.10 Xcode nhận diện và cảnh báo lỗi 19
Hình 2.11 Bộ tài liệu hướng dẫn kèm theo Xcode 20
Hình 2.12 Danh sách popup hiện ra 20
Hình 2.13 iOS Simulator 8.2 – iPhone 6 21
Hình 2.14 Các thiết bị iOS Simulator 22
Hình 2.15 Bổ sung thêm các iOS Simulator và tài liệu trong Downloads 23
Hình 2.16 Mô hình MVC 24
Hình 2.17 Label và một số tuỳ chỉnh 25
Hình 2.18 Button và một số tuỳ chỉnh 26
Hình 2.19 Text Field và một số tuỳ chỉnh 27
Hình 2.20 Text View và một số tuỳ chỉnh 27
Hình 2.21 Ứng dụng ExApp1 28
Hình 2.22 Bài thực hành 1 29
Hình 2.23 Segmented Control và một số tuỳ chỉnh 29
Hình 2.24 Switch và một số tuỳ chỉnh 30
Hình 2.25 Slider và một số tuỳ chỉnh 30
Hình 2.26 Image View và một số tuỳ chỉnh 31
Hình 2.27 Picker View và một số tuỳ chỉnh 31
Hình 2.28 Ứng dụng ExApp2 32
Hình 2.29 Bài thực hành 2 33
Hình 2.30 View Controller và một số tuỳ chỉnh 33
Trang 7Hình 2.34 Tab Premier League khi chạy thử ứng dụng 36
Hình 2.35 Bài thực hành 3 37
Hình 2.36 Web View và một số tuỳ chỉnh 37
Hình 2.37 MapKit View và một số tuỳ chỉnh 38
Hình 2.38 Ứng dụng ExApp4 39
Hình 2.39 Bài thực hành 4 39
Hình 2.40 Navigation Controller và một số tuỳ chỉnh 40
Hình 2.41 Toolbar và một số tuỳ chỉnh 40
Hình 2.42 Ứng dụng ExApp5 41
Hình 2.43 Bài Thực Hành 5 42
Hình 2.44 Mở SQLite Manager trong trình duyệt Firefox 43
Hình 2.45 Giao diện SQLite Manager 44
Hình 2.46 Ứng dụng ExApp6 44
Hình 2.47 Giao diện bài thực hành 6 45
Hình 2.48 Ứng dụng ExApp7 46
Hình 2.49 Bài thực hành 7 46
Hình 2.50 Ứng dụng ExApp8 47
Trang 8Bảng 2 Ý kiến nhận xét kiểm thử các bài thực hành 50
Trang 9người dùng cũng như các nhà phát triển ứng dụng iOS và Android là hai nền tảng
di động phổ biến nhất hiện nay Trong đó iOS là một nền tảng có tính bảo mật cao, hoạt động hiệu quả, sở hữu các ứng dụng chất lượng và có sự hỗ trợ tối đa cho người dùng lẫn các nhà phát triển ứng dụng Nhu cầu tìm hiểu và học tập về lập trình ứng dụng trên nền tảng này đang là một xu hướng mới đầy hứa hẹn trong tương lai
Khoa Công nghệ thông tin và Truyền thông trường Đại học Cần Thơ đã tiếp cận với việc lập trình ứng dụng cho thiết bị di động từ năm 2010 nhưng đến nay chủ yếu vẫn chỉ dạy lập trình phát triển ứng dụng trên nền tảng J2ME và Android Để có tài liệu tham khảo cho việc dạy và học lập trình phát triển ứng dụng cho thiết bị di động chạy trên nền tảng iOS, tôi đã chọn đề tài “Phát triển ứng dụng cho thiết bị di động trên nền tảng iOS”
Mục tiêu nghiên cứu của đề tài là cung cấp một tài liệu hỗ trợ cho người mới bắt đầu học lập trình phát triển ứng dụng cho các thiết bị di động chạy trên nền tảng iOS, có thể dùng để tham khảo trong các trường cao đẳng và đại học
Nội dung chính của báo cáo này được chia thành ba phần như sau :
- Phần giới thiệu : Giới thiệu bối cảnh, lý do chọn đề tài cũng như đối tượng
và phạm vi nghiên cứu, nội dung nghiên cứu và những đóng góp chính của đề tài
- Phần nội dung : Giới thiệu về nền tảng iOS, ngôn ngữ lập trình được sử dụng, bộ công cụ hỗ trợ lập trình Xcode và iOS Simulator Trình bày cơ sở lý thuyết căn bản theo các chủ đề và xây dựng các bài thực hành cơ bản tương ứng với các chủ đề
- Phần kết luận : Trình bày kết quả đạt được và hướng phát triển sắp tới của
đề tài
Trang 10becoming popular with everyone, bringing more options for users and application developers iOS and Android are two most popular mobile platforms today In that, iOS is a platform with high security, efficient operation, high quality applications and obtain maximum support for users and application developers The need to learn about applications programming on this platform is a promising new trend in future
Faculty of Information Technology and Communications of Can Tho University has access to the application programming for mobile device since 2010 but until now,it mainly taught programmer application development platform J2ME and Android For references for teaching and learning application development programming for mobile device running on iOS platform, I have chosen the theme
"Developing applications for mobile device based on iOS”
The goal of this research is to provide a support document for beginner programmers to develop applications for mobile device running on iOS, additionally, it can be used for reference in colleges and universities
Main content of this report is divided into three parts as below:
- Introduction: Introduction context, reasons to choose a subject and object and scope of the research, research content and the main contributions of the thesis
- The Content: Introduction to iOS platform, programming language used, the toolkit supporting Xcode and the iOS Simulator programming Presenting basic theoretical background on topics and build the basic exercises that correspond to the theme
- Conclusion: Present results and guide future development of the subject
Trang 11PHẦN GIỚI THIỆU
1 Lý do chọn đề tài
Ngày nay, các từ “smartphone”, “tablet” đã không còn xa lạ với người dân Việt Nam Theo số liệu thống kê của Hãng nghiên cứu thị trường GfK đã công bố ngày 5/6/2014 về thị trường smartphone Đông Nam Á quý I/2014, với tốc độ tăng trưởng 59%, Việt Nam trở thành quốc gia có tốc độ tăng trưởng smartphone nhanh
thứ 2 Đông Nam Á, chỉ sau Indonesia [1]
Cuốn theo sự tăng trưởng của smartphone, đó là sự phát triển của các Hệ điều hành chạy trên smartphone, cũng như số lượng ứng dụng cho các hệ điều hành này Trong đó Android với thị phần 84,7%, iOS 11,7%, Windows Phone 2.5% là những Hệ điều hành chạy trên smartphone phổ biến nhất thế giới hiện nay ( Theo số liệu quý 2/2014 của Hãng nghiên cứu thị trường IDC ) Về ứng dụng cho thiết bị di động, dựa trên dữ liệu từ Công ty phân tích App Annie năm 2014 cho thấy, số lượng ứng dụng trên Google Play là hơn 1,4 triệu ứng dụng, còn đối với App Store của Apple là 1,2 triệu ứng dụng So với năm 2012, số lượng ứng dụng trên Google Play chỉ có hơn 700.000 và trên App Store của Apple là 775.000 thì sau 2 năm, tốc
độ phát triển của các kho ứng dụng này tăng nhanh đến chóng mặt Nhu cầu sử dụng của người dùng ngày càng đa dạng, đội ngũ phát triển ứng dụng cũng ngày càng cho ra nhiều ứng dụng hơn để cạnh tranh Với sự phát triển đó, nhu cầu tìm hiểu về lập trình ứng dụng cho các hệ điều hành cũng tăng dần, đặc biệt là đối với các bạn sinh viên còn đang ngồi trên ghế nhà trường, luôn mang trong mình nhiệt huyết, khát khao khám phá công nghệ mới
Tuy nhiên, việc tìm hiểu cũng như tham gia các lớp học về lập trình ứng dụng trên các thiết bị di động hiện nay còn nhiều hạn chế và khó khăn Đặc biệt là các lớp dạy lập trình ứng dụng trên nền tảng iOS Ngay cả Khoa Công nghệ thông tin & Truyền thông Đại học Cần Thơ là một khoa đi đầu trong lĩnh vực đào tạo, nghiên cứu khoa học về CNTT & TT tuy đã đưa học phần lập trình cho các thiết bị
di động vào chương trình đào tạo bậc Đại học từ năm 2010 nhưng đến nay chủ yếu vẫn chỉ dạy lập trình phát triển ứng dụng trên nền tảng J2ME và Android, nội dung lập trình ứng dụng trên iOS theo kế hoạch sẽ được đưa vào giảng dạy từ năm 2016
Để có tài liệu tham khảo cho việc dạy và học lập trình phát triển ứng dụng
cho thiết bị di động chạy trên nền tảng iOS, tôi đã chọn đề tài “Phát triển ứng
dụng cho thiết bị di động trên nền tảng iOS”
Trang 122 Lịch sử giải quyết vấn đề
2.1 Trên thế giới
Hiện nay, nhiều trường Đại học trên thế giới, tiêu biểu là các trường Đại học
ở Mỹ đã có những nhóm nghiên cứu liên quan đến vấn đề xây dựng và phát triển ứng dụng trên các thiết bị di động nói chung và iOS nói riêng Thông qua việc nghiên cứu đó, nhiều tài liệu hướng dẫn cũng đã được soạn thảo hỗ trợ cho những người muốn trở thành nhà phát triển ứng dụng cho thiết bị di động chạy trên nền tảng iOS như:
- Head First iPhone And iPad Development, 2nd edition (O’Reilly - 2011)
- iPhone Application Programming (RWTH Aachen University - 11/10/2012)
- iOS 6 Application Development for Dummies (Neal Goldstein - Dave Wilson - 2013)
- Coding Together: Developing iOS 6 (Standford University - 15/1/2013)
- Programming iOS 6, 3rd Edition (Matt Neuburg – 3/2013)
- Developing iOS 7 Apps for iPhone and iPad (Standford University - 28/10/2013)
Mặc dù đây đều là những tài liệu được viết bằng tiếng Anh nhưng giới hạn
về ngôn ngữ hiện nay cũng đã không còn ảnh hưởng nhiều đến việc nghiên cứu nữa
Đa phần những lập trình viên đều được trang bị cho mình một số vốn kiến thức về ngoại ngữ, đặc biệt là tiếng Anh để có thể tiếp cận một cách nhanh chóng với sự phát triển của công nghệ thông tin hiện nay
2.2 Trong nước
Tại Việt Nam cũng đã có nhiều nghiên cứu về lập trình thiết bị di động trên iOS, nhưng đa phần là tập trung vào việc phát triển một ứng dụng cụ thể Tuy nhiên cũng có một số nhóm nghiên cứu đã chủ động viết tài liệu hướng dẫn thông qua việc dịch và biên soạn lại từ các tài liệu tiếng Anh đã có trước đó, giúp cho các lập trình viên Việt Nam dễ dàng tiếp cận hơn với việc lập trình cũng như xây dựng các ứng dụng trên iOS Tiêu biểu là các nghiên cứu :
- Xây dựng ứng dụng tìm kiếm đa phương tiện trên điện thoại iPhone – Đồ
án tốt nghiệp (An Thị Hồng - Đại Học Bách Khoa Hà Nội - 6/2010)
- Xây dựng hệ thống quản lý thông tin cá nhân trên iPhone (Trương Quốc Phú - Đại Học Bách Khoa Hà Nội - 6/2010)
Trang 13(Hoàng Kim Ngọc - Đại Học Dân Lập Hải Phòng - 7/2012)
- Tài liệu hướng dẫn xây dựng ứng dụng iPhone ( Nhóm nghiên cứu Nguyễn Anh Tiệp, Cao Thanh Vàng - 2013)
3 Mục tiêu đề tài
Mục tiêu nghiên cứu của đề tài là cung cấp một tài liệu hỗ trợ cho người mới bắt đầu học lập trình phát triển ứng dụng cho các thiết bị di động chạy trên nền tảng iOS, bao gồm phần cài đặt môi trường phát triển, giới thiệu ngôn ngữ lập trình, quy trình phát triển phần mềm di động, cơ sở lý thuyết và các bài thực hành cơ bản Tài liệu có thể dùng để tham khảo trong các trường cao đẳng và đại học
Đây cũng là cơ hội để tác giả củng cố kiến thức đã học, phát triển thêm kiến thức mới, đồng thời rèn luyện kỹ năng thực hành và năng lực nghiên cứu
4 Đối tượng và phạm vi nghiên cứu
- Đối tượng nghiên cứu :
Tài liệu về lập trình phát triển ứng dụng cho thiết bị di động chạy trên nền tảng iOS bao gồm phần lý thuyết và thực hành
Người mới học lập trình cho thiết bị di động, là sinh viên các trường cao đẳng và đại học hoặc người mới bắt đầu với lĩnh vực này
- Phạm vi nghiên cứu :
Phát triển ứng dụng cho thiết bị di động chạy trên nền tảng iOS chỉ bao gồm các nội dung cơ bản : tạo giao diện tương tác người dùng, giao diện mức thấp, lập trình hoạt động mạng, lập trình lưu trữ dữ liệu Chưa đi sâu vào các lĩnh vực chuyên biệt như trò chơi di động, tự động hoá, GPS và các dịch vụ dựa trên địa điểm, định
vị, ngân hàng, theo dõi, mua vé, các ứng dụng y tế di động, …
5 Nội dung nghiên cứu
Nội dung nghiên cứu bao gồm :
- Nghiên cứu về nền tảng iOS
- Nghiên cứu và cài đặt môi trường phát triển ứng dụng iOS
- Tìm hiểu cách lập trình bằng bộ công cụ Xcode của Apple
- Xây dựng các cơ sở lý thuyết, các ứng dụng đơn giản và các bài thực hành lập trình phát triển ứng dụng
Trang 146 Những đóng góp chính của đề tài
- Do một số yêu cầu đặc thù nên đề tài này mặc dù đã hình thành ý tưởng từ lâu nhưng đến nay vẫn chưa được thực hiện, lý do sinh viên không có máy Mac hoặc Hackintosh Thêm vào đó Khoa CNTT&TT vẫn chưa được trang bị phòng Thực hành mạng di động có loại máy này Nghiên cứu này sẽ dành một phần để giới thiệu về các phần mềm cần thiết và cách cài đặt để cho những người mới tiếp cận có một hướng đi đúng đắn trong việc tạo một môi trường có khả năng lập trình, xây dựng ứng dụng trên iOS
- Bản thân của đề tài là tập tài liệu về lập trình phát triển ứng dụng cho thiết
bị di động chạy trên nền tảng iOS cho người mới bắt đầu, có thể phát triển thành giáo trình phục vụ cho việc giảng dạy về lập trình ứng dụng các thiết bị di động trên nền tảng iOS
- Các ứng dụng được xây dựng để làm mẫu hoàn toàn có giá trị thực tiễn và khả năng phát triển tiếp tục
7 Kết cấu của luận văn
Luận văn được chia thành ba phần :
Phần mở đầu: Trình bày lý do chọn đề tài, tình hình nghiên cứu trong và
ngoài nước, mục tiêu và nội dung, phương pháp nghiên cứu của đề tài cũng như những đóng góp mới và những mặt hạn chế của đề tài
Phần nội dung:
Chương 1- Mô tả bài toán : Giới thiệu tổng quan về hệ điều hành iOS
cùng một số đặc điểm của hệ điều hành này và môi trường lập trình phát triển ứng dụng trên thiết bị di động trên nền tảng iOS Trong đó trình bày tổng quan về Xcode
và iOS Simulator, trình bày một số đặc điểm và tính năng của Xcode, iOS Simulator cùng với 2 ngôn ngữ lập trình được sử dụng là Objective-C và Swift
Chương 2- Thiết kế và thực hiện : Trình bày tiến trình phát triển một
ứng dụng iOS và mô hình MVC cùng với ưu, nhược điểm của mô hình này Hướng dẫn sử dụng các đối tượng cơ bản trong lập trình ứng dụng iOS để xây dựng một số
ứng dụng ví dụ mẫu và các bài thực hành cho sinh viên tự thực hiện
Chương 3- Kiểm thử và đánh giá : Kết quả kiểm thử và đánh giá của
một số sinh viên sau khi đọc tài liệu và thực hiện các bài thực hành
Phần kết luận: Trình bày những kết quả đạt được, kiến nghị về hướng
nghiên cứu phát triển tiếp theo của đề tài
Trang 15PHẦN NỘI DUNG CHƯƠNG 1 – MÔ TẢ BÀI TOÁN
1.1 Định hướng nội dung và cách tiếp cận
Với mục tiêu của đề tài là cung cấp một tài liệu hỗ trợ cho người bắt đầu học lập trình phát triển ứng dụng cho các thiết bị di động chạy trên nền tảng iOS, tài liệu
có thể dùng để tham khảo trong các trường cao đẳng và đại học, chúng tôi đã định hướng nội dung và phương thức tiếp cận như sau :
- Giới thiệu lịch sử ra đời và phát triển của nền tảng iOS và các ưu, nhược điểm, các thuận lợi và khó khăn của nền tảng này
- Hướng dẫn cài đặt môi trường phát triển, bao gồm :
+ Hệ điều hành Mac OS
- Trình bày cơ sở lý thuyết căn bản theo các chủ đề :
+ Lập trình xây dựng giao diện người dùng
Trang 161.2 Hình thức và logic trình bày phần lý thuyết, chọn lựa nội dung
Phần lý thuyết được trình bày theo các mảng sau :
- Giới thiệu về nền tảng iOS và môi trường lập trình phát triển ứng dụng cho thiết bị di động chạy trên nền tảng iOS, bao gồm ngôn ngữ lập trình, bộ công cụ Xcode, iOS Simulator và mô hình xây dựng ứng dụng iOS MVC
- Giới thiệu về định nghĩa, cách sử dụng và một số tuỳ chỉnh của các đối tượng trong ứng dụng iOS Chủ yếu xoay quanh các đối tượng phục vụ cho lập trình giao diện người dùng, hoạt động mạng, lưu trữ dữ liệu Đây là những đối tượng thường sử dụng nhất và được chọn lựa ra từ thư viện đối tượng của Xcode để giới thiệu cho những người mới bắt đầu với lập trình di động trên nền tảng iOS có thể làm quen và tiếp cận một cách nhanh chóng
- Giới thiệu một số vấn đề liên quan đến việc xây dựng một ứng dụng iOS như xây dựng CSDL với SQLite Manager, tìm hiểu về Gesture dành cho các thiết bị
di động, giúp cho người học sau một số bài thực hành có thể lựa chọn ngôn ngữ lập trình thích hợp
Logic trình bày phân thành các chương, mục từ thấp đến cao, có tính kế thừa Mỗi chương, mục có phần giới thiệu, hướng vận dụng trong lập trình, giải thuật, các câu lệnh cơ bản với các đối số vào ra tương ứng, ví dụ minh hoạ
Cấu trúc quyển tài liệu được trình bày theo thứ tự như sau :
Chương 1 : Nền tảng iOS và môi trường lập trình phát triển ứng dụng cho
thiết bị di động chạy trên nền tảng iOS
1 Giới thiệu hệ điều hành iOS
2 Giới thiệu ngôn ngữ lập trình trên nền tảng iOS
3 Giới thiệu về bộ công cụ Xcode và iOS Simulator
Chương 2 : Phát triển ứng dụng cho thiết bị di động chạy trên nền tảng iOS
1 Tiến trình phát triển một ứng dụng iOS
2 Mô hình MVC
Chương 3 : Thực hành xây dựng một số ứng dụng iOS bằng Xcode
1 Ứng dụng đầu tay Hello World
2 Xây dựng giao diện người dùng
3 Lập trình hoạt động mạng
4 Lập trình lưu trữ dữ liệu
5 Lập trình với ngôn ngữ Swift
Trang 17bài
Sau mỗi phần lý thuyết giới thiệu về các đối tượng trong ứng dụng iOS sẽ trình bày một ứng dụng ví dụ mẫu hướng dẫn cách sử dụng các đối tượng vừa được học để làm quen với việc xây dựng một ứng dụng có sử dụng các đối tượng này
Với mỗi ứng dụng mẫu sẽ có các mục :
- Kiến thức cần nắm vững : Trình bày những kiến thức mà sinh viên hoặc người mới bắt đầu học lập trình di động trên iOS cần củng cố, ôn luyện để chuẩn bị cho việc xây dựng ứng dụng sắp hướng dẫn
- Mô tả ứng dụng : Mô tả chức năng, cách thức hoạt động của ứng dụng và liệt kê các đối tượng sẽ sử dụng trong ứng dụng
- Mục tiêu cần đạt : Trình bày những mục tiêu về kiến thức, kỹ năng lập trình
mà sinh viên hoặc người mới bắt đầu học lập trình di động trên iOS cần đạt được sau khi hoàn thành xây dựng ứng dụng ví dụ mẫu này
- Xây dựng ứng dụng : Trình bày quá trình xây dựng ứng dụng theo các bước kèm theo lời hướng dẫn và các hình ảnh minh hoạ
Mỗi bài thực hành là một ứng dụng đơn giản nhưng hoàn chỉnh, phù hợp với phần lý thuyết tương ứng Mỗi bài thực hành tuy được hướng dẫn cụ thể nhưng vẫn
có những phần gợi ý để người học suy nghĩ sáng tạo, không chỉ làm theo hướng dẫn một cách máy móc
Bên cạnh những bài thực hành có hướng dẫn, chúng tôi có cho thêm bài làm
ở nhà để người học tự rèn luyện kỹ năng lập trình và củng cố kiến thức đã học
Trang 18CHƯƠNG 2- THIẾT KẾ VÀ THỰC HIỆN
2.1 Giới thiệu về hệ điều hành iOS
nhiều động tác bằng tay trên màn hình cảm ứng [2]
Phiên bản mới nhất của iOS hiện nay là 8.3 ra mắt ngày 24 tháng 03 năm
2015, dành cho tất cả các thiết bị kể từ iPhone 4s, iPod 5, iPad 2 trở lên và hệ điều hành này được xây dựng trên nền tảng OS X với phiên bản v10.10 trở lên
2.1.2 Lịch sử hình thành
Hệ điều hành này được giới thiệu tại Hội nghị và Triển lãm Macworld diễn
ra vào tháng 1 năm 2007 và được phát hành vào tháng 9 năm đó Khi đó, hệ điều hành này chưa có một cái tên riêng nên chỉ đơn giản là “iPhone chạy OS X” Ban đầu, ứng dụng bên thứ ba không được hỗ trợ Steve Jobs đã chỉ ra rằng những nhà phát triển có thể xây dựng các ứng dụng web mà “sẽ cư xử như những ứng dụng ban đầu trên iPhone” Vào ngày 17 tháng 10 năm 2007, Apple thông báo một bộ phát triển phần mềm đang được xây dựng và họ dự định “sẽ đưa nó đến tay của các nhà phát triển vào tháng 2” Ngày 6 tháng 3 năm 2008, Apple đã phát hành bản dùng thử đầu tiên, cùng với một cái tên mới cho hệ điều hành, đó là “iPhone OS”
Tháng 6 năm 2010, Apple đổi tên iPhone OS thành iOS Nhãn hiệu “IOS” (Internetwork Operating System) đã được Cisco dùng để đặt tên cho hệ điều hành của mình Để tránh các vụ kiện cáo, Apple đã xin giấy phép sử dụng nhãn hiệu iOS
từ Cisco
Trang 19Tương tự như kiến trúc cơ bản trong Mac OS X Nhân của iOS được dựa trên nhân của Mac cơ bản được tìm thấy trong hệ điều hành Mac OS X Ở tầng cao nhất, iOS hoạt động như một trung gian giữa phần cứng cơ bản và các ứng dụng xuất hiện trên màn hình Lớp trên cùng của nhân này là các lớp dịch vụ được sử dụng để thực hiện các ứng dụng trên nền tảng này
Kiến trúc của nền tảng iOS gồm 4 lớp sau : [3]
Hình 2.1 Kiến trúc hệ điều hành iOS
Ø Lớp Cocoa Touch nằm ở trên cùng và chứa các framework thường được
sử dụng bởi các nhà phát triển ứng dụng iPhone Cocoa Touch chủ yếu được viết
bằng Objective-C, dựa trên các tiêu chuẩn Mac OS X Cocoa API và đã được mở rộng, thay đổi để đáp ứng các nhu cầu của iPhone
Lớp Cocoa Touch cung cấp các framework sau cho sự phát triển ứng dụng
iPhone :
- UIKit Framework
- Map Kit Framework
- Push Notification Service
- Message UI Framework
- Address Book UI Framework
- Game Kit Framework
Trang 20Ø Lớp Media : Vai trò của lớp này là cung cấp cho hệ điều hành iOS các
dịch vụ đa phương tiện như âm thanh, video, ảnh động và khả năng đồ họa Cũng
như các lớp khác, Media cũng cung cấp các framework có thể được sử dụng khi
phát triển ứng dụng iPhone :
- Core Graphics Framework
- Quatz Core Framework
- OpenGL ES Framework
- iPhone Audio Support
- AV Foundation Framework
- Core Audio Frameworks ( CoreAudio, AudioToolbox, AudioUnit )
- Open Audio Library
- Media Player Framework
Ø Lớp Core Services cung cấp nhiều nền tảng để xây dựng các lớp ở phía
trên (Media, Cocoa Touch), bao gồm các framework sau :
- Address Book Framework
- Core Data Framework
- Core Foundation Framework
- Foundation Framework
- Core Location Framework
- Store Kit Framework
- SQLite Library
Ø Lớp Core OS là lớp dưới cùng của mô hình iOS và là trực tiếp nằm trên
các thiết bị phần cứng Lớp này cung cấp một loạt các dịch vụ bao gồm cả mạng mức thấp, tiếp cận với các phụ kiện bên ngoài và các dịch vụ cơ bản của hệ điều hành thông thường như quản lý bộ nhớ, xử lý tập tin hệ thống và các chủ đề :
- CFNetwork Framework
- External Accessory Framework
- Security Framework
- System
Trang 212.2.1 Objective-C
Vào đầu những năm 1980, Brad J Cox đã thiết kế ra ngôn ngữ
Objective-C dựa trên ngôn ngữ SmallTalk-80 Objective-Có thể hình dung rằng Objective-Objective-C là ngôn ngữ lập trình được đặt ở lớp trên của ngôn ngữ lập trình C truyền thống, điều này có nghĩa rằng ngôn ngữ C được bổ sung thêm các thành phần mở rộng (extensions) để hình thành nên một ngôn ngữ lập trình mới đó chính là Objective-C Ngôn ngữ Objective-C này cho phép chúng ta tạo và quản lý các đối tượng (Objects)
Từ năm 1988, Công ty NeXT Software nắm giữ bản quyền của ngôn ngữ
Objective-C này Họ đã phát triển các bộ thư viện và cả môi trường phát triển cho
nó có tên là NEXTSTEP
Năm 1994, NeXT Computer phối hợp với Sun Microsystems chuẩn hóa lại
NEXTSTEP trong bản đặc tả tên là OPENSTEP Bản hiện thực của OPENSTEP chính là GNUStep Một hệ thống bao gồm cả Linux kenel và môi trường phát triển GNUStep lúc đó được gọi là LinuxSTEP
Đến năm cuối tháng 12 năm 1996, hãng Apple đã mua lại công ty NeXT Software và môi trường NEXTSTEP/OPENSTEP đã trở thành thành phần cốt lõi của hệ điều hành OS X mà Apple giới thiệu sau này Phiên bản chính thức của môi trường phát triển này do Apple giới thiệu ban đầu có tên là Cocoa Bằng việc hỗ trợ sẵn ngôn ngữ Objective-C, đồng thời tích hợp một số công cụ phát triển khác
như Project Builder (đây chính là tiền thân của Xcode) và Interface Builder, Apple
đã tạo ra một môi trường mạnh mẽ để phát triển ứng dụng trên MAC OS X
Đến năm 2007, Apple tung ra bảng nâng cấp cho ngôn ngữ Objective-C và
gọi đó là Objective-C 2.0
Objective-C là một ngôn ngữ hướng đối tượng được mở rộng từ C, ngôn ngữ này được biên soạn để có thể xây dựng tất cả mọi thứ từ common line utilities đến animated GUI ( giao diện người dùng đồ hoạ ) và các thư hiện hoàn chỉnh Nó cũng
có thể tạo ra các công cụ để duy trì các framework lớn Objective-C là ngôn ngữ chính được Apple chọn để viết các ứng dụng cho hệ điều hành MAC, iPod và
iPhone [4]
2.2.2 Swift
Swift là một ngôn ngữ lập trình hướng đối tượng dành cho việc phát triển iOS và OS X, được giới thiệu bởi Apple tại hội nghị WWDC 2014 Swift được mong đợi sẽ tồn tại song song cùng Objective-C, ngôn ngữ lập trình hiện tại dành
Trang 22cho các hệ điều hành của Apple Swift được thiết kế là một ngôn ngữ có khả năng phòng chống lỗi cao Nó được biên dịch với trình biên dịch LLVM Một tài liệu 500 trang về Swift cũng được phát hành tại WWDC, miễn phí trên iBooks Store
Ngày 2 tháng 6, 2014, ứng dụng WWDC conference trở thành ứng dụng
Swift đầu tiên được phát hành [5]
2.2.3 So sánh Objective-C và Swift
Objective-C là ngôn ngữ lập trình đã được phát triển trong một thời gian dài
và có một cộng đồng đông đảo lập trình viên sử dụng Tạo điều kiện thuận lợi cho việc học hỏi, tham khảo các tài liệu, demo, các Project đã phát triển trước đó cho sinh viên
Mặc dù ngôn ngữ Objective-C vẫn còn rất được ưa chuộng nhưng theo Apple, Swift sẽ giúp phát triển ứng dụng nhanh hơn, dễ dàng hơn và trực quan hơn Những thay đổi sẽ giúp các nhà phát triển tạo ra các ứng dụng tuyệt vời một cách dễ dàng và đẩy chúng ra thị trường với tốc độ nhanh nhất từ trước tới nay
Swift hoạt động tương tự một phiên bản Objective-C đơn giản, với các lớp đối tượng được đơn giản hóa, và các dòng mã được sắp xếp hợp lý Với Swift, Các nhà phát triển sẽ có môi trường runtime tương tự Objective-C, do vậy nó rất quen thuộc và dễ quản lý
Ngoài sự đơn giản và phương thức sắp xếp hợp lý hơn cho việc sáng tạo ứng dụng, Xcode runtime được thực hiện trong thời gian thực cho Swift Viết một dòng
mã và bạn sẽ nhận được kết quả trong thời gian thực, và hình ảnh cũng có thể được xem từ bên trong IDE Xcode cũng sẽ dựng các kịch bản thực hiện trong các ứng dụng, vì vậy bạn cũng có thể quản lý tốt hơn một ứng dụng để tránh sự cố tràn bộ nhớ
Bằng cách cung cấp mã đơn giản hơn và IDE trực quan hơn, Apple đã sắp xếp hợp lý quá trình tạo ứng dụng Swift có thể làm việc liền mạch với Objective-C,
vì vậy các ứng dụng hiện tại có thể được cập nhật bằng Swift Các nhà phát triển cũng có thể sử dụng các công cụ hữu ích của Objective-C ngay chính trên Swift
Tuy nhiên, với chương trình đào tạo của Khoa Công nghệ thông tin và truyền thông trường Đại học Cần Thơ hiện nay chủ yếu là các ngôn ngữ lập trình C, C++, C#, Java, thì Objective-C chính là ngôn ngữ gần gũi và dễ dàng tiếp cận nhất đối với sinh viên
Vì vậy trong phạm vi nghiên cứu của Luận văn này, các ứng dụng ví dụ mẫu được xây dựng chủ yếu sử dụng ngôn ngữ Objective-C, tạo cảm giác quen thuộc khi
Trang 23xây dựng bởi ngôn ngữ Swift giúp sinh viên bước đầu tiếp cận và làm quen với ngôn ngữ lập trình mới đầy hứa hẹn dành cho iOS và OS X này
2.3 Giới thiệu về bộ công cụ Xcode và iOS Simulator
2.3.1 Tìm hiểu bộ công cụ Xcode
2.3.1.1 Giới thiệu về Xcode
Xcode là môi trường tích hợp (IDE) được Apple phát triển chạy trên hệ điều hành Mac OS để các lập trình viên có thể phát triển phần mềm chạy trên hệ điều hành Mac OS và iOS Phiên bản đầu tiên của Xcode được phát hành vào năm 2003
và phiên bản mới nhất hiện nay là 6.3 được ra mắt ngày 08/04/2015 với các tính năng mới được thêm vào như : bao gồm Swift 1.2 và các SDK cho OS X 10.10 Yosemite và iOS 8.3 Xcode được phát hành miễn phí cho người dùng Mac
download thông qua chợ ứng dụng App Store [6]
Hình 2.2 Xcode phiên bản 6.3 trên App Store
Trang 242.3.1.2 Tìm hiểu giao diện Xcode và một số tính năng
Giao diện làm việc của Xcode gồm có 5 phần chính :
Hình 2.3 Giao diện Xcode
Ø Navigator area : cho phép quản lý ứng dụng hiệu quả bằng cách quản lý
các tập tin, thư mục, quản lý các thông báo lỗi và cảnh báo, quản lý việc debug
Có thể chia Navigator area thành hai phần chính là Navigator selector bar và
Content area
Trang 25Hình 2.4 Navigator area
Trong Navigator selector bar gồm một số button chính sau:
- Project Navigator ( ): dùng để quản lý các tập tin của ứng dụng như thêm, xóa, gom nhóm Các tập tin quản lý sẽ được thể hiện trong Content area
- Find Navigator ( ): sử dụng để tìm kiếm một cách nhanh chóng các string trong ứng dụng, tìm kiếm nội dung mở rộng
- Issue Navigator ( ): quản lý các thông báo lỗi, cảnh báo của ứng dụng
- Debug Navigator ( ): theo dõi quá trình debug ứng dụng
ØEditor area : cho phép thiết kế giao diện, viết và sửa code cho ứng dụng Khi chọn tập tin storyboard bên Content area thì Editor area sẽ hiển thị giao diện
Interface Builder để thiết kế giao diện Tương tự với tập tin m và h thì Editor area
sẽ hiển thị nội dung code của tập tin
Trang 26Hình 2.5 Giao diện ứng dụng
Hình 2.6 Giao diện code
Trang 27chi tiết hơn Trong phần Interface Builder, chọn button Show Document Outline
( ) bên góc trái màn hình, một vùng quản lý phân cấp các đối tượng sẽ được hiển thị ra
Hình 2.7 Giao diện quản lý chi tiết
ØToolbar : cho phép thực hiện một số thao tác một cách nhanh chóng thông
qua các Button mà không cần phải dùng tới Menu Toolbar gồm một số thành phần sau :
- Run button ( ): dùng để chạy thử ứng dụng
- Stop button ( ): dùng để dừng việc chạy thử ứng dụng
- Scheme menu ( ) : dùng để lựa chọn iOS Simulator thích hợp để chạy ứng dụng
- Activity viewer : thông báo trạng thái của ứng dụng, cũng như hiện các
trạng thái lỗi, cảnh báo của chương trình (nếu có)
Trang 28Ø Utility area : được sử dụng để thay đổi các thuộc tính của đối tượng bên
Interface Builder, ngoài ra còn được sử dụng để lựa chọn và kéo thả các đối tượng, đoạn code mẫu vào Interface Buider và Editor
Utility area được chia làm 2 vùng chính là Inspector và Library Inspector
pane là vùng cho phép thay đổi thuộc tính của đối tượng Trên đầu của Inspector
pane là Inspector selector bar bao gồm các button hỗ trợ việc điều chỉnh thuộc tính Trên đầu của Libarary pane là Libaray selector bar bao gồm các button để
bạn có thể chọn lựa phù hợp trong việc sử dụng các đoạn code mẫu, các đối tượng
Hình 2.9 Utility area
Trang 29Trong Inspector selector bar, có hai button bạn cần lưu ý là Attribute ( )
và Quick Help ( ) Quick Help cho phép bạn tra cứu một cách nhanh chóng các đối tượng, hàm trong tài liệu kèm theo của Xcode Attribute cho phép bạn thay đổi các thuộc tính của đối tượng
Trong Library selector bar, có một số button quan trọng là Code snippets
( ), Objects ( ) Code snippets hiển thị cho bạn danh sách các đoạn code mẫu
để bạn lựa chọn sử dụng trong quá trình viết ứng dụng Objects hiển thị các đối
tượng của Xcode cho bạn sử dụng thiết kế giao diện ứng dụng [3] TV
Xcode cũng cung cấp một chế độ gỡ lỗi thông minh hỗ trợ người dùng trong việc phát hiện lỗi, cảnh báo lỗi
Trong nhiều trường hợp Xcode sẽ không chỉ báo cáo một lỗi mà nó sẽ trình bày một giải pháp tốt để khắc phục lỗi bằng cách nhấp chuột vào lỗi để sửa chữa Ví dụ như thêm một dấu chấm phẩy còn thiếu …
Tuy nhiên, Xcode chỉ hỗ trợ khắc phục một số lỗi cơ bản về cú pháp, các lỗi liên quan khác trong quá trình viết code lập trình viên phải tự giải quyết
Hình 2.10 Xcode nhận diện và cảnh báo lỗi
Hơn thế nữa, kèm theo Xcode là một bộ tài liệu hướng dẫn từng bước, chi tiết và tiện lợi nhằm hỗ trợ người dùng trong việc lập trình Trong quá trình viết ứng dụng, nếu bạn muốn tìm hiểu thêm một đối tượng, bạn có thể sử dụng tới bộ tài liệu này để có được hướng dẫn, ví dụ minh họa dễ hiểu
Trang 30Hình 2.11 Bộ tài liệu hướng dẫn kèm theo Xcode
IDE trong Xcode cung cấp nhiều công cụ và tính năng giúp người dùng dễ dàng lập trình hơn nhiều Một trong những tính năng là mã Sense hiển thị một danh sách popup, hiển thị các lớp và các thành viên sẵn có, chẳng hạn như phương thức,
thuộc tính … [1] TV
Hình 2.12 Danh sách popup hiện ra
Xcode hoạt động trên một cửa sổ đơn Trong Xcode các cửa sổ sử dụng để thực hiện các nhiệm vụ như thiết kế giao diện hay viết code đều diễn ra trên một cửa sổ duy nhất
Trang 312.3.2.1 Giới thiệu về iOS Simulator
iOS Simulator là một phần trong bộ công cụ kèm theo của phần mềm Xcode
Vì thế ngay sau khi Xcode được cài đặt, iOS Simulator cũng được cài đặt kèm theo
và có thể khởi động độc lập hoặc được gọi khi chạy các ứng dụng thông qua Xcode iOS Simulator chứa iOS SDK cho phép bạn chạy trên Mac OS để giả lập môi trường iPhone, iPad nhằm phục vụ cho việc kiểm tra và tìm lỗi của ứng dụng được viết ra trước khi kiểm thử ứng dụng trên thiết bị thật
Hình 2.13 iOS Simulator 8.2 – iPhone 6
Trang 32iOS Simualtor cho phép cài đặt mô phỏng nhiều thiết bị iOS khác nhau như iPhone, iPhone Rentina, iPad, iPad Rentina … với nhiều phiên bản iOS SDK khác nhau như 6.0, 6.1, 7.0, 7.1, 8.0, 8.1, 8.2 … Do đó người lập trình có thể dễ dàng xây dựng và kiểm thử ứng dụng của mình dành cho phiên bản iOS mới cũng như trên phiên bản iOS cũ
Hình 2.14 Các thiết bị iOS Simulator
Với iOS Simulator, người dùng có thể kiểm thử ứng dụng của mình về thiết
kế giao diện, về tính năng của ứng dụng, từ đó có thể khắc phục các lỗi phát sinh, tối ưu hóa ứng dụng trước khi bạn đem ứng dụng lên thiết bị thật
thể chạy chung với phần mềm Xcode hoặc chạy độc lập đều được Người dùng có thể tương tác với iOS Simulator thông qua bàn phím, chuột để nhập dữ liệu cũng như điều khiển các sự kiện của người dùng
Mặc định sau khi cài Xcode 6.2, iOS Simulator đã được cài đặt kèm theo để
hỗ trợ các thiết bị iPhone Rentina, iPad Rentina và iOS 8.2 Tuy nhiên nếu người dùng muốn iOS Simulator chạy các thiết bị iPhone, iPad thông thường và các phiên bản iOS thấp hơn như iOS 7.1, iOS 8.1 thì cần phải tải và cài đặt thêm iOS SDK
cho các phiên bản của iOS đó Để tải thêm, người dùng vào Xcode > Preferences >
Download Sau đó lựa chọn phiên bản iOS cần cài đặt thêm và tải về
Trang 33Hình 2.15 Bổ sung thêm các iOS Simulator và tài liệu trong Downloads
2.3.2.2 Một số hạn chế của iOS Simulator
Mặc dù iOS Simulator rất hữu ích trong việc kiểm thử ứng dụng trước khi đưa lên thiết bị thật, tuy nhiên bản thân iOS Simulator vẫn còn một số hạn chế nhất định :
- Đối với phần cứng, iOS Simulator vẫn còn khiếm khuyết ở một số điểm như không có camera, không có microphone, …
- Khi ứng dụng được chuyển đổi giữa các phiên bản của Xcode, các phiên bản của iOS cũng như các loại thiết bị khác nhau vẫn còn phát sinh lỗi do sự không đồng bộ giữa chúng, gây khó khăn cho các lập trình viên khi sử dụng lại và phát triển các ứng dụng đã có trước đó
2.4 Tiến trình phát triển một ứng dụng iOS
Tiến trình phát triển một ứng dụng iOS gồm 4 bước sau :
Bước 1 : Chuẩn bị hệ điều hành Mac OS
Bước 2 : Chuẩn bị bộ công cụ Xcode và iOS Simulator
Bước 3 : Xây dựng ứng dụng
Bước 4 : Đăng ký tài khoản iOS Developer để triển khai ứng dụng lên trên
thiết bị iOS thật và đưa ứng dụng lên App Store
Trang 342.5 Mô hình MVC
2.5.1 Giới thiệu về mô hình MVC
Model – View – Controller (MVC) là một chuẩn mực thiết kế ứng dụng
trong quá trình phát triển ứng dụng iOS mà theo đó các đối tượng tạo ra sẽ gán cho một trong ba nhóm vai trò sau: model, view, controller MVC không chỉ định nghĩa vai trò đối tượng đảm nhiệm mà còn định nghĩa cách giao tiếp giữa các đối tượng với nhau Tập hợp các đối tượng của nhóm trong mô hình MVC được biết đến như một layer
Hình 2.16 Mô hình MVC
- Đối tượng View là một đối tượng trong ứng dụng mà người dùng có thể nhìn thấy được Mục đích chính của đối tượng View là hiển thị dữ liệu từ đối tượng Model và cho phép thay đổi dữ liệu đó Trong iOS, UIKit Framework cung cấp một tập hợp các lớp View còn trong Mac OS, AppKit Framework cũng cung cấp một tập hợp tương tự
- Đối tượng Controller là đối tượng đóng vai trò trung gian giữa một hoặc nhiều đối tượng View với một hoặc nhiều đối tượng Model Đối tượng Controller sẽ phiên dịch hành động của người dùng được thực hiện trên đối tượng View, giao tiếp
dữ liệu mới hoặc thay đổi tới các lớp Model Khi một đối tượng Model thay đổi, một đối tượng Controller thông báo có dữ liệu mới cho các đối tượng View để các đối tượng này hiển thị dữ liệu đó
- Đối tượng Model đóng gói dữ liệu của ứng dụng, định nghĩa logic hay các thao tác tính toán với dữ liệu đó Hành động của người dùng trong lớp View mà tạo hoặc thay đổi dữ liệu sẽ kết nối thông qua đối tượng Controller và kết quả là tạo hoặc thay đổi dữ liệu của đối tượng Model Khi đối tượng Model thay đổi, nó sẽ thông báo cho đối tượng Controller và những thay đổi này sẽ hiển thị trong đối
tượng View [2] TV
Trang 352.5.2.1 Ưu điểm
Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế Do được chia thành các thành phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản, dễ nâng cấp, bảo trì,
2.5.2.2 Nhược điểm
Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng kềnh, tốn thời gian trong quá trình phát triển Tốn thời gian trung chuyển dữ liệu của các thành phần
2.6 Xây dựng một số ứng dụng iOS bằng Xcode
2.6.1 Xây dựng giao diện người dùng
Trang 36Với button, lập trình viên có thể lựa chọn một số định dạng button có sẵn, hoặc tùy chọn một dạng button khác tuỳ ý Không những thế còn có thể tùy chỉnh font chữ, màu chữ, màu nền của button hoặc thay thế button theo một hình ảnh được thiết kế trước
Trang 37Hình 2.19 Text Field và một số tuỳ chỉnh
Trang 382.6.1.3 Ứng dụng ExApp1 : Nhập và hiển thị thông tin người dùng
ØKiến thức cần nắm vững :
- Cách tạo một Project mới trong Xcode
- Cách ánh xạ các đối tượng từ Main.storyboard sang ViewController.h
- Cách sử dụng, các chức năng của Label, Button, Text Field, Text View
Ø Mô tả ứng dụng: Sử dụng các đối tượng Label, Button, Text Field, Text
View để tạo một ứng dụng cho phép người dùng nhập vào thông tin, sau đó hiển thị
ra các thông tin mà người dùng đã nhập
Ø Mục tiêu cần đạt : Sinh viên nắm rõ cách sử dụng một số đối tượng giao
diện người dùng cơ bản, làm quen với việc thiết kế giao diện và ánh xạ các đối tượng Thực hành truyền, nhận dữ liệu giữa các đối tượng Text Field, Button, Label
và hiển thị dữ liệu ra cho người dùng
Hình 2.21 Ứng dụng ExApp1
Trang 39Viết ứng dụng thực hiện phép toán +, -, *, / giữa 2 số được nhập vào từ Text Field và các phép toán được chọn từ các Button Kết quả hiển thị ra Label
Hình 2.23 Segmented Control và một số tuỳ chỉnh
Trang 40Được thể hiện dưới dạng một thanh bar nằm ngang, gồm track
đại diện cho một khoảng giá trị và thumb đại diện cho giá trị hiện tại Người dùng có thể thay đổi giá trị bằng cách trượt thumb dọc theo track
Hình 2.25 Slider và một số tuỳ chỉnh