Tải bản đầy đủ (.doc) (92 trang)

Nghiên cứu và xây dựng phần mềm bản đồ tìm kiếm đường đi cho hệ điều hành IOS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.07 MB, 92 trang )

LỜI CAM ĐOAN
Em xin cam đoan đây là đề tài nghiên cứu của riêng em và được sự
hướng dẫn khoa học của TS. Trần Cảnh Dương. Các nội dung nghiên cứu, kết
quả trong đề tài này là trung thực và chưa công bố dưới bất kỳ hình thức nào
trước đây. Những số liệu trong các bảng biểu phục vụ cho việc phân tích,
nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi
rõ trong phần tài liệu tham khảo.
Ngoài ra, trong đồ án còn sử dụng một số nhận xét, đánh giá cũng như số
liệu của các tác giả khác, cơ quan tổ chức khác đều có trích dẫn.
Nếu phát hiện có bất kỳ sự gian lận nào em xin hoàn toàn chịu trách nhiệm về
nội dung đồ án của mình. Trường đại học Tài nguyên và Môi trường cùng
Khoa Công nghệ thông tin không liên quan đến những vi phạm tác quyền, bản
quyền do em gây ra trong quá trình thực hiện (nếu có).
Em xin chân thành cảm ơn!
Sinh viên

Nguyễn Quốc Toản


LỜI CẢM ƠN
Trên thực tế không có sự thành công nào mà không gắn liền với những
sự giúp đỡ mọi người dù ít hay nhiều, dù trực tiếp hay gián tiếp. Trong suốt
thời gian học tập nhất là trong quá trình làm đồ án, em đã nhận được rất nhiều
sự quan tâm giúp đỡ nhiệt tình của các thầy cô, bạn bè và gia đình.
Đầu tiên em xin gửi lời cảm ơn sâu sắc đến thầy TS. Trần Cảnh Dương,
thầy đã trực tiếp hướng dẫn và giúp đỡ em rất nhiều trong thời gian em làm
khóa luận này.
Em cũng xin gửi lời cảm ơn đến thầy TS. Hà Mạnh Đào, Trưởng khoa
công nghệ thông tin, cùng các thầy cô giáo trong Khoa Công nghệ thông tin
đã nhiệt tình giúp đỡ em trong quá trình học tập tại trường.
Cuối cùng, em xin gửi lời cảm ơn chân thành tới gia đình và bạn bè đã


luôn giúp đỡ, động viên và tạo điều kiện tốt nhất cho em trong suốt quá trình
học tập cũng như trong cuộc sống.
Vì năng lực có hạn nên bài báo cáo của em còn nhiều hạn chế và không
thể tránh khỏi những thiếu sót, mong thầy cô và các bạn có những ý kiến đóng
góp để em có thể hoàn thiện và phát triển đề tài hơn.
Em xin chân thành cảm ơn!
Sinh viên

Nguyễn Quốc Toản


MỤC LỤC
LỜI CAM ĐOAN..............................................................................................1
LỜI CẢM ƠN...................................................................................................2
MỞ ĐẦU...........................................................................................................1
CHƯƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH IOS VÀ NGÔN NGỮ LẬP
TRÌNH SWIFT..................................................................................................3
1.1. Tổng quan về IOS..................................................................................3
1.1.1 Giới thiệu về hệ điều hành IOS........................................................3
1.1.2 Sự phát triển của iOS........................................................................4
1.2 Tổng quan về ứng dụng iOS...................................................................7
1.2.1 Cấu trúc ứng dụng iOS.....................................................................7
1.2.2 Các trạng thái của ứng dụng iOS......................................................9
1.2.3 Vòng đời của UIViewController....................................................10
1.3. Ngôn ngữ lập trình Swift.....................................................................12
1.3.1.Giới thiệu về ngôn ngữ Swift.........................................................13
1.3.2. Array và Dictionary (Mảng và Từ điển)........................................17
1.3.3. Cấu trúc điều khiển........................................................................18
1.3.4. Hàm...............................................................................................19
1.3.5. Closure (Kết thúc).........................................................................20

1.3.6. Enumeration ( Liệt kê)..................................................................21
1.3.7. Classes and Structure (Lớp và cấu trúc)........................................22
1.3.8. Subscript........................................................................................23
1.3.9. Inheritance(Kế Thừa)....................................................................24
1.3.10. Subclass(lớp con)........................................................................24
1.3.11. Mothod and Property (phương thức và thuộc tính).....................25
1.3.12. Handling Error (đối phó với lỗi).................................................25


2.1. Mô tả bài toán......................................................................................26
2.2. Quy trình nghiệp vụ.............................................................................26
2.3. Yêu cầu chức năng..............................................................................26
2.4. Yêu cầu phi chức năng........................................................................27
2.5. Liệt kê tác nhân và ca làm việc của ứng dụng.....................................27
2.5.1. Đặc tả các ca làm việc...................................................................27
2.5.2. Biểu đồ Use case đặc tả ca làm việc của ứng dụng.......................29
2.6. Sơ đồ Use case các chức năng của ứng dụng......................................29
2.6.1. Sơ đồ Use case chức năng hiển thị bản đồ....................................29
2.6.2. Sơ đồ Use case chức năng định vị vị trí thiết bị............................30
2.6.3. Sơ đồ Use case chức năng định vị các địa điểm tham chiếu.........30
2.6.4. Sơ đồ use case chức năng tìm kiếm chỉ đường.............................31
2.6.5. Sơ đồ use case chức năng tìm kiếm đường đi ngắn nhất...............31
2.7. Biểu đồ tuần tự....................................................................................31
2.7.1. Biểu đồ tuần tự định vị vị trí hiện tại.............................................31
2.7.2. Biểu đồ tuần tự định vị các địa điểm tham chiếu khác..................32
2.7.3. Biểu đồ tuần tự tìm kiếm đường đi ngắn nhất...............................33
2.8. Biểu đồ hoạt động................................................................................35
2.8.1. Biểu đồ hoạt động định vị vị trí hiện tại........................................35
2.8.2. Biểu đồ hoạt động định vị các địa điểm tham chiếu......................36
2.8.3. Biểu đồ hoạt động tìm kiếm chỉ đường.........................................37

CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG BẢN ĐỒ TÌM
KIẾM ĐƯỜNG ĐI..........................................................................................38
3.1. Thiết kế chương trình ứng dụng..........................................................38
3.1.1. Xcode IDE.....................................................................................38
3.1.2. Playground trong swift..................................................................41
3.1.4. File viewcontroller........................................................................49


3.1.5. File code AddressTableView.........................................................50
3.1.6. File Code DirectionsViewController.............................................50
3.1.7. Config Project................................................................................51
3.1.8. File code DirectionsTableView.....................................................52
3.2. Thiết kế giao diện của ứng dụng.........................................................52
3.2.1. Giao diện chính chỉ đường............................................................52
3.2.2. Giao diện hiển thị kết quả..............................................................53
3.2.3. Giao diện nhập điểm đầu cuối.......................................................54
3.2.4. Giao diện tìm kiếm địa điểm.........................................................55
3.2.5. Giao diện màn hình chỉ đường chi tiết..........................................55
KẾT LUẬN.....................................................................................................57
TÀI LIỆU THAM KHẢO...............................................................................58
PHỤ LỤC........................................................................................................59


DANH MỤC BẢNG
LỜI CAM ĐOAN..............................................................................................1
LỜI CẢM ƠN...................................................................................................2
MỞ ĐẦU...........................................................................................................1
CHƯƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH IOS VÀ NGÔN NGỮ LẬP
TRÌNH SWIFT..................................................................................................3
1.1. Tổng quan về IOS..................................................................................3

1.1.1 Giới thiệu về hệ điều hành IOS........................................................3
1.1.2 Sự phát triển của iOS........................................................................4
1.2 Tổng quan về ứng dụng iOS...................................................................7
1.2.1 Cấu trúc ứng dụng iOS.....................................................................7
Hình 1.1. Các đối tượng cơ bản của một ứng dụng iOS...........................................................8

1.2.2 Các trạng thái của ứng dụng iOS......................................................9
Hình 1.2. Vòng đời của một ứng dụng iOS..............................................................................10

1.2.3 Vòng đời của UIViewController....................................................10
Hình 1.3. Vòng đời của một UIViewController........................................................................11

1.3. Ngôn ngữ lập trình Swift.....................................................................12
Hình 1.4. Ngôn ngữ lập trình Swif..........................................................................................12
Hình 1.5. Đoạn mã lệnh viết bằng Swif..................................................................................13

1.3.1.Giới thiệu về ngôn ngữ Swift.........................................................13
1.3.2. Array và Dictionary (Mảng và Từ điển)........................................17
1.3.3. Cấu trúc điều khiển........................................................................18
1.3.4. Hàm...............................................................................................19
1.3.5. Closure (Kết thúc).........................................................................20
1.3.6. Enumeration ( Liệt kê)..................................................................21
1.3.7. Classes and Structure (Lớp và cấu trúc)........................................22
1.3.8. Subscript........................................................................................23


1.3.9. Inheritance(Kế Thừa)....................................................................24
1.3.10. Subclass(lớp con)........................................................................24
1.3.11. Mothod and Property (phương thức và thuộc tính).....................25
1.3.12. Handling Error (đối phó với lỗi).................................................25

2.1. Mô tả bài toán......................................................................................26
2.2. Quy trình nghiệp vụ.............................................................................26
2.3. Yêu cầu chức năng..............................................................................26
2.4. Yêu cầu phi chức năng........................................................................27
2.5. Liệt kê tác nhân và ca làm việc của ứng dụng.....................................27
2.5.1. Đặc tả các ca làm việc...................................................................27
Bảng 2.1. Đặc tả ca làm việc truy cập ứng dụng.....................................................................27
Ca làm việc nhập thông tin địa điểm được đặc tả ở bảng 2.2...............................................28
Bảng 2.2. Đặc tả ca làm việc nhập thông tin địa điểm...........................................................28
Bảng 2.3. Đặc tả ca làm việc định vị các địa điểm tham chiếu...............................................28
Ca làm việc tìm kiếm chỉ đường được đặc tả ở bảng 2.4.......................................................28
Bảng 2.4. Đặc tả ca làm việc tìm kiếm chỉ đường...................................................................28

2.5.2. Biểu đồ Use case đặc tả ca làm việc của ứng dụng.......................29
Hình 2.1. Biểu đồ Use case đặc tả ca làm việc của ứng dụng.................................................29

2.6. Sơ đồ Use case các chức năng của ứng dụng......................................29
2.6.1. Sơ đồ Use case chức năng hiển thị bản đồ....................................29
Hình 2.2. Sơ đồ use case chức năng hiển thị bản đồ..............................................................30

2.6.2. Sơ đồ Use case chức năng định vị vị trí thiết bị............................30
Hình 2.3. Sơ đồ use case chức năng định vị vị trí hiện tại......................................................30

