MỤC LỤC Mở đầu 1 Chương 1: Giới thiệu về cơ sở thực tập 4 1.1 Sơ lược về công ty 4 1.2 Lĩnh vực hoạt động chính 4 1.3 Tôn chỉ hoạt động 4 Chương 2: Kết quả thực hiện chuyên đề thực tập 5 Phần 1: Các thành phần của một ứng dụng iOS và ngôn ngữ Swift 5 2.1 Giới thiệu về hệ điều hành iOS 5 2.1.1 Cấu trúc của một ứng dụng iOS 5 2.1.2 Các trạng thái của ứng dụng iOS 7 2.1.3 Vòng đời của UIViewController 8 2.2 Ngôn ngữ lập trình Swift 10 2.2.1 Cơ bản về Swift 11 2.2.2 Array và Dictionary 15 2.2.3 Cấu trúc điều khiển 16 2.2.4 Hàm 17 2.2.5 Closure 18 2.2.6 Enumeration 19 2.2.7 Classes and Structures 20 2.2.8 Subscript 21 2.2.9 Inheritance(Kế Thừa) 22 2.2.10 Subclass(lớp con) 22 2.2.11 Mothod và Property 23 2.2.12 Handling Error 24 2.3 JSON 24 2.3.1 JSON là gì 24 2.3.2 Sử dụng JSON 25 2.3.3 Các kiểu dữ liệu của JSON 25 2.4 Giới thiệu Cocoapods 26 Phần 2: Xây dựng ứng dụng tìm kiếm địa điểm trên nền tảng iOS 28 2.5 Tổng quan về ứng dụng tìm kiếm địa điểm 28 2.6 Các công nghệ, kỹ thuật sử dụng để xây dựng nên ứng dụng 28 2.7 Các chức năng chính của ứng dụng 28 CHƯƠNG 3 : KẾT LUẬN VÀ KIẾN NGHỊ 31 Tài liệu tham khảo 32
BỘ TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ***************************** BÁO CÁO THỰC TẬP TỐT NGHIỆP ĐỀ TÀI: XÂY DỰNG ỨNG DỤNG TÌM KIẾM ĐỊA ĐIỂM TRÊN HỆ ĐIỀU HÀNH IOS Cán hướng dẫn Sinh viên thực Lớp : Vũ Hồng Công : Đặng Nhân Anh : ĐH2C1 HÀ NỘI – 2016 LỜI CẢM ƠN Trên thực tế thành công mà không gắn liền với giúp đỡ người dù hay nhiều, dù trực tiếp hay gián tiếp Trong suốt thời gian học tập trình thực tập, em nhận nhiều quan tâm giúp đỡ nhiệt tình thầy cô Em xin cảm ơn Ban giám đốc công ty Sunnet đã cho phép và tạo điều kiện thuận lợi cho em được thực tập ở Công ty Em 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, thầy cô giáo Khoa nhiệt tình giúp đỡ em trình học tập trường Cuối cùng, em xin gửi lời cảm ơn chân thành tới gia đình bạn bè giúp đỡ, động viên tạo điều kiện tốt cho em suốt trình học tập sống Vì lực có hạn nên báo cáo em nhiều hạn chế tránh khỏi thiếu sót, mong thầy cô bạn có ý kiến đóng góp để em hoàn thiện phát triển đề tài Em xin chân thành cảm ơn! Hà Nội, ngày 18 tháng 04 năm 2016 MỤC LỤC Mở đầu Lý chọn chuyên đề thực tập: Xây dựng ứng dụng tìm kiếm địa điểm hệ điều hành iOS Smartphone (điện thoại thông minh) vất dụng thiết yếu cho sống Có thể nói, sống thờ kỳ mà Smartphone chiếm lĩnh sống người Chiếc điện thoại thông minh trở lên phổ biến, dẫn đến việc phát triển phần mềm - ứng dụng cho chúng phát triển mạnh mẽ, không ngừng nghỉ Phát triển ứng dụng cho smart phone lựa chọn hang đầu cho nhà phát triển phần mềm Trong cuộcn sống hang ngày chúng ta, việc tìm kiếm địa điểm xung quang nhà hang, quán ăn, khu giải cần thiết Việc có ứng dụng giúp người dung tìm kiếm địa điểm cần cách dễ dàng, tích hợp lên điên thoại thông minh, đem đến tiện lợi to lớn cho người dùng Từ việc nhận thấy tiềm to lớn phát triển ứng dụng cho điện thoại thông minh, kết hợp với cần thiết có ứng dụng tìm kiếm địa điểm cho người dung nên em định chọn đề tài: Xây dựng ứng dụng tìm kiếm địa điểm cho hệ điều hành iOS, kết hợp với kho liệu địa điểm khổng lồ Foursquare cung cấp miễn phí Đối tượng phạm vi phương pháp thực chuyên đề thực tập Đối tượng thực hiện: - Hệ điều hành iOS -iOS SDK, X-code IDE - Các Framework: Cocoa Touch, Foundation, - Ngôn ngữ lập trình Swift - Các vấn đề liên quan đến lĩnh vực lập trình Phạm vi thực hiện: - Về không gian: Thực chuyên đề : Công ty cổ phần giải pháp CNTT truyền thông Sunnet - Về thời gian: từ 15/2/2016 đến 22/2/2016 Phương pháp thực hiện: -Nghiên cứu quy trình xây dựng ứng dụng mobile, mà cụ thể xây dựng ứng dụng hdh iOS, bao gồm việc nghiên cứu ngôn ngữ lập trình Swift -Nghiên cứu iOS SDK,các hàm API để xây dựng ứng dụng -Nghiên cứu Framework cốt lõi để xây dựng lên ứng dụng iOS Cocoa Touch, Foundation, -Các tài liệu Apple phát hành miễn phí ngôn ngữ lập trình Swift, phát triển ứng dụng iOS với Cocoa, Mục tiêu nội dung chuyên đề Mục tiêu: Nắm cách thức xây dựng ứng dụng iOS, xây dựng ứng dụng iOS đơn giản hoàn chỉnh Nội dung Thực trạng iOS hệ điều hành phổ biến giới, số lượng thiết bị chạy iOS lớn, từ ta thấy tiềm khổng lồ cho nhà phát triển ứng dụng iOS Thế nhưng, việc phát triển ứng dụng iOS chưa đơn giả, đòi hỏi công sức đầu tư tiền bạc Deverloper Đầu tiên thiết bị để lập trình, nhà phát triển cần phải có Macbook Mapro,iMac – thiết bị chạy hệ điều hành OS X Apple Tiếp cần phải hiểu quy trình xây dựng ứng dụng ios phức tạp, để xây dựng ứng dụng iOS dung ngôn ngữ Objective-C Swift, Objetctive-C ngôn ngữ lâu đời, hỗ trợ nhiều từ cộng đồng, thay vào lại có cú pháp dị khó tiếp cận Ngược lại Swift ngôn ngữ đại, cú pháp dễ hiểu, số thư viện hỗ trợ chưa phong phú Sự cạnh tranh nhà phát triển ứng dụng cho iOS lớn, nguồn thu từ ứng dụng iOS cáo so với tảng khác, nên nhà phát triển giới đầu tư cho việc phát triển ứng dụng iOS, dẫn đến cạnh trạnh Appstore khốc liệt Hướng giải Để phát triển ưng dụng iOS, việc đầu tư bắt buộc Nhà phát triền cần có thiết bị chạy OS X để lập trình ứng dụng thiết bị chạy iOS để kiểm thử ứng dụng Do thiết bị Apple bán đắt, nên người dung tận dụng việc sử dụng thiết bị cũ, qua sử dụng đáp ứng yêu cầu để lập trình Các tài liệu lập trình iOS phong phú, đặc biệt tài liệu, ebook tiếng anh chia sẻ rât rộng rãi miễn phí, giúp tiếp cận với công việc lập trình iOS dễ dàng Nên nhắm vào thị trường ngách, tức vấn đề mà ứng dụng Appstore chưa đáp ứng được, đáp ứng chưa tốt để phát triển ứng dụng, từ giảm bớt cạnh tranh dễ thu hút người sử dụng Thêm vào đó, việc đầu tư vào UX/UI vô quan trọng Việc có trải nghiệm người dung tốt thiết kế đẹp mặt khiến ứng dụng người dung ưa thích Chương 1: Giới thiệu sở thực tập Công ty cổ phần giải pháp công nghệ thông tin truyền thông SUNNET 1.1 Sơ lược công ty Tên giao dịch: Công ty cổ phần giải pháp CNTT truyền thông SunNet Ngày thành lập: 03/12/2007 Ban lãnh đạo: Chủ Tịch HĐQT: Lê Tấn Hùng Tổng Giám Đốc : Nguyễn Đức Đông Giám Đốc Kỹ Thuật: Đỗ Đăng Quân 1.2 Lĩnh vực hoạt động - Sản xuất phân phối nội dung số cho mobile - Cung cấp dịch vụ trực tuyến mobile - Tư vấn, phát triển giải pháp doanh nghiệp - Phát triển ứng dụng VoIP, truyền thông đa phương tiện, ứng dụng Mobile, Embbed - Tư vấn, triển khai giải pháp nguồn mở - Gia công phần mềm 1.3 Tôn hoạt động Tôn hoạt động Sunnet là: Bình đẳng- Cùng thành công -Bền vững -Lâu dài SunNet mong muốn thiết lập mối quan hệ bình đẳng với khách hàng đối tác sở hướng tới thành công đôi bên, thành công bao hàm ý nghĩa phát triển bền vững lâu dài Phương châm Sunnet là: “Cùng phát triển, thành công” Chương 2: Kết thực chuyên đề thực tập Phần 1: Các thành phần ứng dụng iOS ngôn ngữ Swift 2.1 Giới thiệu hệ điều hành iOS iOS hệ điều hành thiết bị di động Apple Ban đầu hệ điều hành phát triển để chạy iPhone (gọi iPhone OS), sau mở rộng để chạy thiết bị Apple iPod touch, iPad Apple TV Ngày 31 tháng 5, 2011, App Store Apple chứa khoảng 500 000 ứng dụng iOS,[1] tải tổng cộng khoảng 15 tỷ lần Trong quý 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 iOS dựa sở thao tác tay Người dùng tương tác với hệ điều hành thông qua nhiều động tác tay hình cảm ứng thiết bị Apple Phiên iOS 9.3 ngày 21 tháng năm 2016, dành cho thiết bị iPhone 4S, iPod 5, iPad 2, iPad Mini (thế hệ thứ nhất) trở lên iPad Pro Hệ điều hành tiết lộ Hội nghị Triển lãm Macworld diễn vào tháng năm 2007 phát hành vào tháng năm Khi đó, hệ điều hành chưa có tên riêng nên đơn giản "iPhone chạy OS X" Ban đầu, ứng dụng bên thứ ba không hỗ trợ Steve Jobs nhà phát triển xây dựng ứng dụng web mà "sẽ cư xử ứng dụng ban đầu iPhone" Vào ngày 17 tháng 10 năm 2007, Apple thông báo phát triển phần mềm xây dựng họ dự định đưa đến "tay nhà phát triển vào tháng 2" Ngày tháng năm 2008, Apple phát hành dùng thử đầu tiên, với tên cho hệ điều hành, "iPhone OS" 2.1.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 liệu business logic tách khỏi việc trình diễn liệu Khi bắt đầu khởi động, hàm UIApplicationMain tạo đối tượng quan trọng, quan trọng đối tượng UIApplication Nhiệm vụ đối tượng làm đơn giản hoá tương tác hệ thống đối tượng khác ứng dụng Hình 2.1 Các đối tượng ứng dụng iOS Các đối tượng bao gồm: UIApplication: Quản lý vòng lặp kiện hành vi mức cao khác Thực tế sử dụng đối tượng này, thường sử dụng muốn truy cập đối tượng app delegate App delegate: Là đối tượng có mặt ứng dụng iOS (shared instance) Documents Data model: Đây custom objects, tạo khởi tạo ứng dụng tạo 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 hình Đây đối tượng quan trọng hình ứng dụng iOS hầu hết ViewController Một ViewController quản lý đối tượng UIView tất subviews Khi trình diễn, UIViewController hiển thị views cách thêm chúng vào cửa sổ ứng dụng (window) Đối tựng UIWindow: Hầu hết ứng dụng có Window Tuy nhiên có ứng dụng có nhiều Window (để tạo số hiệu ứng) Vòng lặp chính: Vòng lặp xử lý tất event mà user tạo Đối tượng UIApplication cài đặt vòng lặp thời gian khởi động ứng dụng sử dụng để xử lý kiện cập nhật giao diện người dùng Mặc dù chương trình sử dụng nhiều thread vòng lặp chạy main thread Điều đảm bảo việc kiện đến trước xử lý trước theo thứ tự Vòng lặp chấp nhận số kiểu kiện forward chúng tới đối tượng tiếp nhận (được gọi responder) 2.1.2 Các trạng thái ứng dụng iOS Not running: Ứng dụng chưa khởi động bị hệ thống đóng Inactive: Ứng dụng chạy foreground không nhận kiện (có thể thực code) Đây trạng thái độ, trước chuyển sang trạng thái khác Active : Ứng dụng chạy foreground (ứng dụng hiển thị) nhận event Đây trạng thái bình thường mở sử dụng ứng dụng Background : Ứng dụng background thực thi mã nguồn Hầu hết ứng dụng vào trạng thái thời gian ngắn trước bị kết thúc Tuy nhiên, ứng dụng đòi hỏi thêm thời gian thực thi lâu trạng thái so với ứng dụng khác (download, play music, etc) Một ứng dụng khởi động trực tiếp để vào trạng thái Suspended: Là trạng thái ứng dụng background không thực thi code, chẳng hạn bấm vào nút Home để trở hình iPhone Khi trạng thái này, ứng dụng trì nhớ không thực thi mã nguồn Khi nhớ hết, số ứng dụng trạng thái Suspended bị đóng để nhường chỗ cho ứng dụng Foreground Mỗi chuyển đổi trạng thái kèm với lời gọi hàm đối tượng App delegate Cụ thể sau: 10 2.2.5 Closure Closures khối độc lập chứa chức truyền qua sử dụng mã code Closures Swift tương tự blocks C Object-C, lambas số ngôn ngữ lập trình khác Closures thu nạp lưu trữ giá trị tham chiếu đến số biến từ bố cảnh mà chúng định nghĩa Điều gọi đóng số biến, tên “closures” Swift xử lý tất công việc quản lý nhớ việc thu nạp Hàm toàn cục hàm lồng nhau, giới thiệu Function, thực trường hợp đặc biệt closures Closures lấy ba hình thức: - Hàm toàn cục closures có tên không nắm bắt giá trị - Hàm lồng closures có tên nắm bắt giá trị từ hàm kèm theo chúng - Biểu thức closure closures không rõ tên viết theo cú pháp nhẹ mà cóthể nắm bắt giá trị từ bối cảnh xung quanh Biểu thức closure Swift có phong cách trôi chảy rõ ràng, với việc tối ưu hóa để khuyến khích ngắn gọn, cú pháp lộn xộn-miễn phí kịch phổ biến Những tối ưu hóa bao gồm: - Suy luận tham số giá trị trả loại từ bối cảnh - Implicit returns from single-expression closures - Khai báo tên đối số ngắn gọn - Trailing cú pháp closure Closure Expressions Hàm lồng nhau, giới thiệu Nested Functions, thuận tiện việc đặt tên định nghĩa khối độc lập mã nguồn phần hàm lớn Tuy nhiên, hữu ích để viết phiên ngắn cấu trúc giống hàm khai báo tên đầy đủ Điều đặc biệt làm việc với hàm mà phải đặt vào hàm khác nhiều đối số chúng 21 Biểu thức Closure – Closure expressions – cách để viết ngắn gọn trực tiếp, tập trung vào cú pháp Biểu thức Closure cung cấp vài tối ưu hóa cú pháp cho việc viết closures dạng rút gọn mà không rõ ràng hay mục đích Các ví dụ biểu closure minh hoạ tối ưu hóa cách chỉnh lại ví dụ hàm xếp số lần lặp, ví dụ thể chức tương tự cách gọn gàng Closure Expression Syntax Cú pháp biểu thức closure sử dụng tham số hằng, tham số biến, ham số inout Các giá trị mặc định không cung cấp Các tham số lệnh biến thiên không sử dụng đặt tên tham số lệnh biến thiên đặt cuối danh sách tham số Tuples sử dụng kiểutham số kiểu trả letnames = ["Chris", "Alex", "Ewa", "Barry", "Daniella"] func backwards(s1: String, s2: String) ->Bool { return s1 > s2 } var reversed = names.sort(backwards) //Closure reversed = names.sort({ (s1: String, s2: String) ->Bool in return s1 > s2 }) 2.2.6 Enumeration Một liệt kê – enumeration – định nghĩa kiểu phổ biến cho nhóm giá trị liên quan cho phép làm việc với giá trị cách an toàn kiểu mã code Nếu quen thuộc với C, biết C enumerations gán tên có liên quan cho tập hợp giá trị số nguyên Liệt kê Swift linh hoạt nhiều, không cần phải cung cấp giá trị cho phần tử thuộc liệt kê Nếu giá trị (được biết đến giá trị “thô” – “raw”) cung cấp cho phần tử, giá trị chuỗi, ký tự giá trị kiểu số nguyên kiểu số phẩy động Ngoài ra, phần tử liệt kê định giá trị liên quan kiểu để lưu giữ với giá trị phần tử khác, giống hợp thức biến thức ngôn ngữ khác Có thể định nghĩa tập hợp chung phần tử liên quan phần enumeration, phần tử số có giá trị khác kiểu thích hợp liên kết với 22 Liệt kê Swift lớp theo nghĩa Chúng áp dụng nhiều tính truyền thống hỗ trợ lớp, chẳng hạn thuộc tính tính toán để cung cấp thêm thông tin giá trị liệt kê – enumeration, phương thức thể – instance - để cung cấp chức liên quan đến giá trị liệt kê biểu diễn Enumerations định nghĩa trình khởi tạo để cung cấp giá trị phần tử ban đầu; mở rộng để mở rộng chức chúng vượt thực ban đầu chúng; phù hợp với giao thức để cung cấp chức tiêu chuẩn chức //khai báo enum //cách enum testEnum{ case Trai case Phai case Tren case Duoi } 2.2.7 Classes and Structures Lớp (class) cấu trúc (structure) tạo với mục đích chung, cấu trúc linh hoạt trở thành khối xây dựng mã chương trình Ta định nghĩa thuộc tính phương thức để thêm chức cho lớp cấu trúc cách sử dụng xác cú pháp tương tự hằng, biến, hàm Không giống ngôn ngữ lập trình khác, Swift không yêu cầu phải tạo giao diện độc lập tập tin thực cho lớp cấu trúc tùy chỉnh Trong Swift, ta định nghĩa lớp cấu trúc tập tin nhất, giao diện mở rộng để lớp cấu trúc tự động làm sẵn cho mã code khác để sử dụng So sánh Classes Structures Class Structure Swift có nhiều điểm chung Cả hai có thể: - Định nghĩa thuộc tính(Property) để lưu trữ giá trị - Định nghĩa phương thức(Method) để cung cấp chức - Định nghĩa subscripts để cung cấp quyền truy cập vào gía trị chúng sử dụng cú pháp subscript - Định nghĩa khởi tạo để thiết lập trạng thái ban đầu chúng - Để mở rộng triển khai chức chúng bên thực thi mặc định 23 - Phù hợp với giao thức để cung cấp chuẩn chức kiểu định Lớp – class – có khả mở rộng, cấu trúc -structure – không: - Tính kế thừa cho phép lớp thừa hưởng đặc tính lớp khác - Type casting cho phép ta kiểm tra giải thích kiểu thể lớp thời gian chạy - Deinitializers cho phép thể lớp giải phóng mã nguồn mà gán //Khai Báo class AClass{ } struct AStruct { } Class and Structure Instances Lấy giá trị Class Struct //Lấy giá trị Class Struct var BStruct = AStruct() var BClass = AClass() print("Lấy giá trị b: \(BStruct.b)") print("Lấy giá trị a: \(BClass.a)") //Kết quả: "Lấy giá trị b: 3" //Kết quả: "Lấy giá trị a: 0.3" Thay đổi giá trị Class Struct: //Thay đổi giá trị BStruct.a = BStruct.b = 10 print("Giá trị a: \(BStruct.a) b: \(BStruct.b)") //Kết quả: "Giá trị a: b: 10" 2.2.8 Subscript Lớp (class) , cấu trúc (structure) , kiểu liệt kê (enumaration) định nghĩa subscript, phím tắt để truy cập vào phần tử tập hợp, danh sách, chuỗi Sử dụng subscripts để thiết lập lấy giá trị index mà không cần phương thức riêng biệt cho thiết lập phục hồi Subscript Syntax 24 Subscripts cho phép truy vấn thể kiểu cách viết nhiều giá trị dấu ngoặc vuông sau tên thể Cú pháp chúng tương tự cho cú pháp phương thức thể cú pháp thuộc tính tính toán Viết định nghĩa subscript với từ khóa subscript, định nhiều tham số đầu vào kiểu trả về, cách phương thức thể Không giống phương thức thể hiện, kí hiệu đọc-ghi hay chỉ-đọc Hành vi truyền đạt getter setter cách thuộc tính tính toán 2.2.9 Inheritance(Kế Thừa) Một Class kế thừa (inherit) method, property, đặc tính khác từ Class khác Khi Class kế thừa từ lớp khác, Class kế thừa gọi Class (subclass), Class kế thừa gọi Class cha (superclass) Kế thừa hành vi để phân biệt lớp từ kiểu khác Swift Class Swift gọi truy cập method, property, subscript thuộc class cha chúng cung cấp phiên ghi đè thân chúng với method, property, subsript để tinh chỉnh hay thay đổi hành vi chúng Swift giúp đảm bảo việc ghi đè xác cách kiểm tra định nghĩa ghi đè có định nghĩa phù hợp với class cha Class thêm quan sát thuộc tính với thuộc tính kế thừa để thông báo giá trị thuộc tính thay đổi Quan sát thuộc tính thêm vào thuộc tính nào, cho dù ban đầu định nghĩa thuộc tính lưu trữ thuộc tính tính toán //Kế thừa class AClass{ var a = var name: String{ return "Jobs, số: \(a)" } func tinh(){ } } let BClass = AClass() print("\(BClass.name)") 2.2.10 Subclass(lớp con) 25 Lớp (Subclassing) hành động lớp dựa lớp có Các lớp thừa hưởng đặc tính từ lớp có, sau tinh chỉnh, thêm đặc tính cho lớp Để lớp có lớp cha, viết tên lớp trước tên lớp cha, cách dấu hai chấm: //SubClass class CClass: AClass{ var b = 10 func tinh()->Int { return a + b } } let getClass = CClass() print("\(getClass.tinh())") //Kết quả: "15" 2.2.11 Mothod Property Property thuộc tính đối tượng classNguoi { var ten:String = "" var tuoi:Int = } Method function liên quan tới đối tượng class Nguoi { var ten:String = "" var tuoi:Int = func di(){ } func an(){ } func ngu(){ } } 26 2.2.12 Handling Error Là trình xử lý lỗi khắc phục từ lỗi chương trình Swift cung cấp first-class hỗ trợ việc ta xuất lỗi, bắt lỗi, tuyên truyền khắc phục lỗi chạy Throwing Errors Chỉ functionn method ném lỗi func mahoaPassword(str:String, password:String) throws ->String{ guard password.characters.count >0 else{throw loiMaHoa.Empty} guard password.characters.count >= else{throw loiMaHoa.Short} let mahoa = password + str + password return String(mahoa.characters.sort()) } Catching and Handling Errors do{ let chuoimahoa = try mahoaPassword("Lam", password: "123456") print(chuoimahoa) }catch loiMaHoa.Empty{ print("Bo Trong") }catch{ print("Loi Phat Sinh") } 2.3 JSON 2.3.1 JSON JSON định dạng trao đổi liệu độc lập, tương tự XML.JSON hỗ trợ trực tiếp Javascript JSON cho phép lưu trữ liệu dạng chữ số Cấu trúc JSON dựa cặp Key/Value – Key chuỗi – Value chuỗi số, giá trị boolean object Một JSON Object bao gồm cặp Key/Value bắt đầu dấu “{” kết thúc dấu “}“ Một mảng giá trị nằm cặp dấu ngoặc vuông [ ] cách dấu phẩy “,“ 2.3.2 Sử dụng JSON 27 Ví dụ 1: Sử dụng JSON để mô tả đối tượng Book có thuộc tính bookId, title, price 1: { 2: "bookId" : 1, 3: "title" : "JSON Tutorial", 4: "price" : 40 5: } Ví dụ 2: Sử dụng JSON để mô tả danh sách đối tượng Book 1: [ 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: ] 2.3.3 { "bookId" : 1, "title" : "JSON Tutorial", "price" : 40 }, { "bookId" : 2, "title" : "Learn Java By Examples", "price" : 60 } Các kiểu liệu JSON Có kiểu liệu chính: Number: kiểu số bao gồm số nguyên số thực String: kiểu chuỗi, nội dung bao cặp dấu nháy kép “, ký tự đặt biệt escape dấu \.Theo chuẩn JSON không sử dụng dấu nháy đơn Javascript để bọc chuỗi Boolean: kiểu luận lý bao gồm giá trị true false Array: kiểu mảng, gồm phần tử phân cách dấu phẩy ‘,’ mảng bao cặp dấu [ ] Object: kiểu đối tượng, gồm cặp giá trị nhau, cặp phân cách dấu phẩy’,’, đối tượng bao cặp dấu { }, cặp giá trị bao gồm tên giá trị phân cách dấu hai chấm’:’ Null: giá trị null 28 Kiểu DateTime: Do JSON chuẩn chung có nghĩa không phụ thuộc tảng hay công nghệ, JSON không định kiểu thời gian cụ thể, ngôn ngữ lập trình, tảng triển khai có quy định kiễu liệu ngày tháng khác nhau, đơn cử Javascript lưu trữ kiểu Date từ 1-1-1970 trở PHP kiểu liệu Date, Date số số millisecond tính từ 1-1-1970 (với phiên 5.1.0 từ 13-12-1901), NET có giới hạn ngày gần rộng Chính quy định nên cách gửi / nhận kiểu liệu ngày tháng (Date) JSON khác 2.4 Giới thiệu Cocoapods Cocoapods chương trình giúp quản lý thư viện được sử dụng ứng dụng mobile phát triển dựa khung làm việc Cocoa Thông thường ứng dụng phần mềm cần phải sử dụng nhiều thư viện khác ứng dụng phụ thuộc vào thư viện Chính Cocoapod gọi dependencies manager hay phần mềm quản lý thư viện phụ thuộc ứng dụng Cài Đặt Cocoapods Cocoadpods viết sử dụng ngôn ngữ Ruby cài đặt giống RubyGem Trên OSX sử dụng câu lệnh sau để cài đặt Cocoapods: $ sudo gem install cocoapods Nhập mật gõ Enter để tiến hành cài đặt Tạo Podfile Podfile tập tin đặc biệt Cocoapods sử dụng để xác định danh sách thư viên cài đặt để sử dụng ứng dụng Để tạo Podfile bạn làm theo cách sau: • Tạo tập tin trống với tên Podfile nhờ sử dụng Text Editor XCode • Chạy dụng câu lệnh $ pod inint cửa sổ dòng lệnh Liệt Kê Các Bộ Thư Viện Sử Dụng Sử dụng tập tin Podfile bạn liệt kê thư viện sử dụng ứng dụng Mỗi thư viện liệt kê dòng Podfile bắt đầu chữ pod theo sau tên thư viện, dấu phảy phiên thư viện Ví dụ: platform :ios, '7.0' pod 'AFNetworking', '~> 2.0' 29 pod ‘pop’, ‘~> 1.0' Với ví dụ Cocoapod cài đặt thư viện AFNetworking pop phiên 2.0 1.0 vào bên thư mục ứng dụng Cài Đặt Các Bộ Thư Viện Sau tạo liệt kê thư viện Podfile việc cài đặt thư viện thực cách đơn giản sử dụng câu lệnh:$ pod install Cập Nhật Thư Viện Nếu muốn thay đổi phiên hay bỏ thư viện khỏi ứng dụng bạn cần điều chỉnh nội dung Podfile chạy câu lệnh:$ pod update 30 Phần 2: Xây dựng ứng dụng tìm kiếm địa điểm tảng iOS 2.5 Tổng quan ứng dụng tìm kiếm địa điểm Dựa nhu cầu có thiết yếu người dùng tìm kiếm địa điểm mong muốn xung quang mình, ví dụ người dùng muốn tìm kiếm nhà hang, hay quán ăn gần Xuất phát từ nhu cầu người dùng, với tiện dụng Smart phone, ứng dụng tìm kiếm địa điểm xây dựng cho điện thoại thông minh, mà cụ thể thiét bị chạy iOS để người dùng nhanh chóng tìm kiếm địa điểm mong muốn cách đơn giản tiện dụng nhất, với vài thao tác Smart phone Dữ liệu ứng dụng lấy từ nguồn liệu trang web địa điểm tiếng Foursquare Trang web cung cấp cho người dùng thông tin hang tram nghìn địa điểm giới, có việt nam Đối với lập trình viên, Foursquare cung cấp API để lập trình viên sử dụng ứng dụng Document API mà Foursquare cấp đầy đủ dễ hiểu Có thể nói, nguồn tài nguyên vô hữu ích mà lại hoàn toàn miễn phí, để lập trình viên tự do, nhỏ lẻ xây dựng lên ứng dụng với kho liệu khổng lồ Foursquare 2.6 Các công nghệ, kỹ thuật sử dụng để xây dựng nên ứng dụng Ứng dụng viết cho tảng iOS sử dụng công nghệ lập trình xây dựng ứng dụng Apple Sử dụng ngôn ngữ lập trình Swift, kết hợp với Framework Cocoa, Foundation,… Tất trình xây dựng ứng dụng thực X-code IDE Ứng dụng sử dụng thư viện hỗ trợ là: - Alamofire: Thư viện trợ giúp lập trình Networking - SwiftyJSON: Thư viện hỗ trợ parse JSON 2.7 Các chức ứng dụng Chức tự động tìm kiếm địa điểm dựa vào vị trí người dùng 31 Chức tìm kiếm địa điểm đồ 32 Xem chi tiết địa điểm 33 CHƯƠNG : KẾT LUẬN VÀ KIẾN NGHỊ Kết luận: Sau thời gian tìm hiểu hoàn thành chuyên đề thực tập tốt nghiệp, hướng dẫn tận tình anh Vũ Hồng Công Em nắm bắt quy trình làm dự án phần mềm mobile nói chung đồng thời hiểu thêm nhiều kiến thức iOS thành phần một iOS Application,ngôn ngữ lập trình Swift, cách làm việc Client/Server… Kết đạt đề tài: - Tìm hiểu thành phần iOS Applucation - Sử dụng thành thạo X-code IDE - Nắm bắt lập trình thành thạo với ngôn ngữ Swift - Mặc dù cố gắng nỗ lực để hoàn thành chuyên đề với ứng dụng thực tế, trình độ thời gian có hạn chuyên đề không tránh khỏi sai sót có hạn chế ứng dụng chưa có nhiều chức năng, giao diện chưa thuận tiện người sử dụng Hướng phát triển: - Xây dựng ứng dụng hoàn chỉnh - Cải tiến tối ưu UX/UI - Cung cấp nhiều tính cho người dùng 34 Tài liệu tham khảo [1] The Swift Programming Language [2] The Core iOS-Developer’s Cookbook 5th Edition [3] Beginning iPhone Development with Swift Cán hướng dẫn Sinh viên thực (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) 35 [...]... chỉ cần điều chỉnh nội dung của Podfile và chạy câu lệnh:$ pod update 30 Phần 2: Xây dựng ứng dụng tìm kiếm địa điểm trên nền tảng iOS 2.5 Tổng quan về ứng dụng tìm kiếm địa điểm Dựa trên nhu cầu có thiết yếu của người dùng là tìm kiếm địa điểm mong muốn xung quang mình, ví dụ người dùng muốn tìm kiếm một nhà hang, hay quán ăn gần mình nhất Xuất phát từ nhu cầu đó của người dùng, và với sự tiện dụng của... liệu khổng lồ của Foursquare 2.6 Các công nghệ, kỹ thuật sử dụng để xây dựng nên ứng dụng Ứng dụng được viết cho nền tảng iOS do đó sử dụng các công nghệ lập trình và xây dựng ứng dụng của Apple Sử dụng ngôn ngữ lập trình Swift, kết hợp với các Framework như Cocoa, Foundation,… Tất cả quá trình xây dựng ứng dụng được thực hiện trên X-code IDE Ứng dụng sử dụng các thư viện hỗ trợ là: - Alamofire: Thư... tiện dụng của chiếc Smart phone, ứng dụng tìm kiếm địa điểm được xây dựng cho chiếc điện thoại thông minh, mà cụ thể ở đây là các thiét bị chạy iOS để người dùng có thể nhanh chóng tìm kiếm được địa điểm mình mong muốn một cách đơn giản và tiện dụng nhất, chỉ với vài thao tác trên chiếc Smart phone Dữ liệu của ứng dụng được lấy từ nguồn dữ liệu của trang web về địa điểm nổi tiếng là Foursquare Trang... chức năng chính của ứng dụng Chức năng tự động tìm kiếm địa điểm dựa vào vị trí người dùng 31 Chức năng tìm kiếm địa điểm trên bản đồ 32 Xem chi tiết về các địa điểm 33 CHƯƠNG 3 : KẾT LUẬN VÀ KIẾN NGHỊ Kết luận: Sau một thời gian tìm hiểu và hoàn thành chuyên đề thực tập tốt nghiệp, được sự hướng dẫn tận tình của anh Vũ Hồng Công Em đã nắm bắt được quy trình làm một dự án phần mềm trên mobile nói chung... 2.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... được được sử dụng trong ứng dụng mobile được phát triển dựa trên khung làm việc Cocoa Thông thường một ứng dụng phần mềm sẽ cần phải sử dụng nhiều bộ thư viện khác nhau và ứng dụng như vậy sẽ phụ thuộc vào các bộ thư viện này Chính vì vậy Cocoapod còn được gọi là dependencies manager hay phần mềm quản lý các bộ thư viện phụ thuộc của ứng dụng Cài Đặt Cocoapods Cocoadpods được viết sử dụng ngôn ngữ... hiểu thêm được nhiều kiến thức về iOS như các thành phần trong một một iOS Application,ngôn ngữ lập trình Swift, cách làm việc Client/Server… Kết quả đạt được của đề tài: - Tìm hiểu được thành phần của một iOS Applucation - Sử dụng thành thạo X-code IDE - Nắm bắt và lập trình thành thạo với ngôn ngữ Swift - Mặc dù đã cố gắng nỗ lực để hoàn thành chuyên đề với một ứng dụng thực tế, nhưng do trình độ và... *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 2.1.3 Vòng đời của UIViewController Thường thì mỗi màn hình trong ứng dụng iOS là... về hang tram nghìn địa điểm trên thế giới, trong đó có việt nam Đối với lập trình viên, Foursquare cũng cung cấp bộ API để lập trình viên có thể sử dụng trong ứng dụng của mình Document của API mà Foursquare cũng cấp cũng rất đầy đủ và dễ hiểu Có thể nói, đây là nguồn tài nguyên vô cùng hữu ích mà lại hoàn toàn miễn phí, để các lập trình viên tự do, nhỏ lẻ có thể xây dựng lên ứng dụng của mình với kho... một Text Editor hoặc XCode • Chạy dụng câu lệnh $ pod inint trên cửa sổ dòng lệnh Liệt Kê Các Bộ Thư Viện Sử Dụng Sử dụng tập tin Podfile ở trên bạn có thể liệt kê các bộ thư viện sử dụng trong ứng dụng Mỗi thư viện sẽ được liệt kê trên 1 dòng trong Podfile bắt đầu bởi chữ pod theo sau là tên của bộ thư viện, dấu phảy và tiếp theo là phiên bản thư viện Ví dụ: platform :ios, '7.0' pod 'AFNetworking', '~>