2.6.3. Sơ đồ Use case chức năng định vị các địa điểm tham chiếu.........30
Hình 2.4. Sơ đồ use case chức năng định vị các địa điểm tham chiếu..................................31

2.6.4. Sơ đồ use case chức năng tìm kiếm chỉ đường.............................31
2.6.5. Sơ đồ use case chức năng tìm kiếm đường đi ngắn nhất...............31
Hình 2.6. Sơ đồ use case chức năng tìm kiếm đường đi ngắn nhất.......................................31


2.7. Biểu đồ tuần tự....................................................................................31


2.7.1. Biểu đồ tuần tự định vị vị trí hiện tại.............................................31
Hình 2.7. Biểu đồ tuần tự định vị vị trí hiện tại.......................................................................32

2.7.2. Biểu đồ tuần tự định vị các địa điểm tham chiếu khác..................32
Hình 2.8. Biểu đồ tuần tự định vị các địa điểm tham chiếu...................................................33

2.7.3. Biểu đồ tuần tự tìm kiếm đường đi ngắn nhất...............................33
Hình 2.9. Biểu đồ tuần tự tìm kiếm đường đi ngắn nhất.......................................................34

2.8. Biểu đồ hoạt động................................................................................35
2.8.1. Biểu đồ hoạt động định vị vị trí hiện tại........................................35
Hình 2.10. Biểu đồ hoạt động định vị vị trí hiện tại................................................................35

2.8.2. Biểu đồ hoạt động định vị các địa điểm tham chiếu......................36
Hình 2.11. Biểu đồ hoạt động định vị các địa điểm tham chiếu............................................36

2.8.3. Biểu đồ hoạt động tìm kiếm chỉ đường.........................................37
Hình 2.12. Biểu đồ hoạt động tìm kiếm chỉ đường................................................................37

CHƯƠNG 3: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG BẢN ĐỒ TÌM
KIẾM ĐƯỜNG ĐI..........................................................................................38
3.1. Thiết kế chương trình ứng dụng..........................................................38
3.1.1. Xcode IDE.....................................................................................38
Hình 3.1. Giao diện làm việc của Xcode..................................................................................39

3.1.2. Playground trong swift..................................................................41
Hình 3.2. khởi tạo file mới.......................................................................................................41

Hình 3.3. Nhập tên file.............................................................................................................42
Hình 3.4. Hiển thị giao diện code............................................................................................42
Hình 3.5. Màn hình playground...............................................................................................43
Hình 3.6. Hiển thị file Playground............................................................................................44
Hình 3.7. Màn hình Utilities.....................................................................................................45
Hình 3.8. Màn hình Editor.......................................................................................................45
Hình 3.9. Định dạng comment trong Playground...................................................................46
Hình 3.10. Hướng dẫn sử dụng Playground............................................................................47
Hình 3.11. Cửa sổ thể hiện kết quả.........................................................................................48
Hình 3.12. Cửa sổ kết quả........................................................................................................48


Hình 3.13. Cấu trúc thư mục project.......................................................................................49

3.1.4. File viewcontroller........................................................................49
3.1.5. File code AddressTableView.........................................................50
Hình 3.15. File code AddressTableView..................................................................................50

3.1.6. File Code DirectionsViewController.............................................50
Hình 3.16. File Code DirectionsViewController......................................................................51

3.1.7. Config Project................................................................................51
Hình 3.17. Config Project.........................................................................................................51

3.1.8. File code DirectionsTableView.....................................................52
Hình 3.18. file code DirectionsTableView...............................................................................52

3.2. Thiết kế giao diện của ứng dụng.........................................................52
3.2.1. Giao diện chính chỉ đường............................................................52
Hình 3.19. Giao diện chỉ đường...............................................................................................53


3.2.2. Giao diện hiển thị kết quả..............................................................53
Hình 3.20. Giao diện hiển thị kết quả......................................................................................54

3.2.3. Giao diện nhập điểm đầu cuối.......................................................54
Hình 3.21. Giao diện nhập điểm đầu và điểm cuối................................................................55

3.2.4. Giao diện tìm kiếm địa điểm.........................................................55
Hình 3.22. Giao diện tìm kiếm địa điểm.................................................................................55

3.2.5. Giao diện màn hình chỉ đường chi tiết..........................................55
Hình 3.23. Giao diện màn hình chỉ đường chi tiết..................................................................56
Kết luận chương: chương 3 đề cập tới ứng dụng sử dụng Mapkit làm cơ sở dữ liệu cho
ứng dụng và thiết kế ứng dụng, giao diện như thế nào một các trân thực nhất. Ngoài ra chỉ
ra cách tạo 1 Project trong Xcode và Xcode IDE.....................................................................56

KẾT LUẬN.....................................................................................................57
TÀI LIỆU THAM KHẢO...............................................................................58
PHỤ LỤC........................................................................................................59


DANH MỤC HÌNH ẢNH
Hình 1.1. Các đối tượng cơ bản của một ứng dụng iOS...................................8
Hình 1.2. Vòng đời của một ứng dụng iOS.....................................................10
Hình 1.3. Vòng đời của một UIViewController..............................................11
Hình 1.4. Ngôn ngữ lập trình Swift.................................................................12
Hình 1.5. Đoạn mã lệnh viết bằng Swift.........................................................13
Bảng 2.1. Đặc tả ca làm việc truy cập ứng dụng.............................................27
Ca làm việc nhập thông tin địa điểm được đặc tả ở bảng 2.2.........................28
Bảng 2.2. Đặc tả ca làm việc nhập thông tin địa điểm....................................28

Bảng 2.3. Đặc tả ca làm việc định vị các địa điểm tham chiếu.......................28
Ca làm việc tìm kiếm chỉ đường được đặc tả ở bảng 2.4................................28
Bảng 2.4. Đặc tả ca làm việc tìm kiếm chỉ đường..........................................28
Hình 2.1. Biểu đồ Use case đặc tả ca làm việc của ứng dụng.........................29
Hình 2.2. Sơ đồ use case chức năng hiển thị bản đồ.......................................30
Hình 2.3. Sơ đồ use case chức năng định vị vị trí hiện tại..............................30
Hình 2.4. Sơ đồ use case chức năng định vị các địa điểm tham chiếu............31
Hình 2.6. Sơ đồ use case chức năng tìm kiếm đường đi ngắn nhất................31
Hình 2.7. Biểu đồ tuần tự định vị vị trí hiện tại..............................................32
Hình 2.8. Biểu đồ tuần tự định vị các địa điểm tham chiếu............................33
Hình 2.9. Biểu đồ tuần tự tìm kiếm đường đi ngắn nhất.................................34
Hình 2.10. Biểu đồ hoạt động định vị vị trí hiện tại........................................35
Hình 2.11. Biểu đồ hoạt động định vị các địa điểm tham chiếu......................36
Hình 2.12. Biểu đồ hoạt động tìm kiếm chỉ đường.........................................37
Hình 3.1. Giao diện làm việc của Xcode.........................................................39
Hình 3.2. khởi tạo file mới..............................................................................41
Hình 3.3. Nhập tên file....................................................................................42
Hình 3.4. Hiển thị giao diện code....................................................................42
Hình 3.5. Màn hình playground......................................................................43


Hình 3.6. Hiển thị file Playground..................................................................44
Hình 3.7. Màn hình Utilities............................................................................45
Hình 3.8. Màn hình Editor..............................................................................45
Hình 3.9. Định dạng comment trong Playground...........................................46
Hình 3.10. Hướng dẫn sử dụng Playground....................................................47
Hình 3.11. Cửa sổ thể hiện kết quả.................................................................48
Hình 3.12. Cửa sổ kết quả...............................................................................48
Hình 3.13. Cấu trúc thư mục project...............................................................49
Hình 3.15. File code AddressTableView.........................................................50

Hình 3.16. File Code DirectionsViewController.............................................51
Hình 3.17. Config Project...............................................................................51
Hình 3.18. file code DirectionsTableView......................................................52
Hình 3.19. Giao diện chỉ đường......................................................................53
Hình 3.20. Giao diện hiển thị kết quả.............................................................54
Hình 3.21. Giao diện nhập điểm đầu và điểm cuối.........................................55
Hình 3.22. Giao diện tìm kiếm địa điểm.........................................................55
Hình 3.23. Giao diện màn hình chỉ đường chi tiết..........................................56
Kết luận chương: chương 3 đề cập tới ứng dụng sử dụng Mapkit làm cơ sở
dữ liệu cho ứng dụng và thiết kế ứng dụng, giao diện như thế nào một các trân
thực nhất. Ngoài ra chỉ ra cách tạo 1 Project trong Xcode và Xcode IDE......56


1
MỞ ĐẦU
Thế kỉ 21 là thế kỉ của công nghệ, ngành công nghệ thông tin vốn đã đi
sâu vào đời sống con người từ rất lâu, ngành nghệ này phục vụ cho mọi lĩnh
vực của đời sống, xã hội. Việc quản lý giáo dục, y tế hay quân đội… đến
những sinh hoạt hàng ngày như đọc báo, xem phim, mua sắm… cũng cần đến
công nghệ thông tin. Mấy năm gần đây, ngành học công nghệ thông tin cũng “
hot “ trở lại sau cơn bão ngành tài chính, ngân hàng.
Ngành công nghệ thông tin như chúng ta đã biết thì rất đa dạng và nhiều
mảng, chúng chia ra để phục vụ nhu cầu con người, như mạng truyền thông,
lập trình web, khai phá dữ liệu, khoa học máy tính, tin văn phòng…. Ngành
lập trình di động Android, IOS, WindowPhone cũng đã và đang tràn ngập vào
thị trường CNTT của Việt Nam, chứng minh là ở nước ta dịch vụ điện thoại di
động ngày một tăng, các dòng điện thoại ngày một đa dạng, hơn thế nữa các
phần mềm điện thoại ngày càng hiện đại, phong phú, phục vụ nhiều nhu cầu
của con người khi tiếp xúc với di động. Chiếc điện thoại di động không còn
chỉ để nghe, gọi, gửi tin nhắn mà chúng ta còn có thể truy cập mạng xã hội,

trải nghiệp các ứng dụng của Google map, các ứng dụng phục vụ thiết thực
cho công việc, vui chơi, giải trí…
Hiện nay, các hãng di động mang hệ điều hành IOS đang dần chiếm thị
phần lớn ở hầu hết các quốc gia, lấn mặt hai anh em khác là Android và
WindowPhone. Chính vì thế lập trình IOS vẫn là một mảng lập trình “ hot”
hiện nay, không chỉ ở Việt Nam mà còn phát triển từ rất lâu trên thế giới.
Con người sử dụng điện thoại di động với các mục đích khác nhau,
người đọc báo, người xem phim, người mua hàng trực tuyến, người chơi
game, người lại sử dụng các tiện ích của bản đồ tìm kiếm đường đi… muôn
hình muôn vẻ. Bản thân em là người hay có nhu cầu đi lại nên có một ứng
dụng chỉ đường trên chính chiếc smartphone của mình là hết sức cần thiết vậy


2
nên em đã quyết định chọn đề tài: “Nghiên cứu và xây dựng phần mềm bản
đồ tìm kiếm đường đi cho hệ điều hành IOS”.
Mục tiêu của đề tài nhằm xây dựng một chương trình phần mềm bản đồ tìm
kiếm đường đi trên nền tảng IOS.
Đồ án gồm phần mở đầu, phần kết luận và ba chương:
- Chương 1 Tổng quan hệ điều hành IOS và ngôn ngữ lập trình Swift:
chương này trình bày những kiến thức cơ bản về hệ điều hành IOS và
ngôn ngữ lập trình Swift
- Chương 2 Phân tích thiết kế chương trình phần mềm bản đồ tìm kiếm
đường đi: chương này trình bày quy trình nghiệp vụ và các chức năng
của phần mềm bản đồ tìm kiếm đường đi.
- Chương 3 Xây dựng chương trình phần mềm bản đồ tìm kiếm đường đi:
trình bày việc thiết kế phần mềm và giao diện của phần mềm.


3

CHƯƠNG 1: TỔNG QUAN HỆ ĐIỀU HÀNH IOS VÀ NGÔN NGỮ LẬP
TRÌNH SWIFT
1.1. Tổng quan về IOS
1.1.1 Giới thiệu về hệ điều hành IOS
IOS là hệ điều hành trên các thiết bị di động của Apple. Ban đầu hệ điều
hành này chỉ được phát triển để chạy trên iPhone (gọi là iPhone OS), nhưng
sau đó nó đã được mở rộng để chạy trên các thiết bị của Apple như iPod
touch, iPad và Apple TV. Ngày 31 tháng 5, 2011, App Store của Apple chứa
khoảng 500 000 ứng dụng iOS, và được tải về tổng cộng khoảng 15 tỷ lần.
Trong quý 4 năm 2010, có khoảng 26% điện thoại thông minh chạy hệ điều
hành iOS.
Giao diện người dùng của iOS dựa trên cơ sở thao tác bằng tay. Người
dùng có thể tương tác với hệ điều hành này thông qua rất nhiều động tác bằng
tay trên màn hình cảm ứng của các thiết bị của Apple.
Phiên bản mới nhất của iOS là 9.3 ra ngày 21 tháng 3 năm 2016, dành
cho các thiết bị iPhone 4S, iPod 5, iPad 2, iPad Mini (thế hệ thứ nhất) trở lên
và iPad Pro.
Hệ điều hành này được tiết lộ tại Hội nghị và Triển lãm Macworld diễn
ra vào 9 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".[1]


4

1.1.2 Sự phát triển của iOS
Cũng như máy tính, smartphone sẽ trở nên vô nghĩa nếu thiếu phần hồn
là hệ điều hành (HĐH). Vào năm 2007, Apple đã ghi lại dấu mốc làm thay đổi
cuộc chơi di động với việc giới thiệu chiếc smartphone đầu tiên của mình và
HĐH di động đầu tiên trên thế giới. Kể từ đó, iOS (ban đầu Apple gọi là
iPhone OS) đã phát triển liên tục trong suốt hơn 8 năm qua cùng với chiếc
iPhone, lần lượt giới thiệu những tính năng mà nhiều người sử dụng không
thể tưởng tượng trước khi được trải nghiệm, như iMessage, App Store,
FaceTime, Siri, iCloud, Apple Pay…
Giờ là lúc chúng ta hãy cùng nhau khám phá sự tiến hóa của iOS và cách
thức HĐH đã định hình chức năng cho iPhone và các thiết bị chạy iOS khác
của Apple như iPad và iPod Touch.
iOS 1
HĐH di động lấy màn hình cảm ứng làm trung tâm đầu tiên trên thế giới
được cựu CEO Steve Jobs của Apple công bố lần đầu vào ngày 9/1/2007 cùng
với chiếc iPhone phiên bản đầu tiên. Cho đến lúc đó nó chưa được nhìn nhận
là HĐH, và Jobs gọi đây là “phần mềm” chạy một phiên bản di động của
HĐH OS X vốn dành cho máy Mac của Apple. Phần mềm bao gồm các tính
năng đa cử chỉ cảm ứng, thư thoại có hình, duyệt web di động trên Safari và
YouTube.
Đến tháng 1/2008, phần mềm được cập nhật thêm màn hình chủ (home)
tùy biến, cho phép người dùng chuyển các ứng dụng tới những trang riêng
trên thiết bị và đem đến cho người dùng máy nghe nhạc iPod Touch những
ứng dụng mới như Mail, Maps, Weather, Notes và Stocks. Apple miễn phí cập
nhật cho người dùng iPhone, nhưng người dùng iPod Touch phải trả 19,99
USD.


5
iOS 2

Sau khi phát hành iPhone SDK vào ngày 6/3/2008, Apple đã chính thức
xác nhận HĐH di động của mình, gọi là iPhone OS. iPhone OS 2 được cài sẵn
cho iPhone 3G mới ra mắt năm này, và cung cấp các tính năng đáng chú ý
như App Store, chỉ đường chi tiết dựa trên GPS và push email.
Bản cập nhật này miễn phí cho người dùng iPhone và tính phí 9,95 USD
đối với người dùng iPod Touch (sau đó miễn phí lên iPhone OS 2.x).
iOS 3
iPhone OS 3 chính thức xuất hiện cùng phiên bản iPhone 3GS với nhiều
tính năng mới, như: điều khiển bằng giọng nói, nhắn tin đa phương tiện, tìm
kiếm nhanh Spotlight search, bàn phím xoay ngang, và nổi bật là các chức
năng cắt, sao chép và dán.
Sau khi Apple giới thiệu iPad vào tháng 3/2010, iPhone OS trở thành
iOS. iOS 3 miễn phí với người dùng iPhone, nhưng người dùng iPod Touch
vẫn phải trả 9,95 USD và miễn phí nâng cấp về sau. iPad phiên bản đầu tiên
đáp xuống thị trường với iOS 3.2 được cài sẵn.
Với người dùng iPod Touch chưa nâng cấp lên iOS 3, được giảm giá
xuống chỉ còn 4,95 USD để nâng cấp lên iOS 3.2.
iOS 4
iOS 4 được cài sẵn cho iPhone 4 và iPad 2. Chính thức được đổi tên
thành ‘iOS,’ HĐH di động của Apple có hình nền, khả năng chạy đa nhiệm,
quản lý ứng dụng theo Folders (thư mục), và tính năng thoại có hình
FaceTime, và iBooks cho iPad.
Với iOS 4, lần đầu tiên người dùng iPod Touch phiên bản cũ hơn được
nâng cấp miễn phí. iPhone 4 cũng là chiếc điện thoại CDMA đầu tiên của
Apple (cho người dùng mạng Verizon, Mỹ).


6
iOS 5
Được cài sẵn cho iPhone 4S, ra mắt sau một tuần “thầy phù thủy” Steve

Jobs qua đời, iOS 5 trình làng trợ lý ảo Siri cùng các tính năng Notification
Center, iMessage, Reminders và Newsstand.
iOS 5 trở nên nổi tiếng vì người dùng có thể kích hoạt và cài đặt thiết bị
của mình mà không cần cáp nối với máy tính và cập nhật qua mạng không
dây. iOS 5 còn gây sự chú ý khi tích hợp sẵn iCloud và Twitter.
iOS 6
iOS 6 cài sẵn trên iPhone 5 và iPad mini. Phiên bản này “bỏ rơi” Google
Maps và YouTube, người dùng muốn có thì phải tự tải về từ App Store. iOS 5
dùng ứng dụng bản đồ Maps do chính Apple phát triển, với khả năng chỉ
đường chi tiết (turn-by-turn navigation), cũng như tích hợp sẵn Facebook,
Passbook và hỗ trợ kết nối mạng LTE.
iOS 7
Sau khi thất bại với ứng dụng Maps gây nhiều tranh cãi trên iOS 6, Phó
chủ tịch cấp cao phụ trách thiết kế của Apple, Jonathan Ive, đã thiết kế lại iOS
sau sự ra đi của cựu Phó chủ tịch cấp cao về phần mềm iOS, Scott Forstall.
iOS 7 không còn dùng đồ họa theo phong cách thiết kế mô phỏng như
trước mà đã được làm mới với thiết kế phẳng, theo đó các icon nhiều màu sắc
hơn, giảm độ sâu, chữ đơn giản và sắc nét dễ nhìn.
Được cài sẵn trên iPhone 5S, iPhone 5C, iPad Air và iPad mini 2, phiên
bản HĐH mới theo phong cách phẳng có các tính năng đáng chú ý như
Control Center, AirDrop for iOS, ứng dụng Photos cải tiến, iTunes Radio và
CarPlay.
iOS 8
iOS 8 xuất hiện cùng bộ đôi iPhone 6 và 6 Plus, và cũng được cài trên
iPad Air 2. Những tính năng mới đánh chú ý là thanh toán điện tử Apple Pay,


7
ứng dụng Health mới, HandOff, QuickType, Family Sharing, iCloud Drive,
hỗ trợ bàn phím của bên thứ ba và mới thêm Apple Music hồi giữ năm nay.

iOS 8 là phiên bản iOS đầu tiên được Apple tung ra bản thử nghiệm beta
cho các nhà phát triển bên ngoài trước khi phát hành bản chính thức.
iOS 9
iOS 9 được phát hành vào ngày 9/9/2015 cùng iPhone 6S và 6S Plus.
iOS 9 bao gồm những tính năng mới như: ứng dụng Notes được cập nhật để
hỗ trợ vẽ phác thảo và thêm hình ảnh, Maps có nhiều cải tiến, News thay cho
Newsstand và hiển thị tin tức từ các trang CNN, Wired và The New York
Times.
Passbook được đổi thành Wallet và hỗ trợ thẻ khách hàng thân thiết và
thẻ quà tặng.
Với iOS 9, iPad có các tính năng tăng cường cho đa nhiệm, như: Slide
Over và Split View cho phép chia màn hình để các ứng dụng chạy đồng thời;
Picture in Picture để xem video (ở góc màn hình) trong khi đang chạy ứng
dụng khác; và hỗ trợ phím tắt cut/copy và paste cho bàn phím không dây.
iOS 9 giúp nâng cao thời lượng sử dụng pin (thêm khoảng 1 giờ) và có
chế độ tiết kiệm năng lượng “Low Power Mode”, passcode dài 6 ký tự để tăng
cường bảo mật, và hỗ trợ chuyển dữ liệu từ Android.
1.2 Tổng quan về ứng dụng iOS
1.2.1 Cấu trúc ứng dụng iOS
Ứng dụng iOS sử dụng pattern M-V-C. Điều đó có nghĩa là dữ liệu và
business logic được tách ra khỏi việc trình diễn dữ liệu.
Khi bắt đầu khởi động, hàm UIApplicationMain tạo ra các đối tượng cơ
bản quan trọng, và quan trọng nhất là đối tượng UIApplication. Nhiệm vụ của
đối tượng này là làm đơn giản hoá sự tương tác giữa hệ thống và các đối
tượng khác trong ứng dụng. Và nó được thể hiện qua hình 1.1.


8

Hình 1.1. Các đối tượng cơ bản của một ứng dụng iOS

Các đối tượng cơ bản bao gồm:
UIApplication: Quản lý vòng lặp sự kiện và các hành vi mức cao khác.
Thực tế ít sử dụng đối tượng này, và thường chỉ sử dụng khi muốn truy cập
đối tượng app delegate.
App delegate: Là đối tượng có mặt trong mọi ứng dụng iOS và là duy
nhất (shared instance).
Documents và Data model: Đây là các custom objects, có thể tạo ra khi
khởi tạo ứng dụng hoặc tạo ra khi cần thiết.
Các đối tượng ViewControllers: Quản lý việc trình diễn nội dung ứng
dụng trên màn hình. Đây là các đối tượng rất quan trọng vì những màn hình
của ứng dụng iOS hầu hết là các ViewController. Một ViewController quản lý
một đối tượng UIView và tất cả các subviews của nó. Khi được trình diễn,
UIViewController hiển thị các views của nó bằng cách thêm chúng vào cửa sổ
của ứng dụng (window).


9
Đối tượng UIWindow: Hầu hết các ứng dụng chỉ có một Window. Tuy
nhiên cũng có những ứng dụng có nhiều Window (để tạo một số hiệu ứng).
Vòng lặp chính:
Vòng lặp chính xử lý tất cả những event mà user tạo ra. Đối tượng
UIApplication cài đặt vòng lặp chính tại thời gian khởi động ứng dụng và sử
dụng nó để xử lý các sự kiện và cập nhật giao diện người dùng. Mặc dù một
chương trình có thể sử dụng nhiều thread nhưng vòng lặp chính luôn được
chạy trên main thread. Điều này đảm bảo việc sự kiện nào đến trước sẽ được
xử lý trước đúng theo thứ tự.
Vòng lặp chính chấp nhận một số kiểu sự kiện và forward chúng tới đối
tượng tiếp nhận (được gọi là responder).
1.2.2 Các trạng thái của ứng dụng iOS
Not running: Ứng dụng chưa được khởi động hoặc bị hệ thống đóng.

Inactive: Ứng dụng đang chạy ở foreground nhưng hiện tại không nhận
sự kiện (có thể đang thực hiện code). Đây là trạng thái quá độ, trước khi
chuyển sang một trạng thái khác.
Active : Ứng dụng đang chạy ở foreground (ứng dụng hiện tại đang hiển
thị) và sẽ nhận các event. Đây là trạng thái bình thường khi đang mở và sử
dụng ứng dụng.
Background : Ứng dụng ở trong background và đang thực thi mã nguồn.
Hầu hết các ứng dụng đi vào trạng thái này trong thời gian ngắn trước khi bị
kết thúc. Tuy nhiên, một ứng dụng đòi hỏi thêm thời gian thực thi có thể ở lâu
hơn trong trạng thái này so với các ứng dụng khác (download, play music,
etc). Một ứng dụng cũng có thể khởi động trực tiếp để đi vào trạng thái này.
Suspended: Là trạng thái khi ứng dụng ở background nhưng không thực
thi code, chẳng hạn khi bấm vào nút Home để trở về màn hình chính của
iPhone. Khi ở trong trạng thái này, ứng dụng được duy trì trong bộ nhớ nhưng
không thực thi mã nguồn. Khi bộ nhớ sắp hết, một số ứng dụng trong trạng
thái Suspended có thể bị đóng để nhường chỗ cho ứng dụng ở Foreground.


10
Mỗi khi chuyển đổi trạng thái sẽ đi kèm với một lời gọi hàm trong đối tượng
App delegate. Cụ thể được chỉ ra ở hình 1.2.

Hình 1.2. Vòng đời của một ứng dụng iOS
*application: willFinishLaunchingWithOptions: Method đầu tiên
được gọi khi khởi động ứng dụng.
* application: didFinishLaunchingWithOptions: Cho phép thực hiện
bất cứ khởi tạo nào trước khi ứng dụng hiển thị trên màn hình.
*applicationDidBecomeActive: Được gọi trước khi ứng dụng chuẩn bị
trở thành ứng dụng foreground.
* applicationWillResignActive: Ứng dụng sẽ ra khỏi foreground.

*applicationDidEnterBackground: Ứng dụng đã ra khỏi foreground và
có thể kết thúc bất cứ lúc nào.
*applicationWillEnterForeground:Ứng dụng sẽ ra khỏi background và
trở lại foreground nhưng vẫn chưa vào trạng thái active.
* applicationWillTerminate: Được gọi khi ứng dụng bị đóng. Method
này sẽ không được gọi khi ứng dụng vào trạng thái suspended.
1.2.3 Vòng đời của UIViewController
Thường thì mỗi màn hình trong ứng dụng iOS là một UIViewController.
Đây là đối tượng cơ bản, và các ViewController khác đều phải kế thừa nó.


11
Mỗi UIViewController quản lý một View và các subviews của nó. Vòng đời
của UIViewController miêu tả qua hình 1.3.

Hình 1.3. Vòng đời của một UIViewController
Có thể xem điểm bắt đầu là “Does the view exist”. Từ đây một loạt các
method được gọi như sau:
- loadView: Thường được sử dụng trong các ứng dụng trước iOS5. Từ
iOS 5 trở đi, method này thường không được sử dụng nữa.
- viewDidLoad: Được gọi một lần khi lần đầu tiên đối tượng view của
đối tượng UIViewController hiển thị.
- viewWillAppear: Có thể được gọi nhiều lần tuỳ theo view đó đã tồn tại
hay chưa. Method này được gọi trước khi view hiển thị trên màn hình.
- viewDidAppear: Tương tự viewWillAppear, có thể được gọi nhiều lần.
Method này được gọi sau khi view đã hiển thị.
- didReceivingMemoryWarning: Khi view đã hiển thị và bộ nhớ bị sử
dụng quá nhiều, nó sẽ gọi hàm này để cảnh báo. Có thể dùng hàm này để xoá
dữ liệu dư thừa.



12
- viewWillDisappear/viewDidDisappear: Được gọi trước và sau khi
view bị remove khỏi màn hình.
- viewDidUnload: Là method cuối cùng được gọi sau khi view đã biến
mất khỏi màn hình.
1.3. Ngôn ngữ lập trình Swift

Hình 1.4. Ngôn ngữ lập trình Swift
Swift là một ngôn ngữ lập trình mới cho phát triển ứng dụng iOS, OS X,
Watch OS,Swift có khá nhiều điểm giống với Objective C.
Swift cung cấp các kiểu cơ bản như Int cho các số nguyên, Double và
Float cho sô thực , Bool cho giá trị True hoặc False và String cho chuỗi kí tự.
Swift cũng cung cấp 3 kiểu Collection như Array, Set và Dictionary để quản
lý dạng danh sách mảng.
Swift sử dụng các biến để lưu trữ và tham chiếu giá trị bởi một tên xác
định. Swift sử dụng nhiều những giá trị không thay đổi được gọi là hằng số và
mạnh hơn nhiều so với hằng số trong C. Hằng số được sử dụng giúp cho code
rõ ràng và an toàn hơn trong lúc làm việc với các giá trị mà không cần thay
đổi.
Swift cũng giới thiệu các kiểu Optional để xử lý các trường hợp không
có giá trị. Optional có thể có một giá trị hoặc không có giá trị. Optional an
toàn và là một trong những tính năng mạnh mẽ nhất của Swift.


13
Cuối năm 2015, Swift đã chính thức được Apple mở mã nguồn. Từ thời
điểm này trở đi thì Swift bao gồm trình biên dịch, thư viện và debugger đã
hoàn toàn trở thành mã nguồn mở.
Swift sẽ là mã nguồn mở theo bản quyền Apache 2.0, điều này có nghĩa

là các nhà phát triển phần mềm có thể sử dụng ngôn ngữ này theo cách họ
thích thậm chí là cho mục đích thương mại và nó hỗ trợ cho nền tảng iOS, OS
X và Linux.
Apple cũng vừa cho ra website swift.org để hỗ trợ cho ngôn ngữ mã
nguồn mở Swift. Ở đây các developer có thể tìm thấy các nội dung, tài liệu để
thực hiện một dự án dựa trên ngôn ngữ Swift giống như Apple đang làm trên
GitHub.[2]
Một đoạn mã của chương trình HelloWord viết bằng Swift được thể hiện ở
hình 1.5.

Hình 1.5. Đoạn mã lệnh viết bằng Swift.
1.3.1.Giới thiệu về ngôn ngữ Swift.
Đầu tiên, Swift tỏ ra linh hoạt trong điều nhỏ nhất của một ngôn ngữ lập
trình. Đó là, dấu chấm phẩy. Dấu chấm phẩy được đại đa số các ngôn ngữ lập
trình sử dụng để làm ký tự kết thúc một dòng lệnh. Còn với Swift, dấu chấm


14
phẩy vẫn với tác dụng là kết thúc một dòng lệnh đó. Tuy nhiên, muốn hay
không muốn dùng dấu chấm phẩy đều được.
Biến và Hằng
Hằng là giá trị không được thay đổi sau khi nó được khai báo.
Biến là giá trị có thể được thay đổi bằng một giá trị khác khi cần.
Hằng và biến phải được khai báo trước khi sử dụng. Phải khai báo các
hằng với từ khoá là let và biến với từ khoá là var. [6]
Có thể khai báo nhiều hằng hoặc nhiều biến như sau:
//Khai báo nhiều hằng hoặc nhiều biến
trên 1 dòng.
varthểacung
= 1,

= kiểu
2, khi
c =khai
3 báo biến hoặc hằng, để rõ ràng hơn

cấpbcác
cho kiểu giá trị. Được viết bằng dấu hai chấm và phía sau tên biến hoặc tên
hằng
Ở đây có thể được đọc như sau: “khai báo biến gọi là xinchao có kiểu
String”. Như vậy ta chỉ có thể gán chuỗi kí tự vào cho biến xinchao.
Bây giờ ta có thể gán chuỗi kí tự bất kì vào cho biến xinchao:
Tên hằng và tên biến
Tên hằng và tên biến có thể chứa hầu hết bất kỳ character(kí tự), bao gồm cả
kí tự
Unicode.
//Tên Hằng và Biến.
let π = 3.14159
let 你你 = "你你你你"
Tên hằng và tên biến không thể chứa các kí tự khoảng trắng, ký hiệu
toán học, các mũi tên... và không thể bắt đầu bằng một con số.
Khi đã khai báo một hằng hoặc một biến có kiểu nhất định, không thể
khai báo lại nữa với cùng tên, hoặc thay đổi kiểu khác.
Có thể thay đổi giá trị của biến có cùng kiểu.
//Thay đổi giá trị của biến xinchao từ
HelloWorld XinChao
xinchao = "XinChao"


×