1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu công nghệ phát triển ứng dụng trên iphone phân tích thiết kế hệ thống quản lý thông tin cá nhân xây dựng hệ thống quản lý thông tin cá nhân trên iphone

74 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu Công Nghệ Phát Triển Ứng Dụng Trên Iphone Phân Tích Thiết Kế Hệ Thống Quản Lý Thông Tin Cá Nhân Xây Dựng Hệ Thống Quản Lý Thông Tin Cá Nhân Trên Iphone
Tác giả Trương Quốc Phú
Người hướng dẫn TS. Vũ Tuyết Trinh
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2010
Thành phố Hà Nội
Định dạng
Số trang 74
Dung lượng 2,37 MB

Cấu trúc

  • CHƯƠNG I: ĐẶT VẤN ĐỀ (10)
    • I. TỔNG QUAN VỀ HỆ THỐNG QUẢN LÝ THÔNG TIN CÁ NHÂN (10)
      • I.1. Quản lý công việc (10)
      • I.2. Quản lý thông tin liên lạc (contact) (10)
      • I.3. Hệ quản lý thông tin cá nhân trên iphone (11)
    • II. MỤC TIÊU ĐỒ ÁN (13)
    • III. PHƯƠNG PHÁP THỰC HIỆN (13)
  • CHƯƠNG II: PHÂN TÍCH THIẾT KẾ HỆ THỐNG THÔNG TIN QUẢN LÝ THÔNG TIN CÁ NHÂN (14)
    • I. PHÂN TÍCH CÁC CA SỬ DỤNG CHÍNH (14)
      • I.1.1. Tạo công việc (create Task) (16)
      • I.1.2. Chỉnh sửa – xóa công việc (17)
      • I.1.3. Xem thông tin Task (17)
      • I.1.4. Xem lịch (18)
      • I.1.5. Nhắc việc (18)
      • I.1.6. Tìm kiếm Công việc (18)
      • I.2. Quản lý contact (19)
        • I.2.1. View contact (19)
        • I.2.2. Create contact (21)
        • I.2.3. Edit/delete contact (21)
        • I.2.4. Tìm kiếm (21)
      • I.3. Đồng bộ dữ liệu với google (21)
        • I.3.1. Đồng bộ công việc (22)
        • I.3.2. Đồng bộ contact (22)
      • I.4. Cài đặt hệ thống (23)
    • II. CÁC GÓI CƠ BẢN CỦA HỆ THỐNG (24)
      • II.1. Kiến trúc gói chính của hệ thống (24)
      • II.2. Gói quản lý công việc (25)
      • II.3. Gói quản lý contact (26)
      • II.4. Gói calendar (27)
      • II.5. Gói Google API (27)
    • III. TIẾN TRÌNH HỆ THỐNG (28)
      • III.1. Quick Create Task (28)
      • III.2. Full Create Task (29)
      • III.3. Edit / Delete Task (30)
      • III.4. Create Contact (30)
      • III.5. Edit – Delete Task (31)
      • III.6. Search (32)
    • IV. DỮ LIỆU HỆ THỐNG (32)
  • CHƯƠNG III: CÀI ĐẶT CHƯƠNG TRÌNH (37)
    • I. MÔI TRƯỜNG CÀI ĐẶT (37)
      • I.1. iPhone (37)
      • I.2. Google API (38)
    • II. CÀI ĐẶT CHƯƠNG TRÌNH (39)
      • II.1. Kỹ thuật cài đặt (39)
        • II.1.1. Cài đặt cơ sở dữ liệu cho hệ thống (39)
        • II.1.2. Cài đặt giao diện (41)
      • II.2. Kết quả chương trình (42)
        • II.2.1. Quản lý công việc (42)
        • II.2.2. Calendar (47)
        • II.2.3. Quản lý contact (48)
        • II.2.4. Đồng bộ dữ liệu (49)
  • CHƯƠNG IV: ĐÁNH GIÁ VÀ KẾT LUẬN (50)
    • I. NHỮNG KẾT QUẢ ĐẠT ĐƯỢC (50)
    • II. NHỮNG HẠN CHẾ (50)
    • III. HƯỚNG PHÁT TRIỂN (50)
    • I. Mở đầu về lập trình trên thiết bị di động (51)
    • II. iPhone (55)
      • II.1. Lịch sử phát triển iPhone (55)
      • II.2. Đặc điểm iPhone (56)
      • II.3. Môi trường lập trình ứng dụng iphone (57)
      • II.4. Ngôn ngữ lập trình iphone (Objective-C) (59)
      • II.5. Các bước tiến hành đăng ký phát triển ứng dụng trên Iphone (61)
    • I. Authentication trong Google API (Authentication in the Google Data Protocol) (64)
      • I.1. Authentication cho các ứng dụng web(AuthSub) (64)
      • I.2. Authentication cho các ứng dụng web(Oauth) (64)
      • I.3. Authentication cho các ứng dụng cài đặt trên các thiết bị (clientLogin) (64)
    • II. Google Calendar API (66)
      • II.1. Chứng thực trong Google Calendar (67)
      • II.2. Các Phương thức truy cập dữ liệu Google Calendar (68)
      • III.1. Chứng thực trong Google Contact (70)
      • III.2. Các Phương thức của google Contact API (70)
  • TÀI LIỆU THAM KHẢO (74)

Nội dung

- Nhắc việc: công việc của người dùng sẽ được hệ thống tự động ra thông báo nhắc nhở người dùng thực hiện công việc đó trong thời gian phải thực hiệncông việc.. Việc quản lý công việc và

PHÂN TÍCH THIẾT KẾ HỆ THỐNG THÔNG TIN QUẢN LÝ THÔNG TIN CÁ NHÂN

PHÂN TÍCH CÁC CA SỬ DỤNG CHÍNH

Trong phần này ta sẽ đi phân tích các ca sử dụng chính trong một hệ thống quản lý thông tin cá nhân trên thiết bị di động (Personal information management) Hệ thống quản lý thông tin cá nhân bao gồm quản lý contact, quản lý công việc của người dùng, ngoài ra hệ thống có thể đồng bộ dữ liệu được với Goolge giúp người dùng có thể lưu trữ thông tin cá nhân của mình được bảo đảm trong các trường hợp mất máy, hỏng hóc Sau đây là Ca sử dụng chính của hệ thống:

Hình 2.1: User-case chính của hệ thống

Sau đây ta sẽ phân tích chi tiết các ca sử dụng chính của hệ thống với ca sử dụng chính: quản lý Contact, quản lý công việc, đồng bộ dữ liệu, cài đặt Trong các ca sử dụng này tác nhân chính và duy nhất là người dùng uc Hethong

Hệ thống quản lý thông tin cá nhân

Quan ly Contact Quan ly cong v iec

Dong bo du lieu v oi Google

Trong hệ thống quản lý thông tin cá nhân công việc quản lý công việc được là việc quản lý các danh mục các công việc cần làm Thông tin công việc (Task) bao gồm các thông tin chính sau đây:

- Thời gian thực hiên công việc: thời gian ở đây bao gồm thời gian bắt đầu thực hiện công việc và thời gian hạn chót để hoàn thành công việc Một số công việc sẽ không có thời gian cố định Một số công việc có tính chất chu kỳ lặp đi lặp lại trong một thời gian nhất định

- Địa điểm thực hiện công việc.

- Mức độ quan trọng của công việc.

Công việc thường được chia ra rất nhiều loại công việc: các công việc có tính chất riêng lẻ hay các công việc liên hệ với các công việc khác Trong hệ thống này ta sẽ để cập đến các loại công việc sau đây:

- Công việc thông thường: đây là các công việc đơn lẻ không có mối liên hệ với các công việc khác.

- Project: Là một list bao gồm các công việc con Để thực hiện một Project thì ta phải làm nhiều công việc khác nhau Nhưng công việc này thường sẽ có thời gian thực hiện cụ thể Vd: Đồ án tốt nghiệp được coi là một Project có thời gian thực hiện cụ thể Trong Đồ án thì sẽ có rất nhiều công việc khác nhau với thời gian thực hiện khác nhau như: tìm hiểu, phân tích thiết kế chương trình, cài đặt chương trình, làm tài liệu…

- Check List: là một list các công việc nhỏ Khác với một Project thì check list bao gồm các công việc không có thời gian cụ thể Vd: khi bạn đi chợ(Việc đi chợ được coi là một Check List) bạn cần phải mua nhiều thứ: quần áo, thức ăn, đồ dùng Thì các công việc mua các đồ đó được coi là các công việc con trong check list đó

- Gọi cho một người: trong công việc thì rất nhiều lần bạn cần phải ghi nhớ việc gọi điện thoại cho một người nào đó trong thời gian định trước Với loại công việc này ngoài việc quản lý thời gian còn phải quản lý thông tin người cần gọi( quản lý contact).

- Gửi mail, sms một người: với kiểu công việc này cũng giống kiểu công việc Gọi choi một người Cũng phải cần quản lý contact của người cần liên lạc.

Công việc cũng thường được phân loại ra theo tính chất công việc: Công việc gia đình, công việc cơ quan, công việc bạn bè… Hay nói cách khác công việc sẽ được quản lý theo các nhóm công việc khác nhau.

Trong một hệ thống quản lý không thể không nhắc đến đó là việc thông báo công việc cần làm cho người sử dụng khi đến thời gian cần làm công việc đó.

Sau đây Ta sẽ phân tích các ca sử dụng trong quản lý công việc:

Hình 2.2: Use-case quản lý công việc

I.1.1 Tạo công việc (create Task):

Trong ca sử dụng này thì bao gồm 2 ca sử dụng con: Quick add Task và Add full Task

- Quick add Task: người dùng nhanh một công việc, công việc này đơn gian chỉ là tên công việc sau lúc đó người dùng có thể quay lại cập nhập lại thông tin công việc

- Add full Task: người dùng tạo đầy đủ thông tin công việc (tên công việc, thời gian công việc, địa điểm…) uc UC_Task

Edit /Delete Task View Calendar

View Detail Task View Group

Quick Add Task Add Full Task

Search Task ôextendằ ôextendằ ôextendằ ôextendằ ôextendằ

- Với nhưng công việc gọi điện thoại cho một người, gửi mail hay sms cho ai đó Người sử dụng cần lấy thông tin contact với những thông tin đã có hay những thông tin contact mới cần tạo thêm. Đầu vào của ca sử dụng: đối với trường hợp tạo nhanh: đầu vào là tên công việc Đối với trường hợp tạo đủ thông tin đầu vào là: tên công việc, kiểu công việc, nhóm công việc, thời gian công việc, mức độ ưu tiên, ghi chú Đối với các công việc liên quan tới contact cần thêm thông tin contact. Đầu ra của ca sử dụng: trong ca sử dụng này khi thành một bản ghi công việc sẽ được ghi vào cơ sở dữ liệu Nếu việc tạo mới sai thì sẽ thống báo lỗi

I.1.2 Chỉnh sửa – xóa công việc

Người sử dụng chỉnh sửa các thông tin của công việc, thay đổi thời gian , địa điểm Các công việc thực hiện sau người người dùng cập nhập trạng thái công việc( hoàn thành – chưa hoàn thành) Xóa các công việc không cần thiết hay các công việc đã hoàn thành. Đầu vào ca sử dụng: công việc cần sửa hay xóa Trường hợp sửa đầu vào thêm các thông tin cần sửa. Đầu ra ca sử dụng: bản ghi công việc được chỉnh sửa sẽ được cập nhập thông tin mới vào cơ sở dữ liệu Và khi xóa thì bản ghi sẽ xóa khỏi cơ sở dữ liệu của hệ thống Trường hợp chỉnh sửa hay xóa không thành công sẽ báo lỗi.

Hình 2.3: Use-case View Task

Trong Use-case xem thông tin task này bao gồm 3 use-case con : view task theo nhóm , view task trong một project hay check list, và view chi tiết một task với uc UC_Task

View List Task / Proj ect

CÁC GÓI CƠ BẢN CỦA HỆ THỐNG

II.1 Kiến trúc gói chính của hệ thống

Theo như phân tích các ca sử dụng chính của hệ thống tao có thể thiết kế các gói chính của hệ thống quản lý thông tin cá nhân Hệ thống được thiết kế với 4 gói chính: quản lý công việc, quản lý contact, calendar, google API.

Hình 2.8: Kiến trúc gói của hệ thống

Gói quản lý công việc: chứa các lớp xử lý data, giao diện, đối tượng công việc các lớp trong gói hỗ trợ việc quản lý công việc.

Gói quản lý contact: chứa các lớp xử lý data, giao diện và các đối tượng về contact để phục vụ chức năng quản lý contact.

Gói quản lý Calendar: chứa các lớp tạo giao diện calendar, các lớp xử lý thông tin ngày tháng công việc.

Gói Google API: chứa các lớp data của google, và các lớp về network kết nối với google Các lớp trong gói giúp hệ thống đăng nhập google để đồng bộ dữ liệu công việc và contact của hệ thống với google.

Sau đây ta sẽ chi tiết các gói chính trên pkg He thong

Quan ly cong v iec Quan ly Contact

II.2 Gói quản lý công việc

Trong mục này ta sẽ phân tích chi tiết các lớp trong gói

Hình 2.9: Gói quản lý công việc

Gói quản lý công việc bao gồm các lớp

Lớp Task, Full task, check list, Project, Call a contact, Email a contact: là các lớp định nghĩa các thuộc tính công việc Các lớp Checklist, project, call a contact là các lớp con kế thừa từ lớp fullTask, các lớp này sử dụng trong các công việc khác nhau.

Lớp Grouptask lớp quản lý nhóm công việc.

Trong gói quản lý công việc này có tương tác với 2 gói khác đó là quản lý contact và Google API Trong các Task: CallaContact hay EmailAcontact khi tao cần có thông tin contact nên phải tương tác với lớp quản lý contact để lấy thông tin cần thiết Còn trong với gói Google API thì sử dụng khi muốn đồng bộ công việc. pkg Quan ly cong v i

+ Create Task() : void + Delete Task() : void + Edit Task() : void

+ Add SubTask() : void + Remove SubTask() : void

+ Add Email() : void + Email a Contact() : void

II.3 Gói quản lý contact

Hình 2.10: gói quản lý contact

Trong gói quản lý contact có 2 lớp đối tượng chính là Contact và Groupcontact sử lý thông tin của các đối tượng contact và groupcontact Lớp Abcontact là lớp để lấy thông tin và sử lý các thông tin về contact và groupcontact.

Các lớp ListContactView và peopelView là các lớp xử lý giao diện trong quản lý contact.

Trong gói này cũng có sự tương tác với gói Google API trong quá trình đồng bộ với google. pkg Quan ly contact

+ Addcontact() : void + ContactMatchName() : Array + AddGroup() : void + ContactMatchName() : void

Gói Calendar là gói có chức năng chính là xử lý giao diện để tạo ra giao diện của lịch tháng Trong giao diện lịch này sẽ map thông tin công việc với ngày tháng.

Lớp KalDate là lớp xử lý ngày tháng riêng cho lịch.

Lớp KalView là lớp tạo giao diện.

Lớp kalDataSource là lớp xử lý về công việc để có thể map lên lịch.

Gói Google API là gói có các lớp hỗ trợ việc kết nối với google để có thể lấy thông tin và thay đổi thông tin trên google. pkg Calendar Calendar

Quan ly cong v iec pkg Google API

Các lớp GdataAuthentionFetCher, GDataHTTPFetcher và GDataHTTPFecherLogin là các lớp để kết nối và đăng nhập vào google từ hệ thống.

Lớp GDataEntryCalendar và lớp GDataEntryEvent là các lớp về lịch và công việc trên lịch đó để xử lý thông tin công việc được lấy từ Google Calendar.

Lớp GdataEntryGroup và lớp GdataEntryContact là lớp quản lý về contact và nhóm contact Các lớp này xử lý thông tin contact lấy từ google và hỗ trợ việc đồng bộ dữ liệu.

TIẾN TRÌNH HỆ THỐNG

Hình 2.14: Biểu đồ tiến trình tạo công viêc nhanh

Trong tiến trình này người sử dụng tạo task nhanh: chỉ tạo tên task, Các thành phần khác không cần thông tin Từ danh sách hiển thị các task người dùng thực hiện chức năng tạo task nhanh, hệ thống chuyển sang màn hình hiển thị để người dùng nhập tên task Từ thông tin này chuyển đến lớp control(Task) để thực hiện việc chèn dữ liệu vào cơ sở dữ liệu là EntityTask Sau khi chèn dữ liệu thành công chương trình trả về thông báo trên danh sách Task cho người dùng. sd Create_Task Quick Diagram

User List Task View Quick Add Task

Hình 2.15: Biểu đồ tiến trình tạo công việc

Trong tiến trình tạo một task đầy đủ thông tin này người dùng từ giao diện danh sách task người dùng sử dụng chức năng addtask hệ thống chuyển sang giao diện tạo task, trong giao diện này người dùng nhập tên Task và thực hiện chọn loại công việc Xong bước này các thông tin về tên Task và loại task được chuyển tới lớp Task từ đây thực hiện phương thức CreateTask để chèn một bản ghi vào cơ sở dữ liệu Việc chèn dữ liệu thành công trả về thông báo hệ thống chuyển tới khung nhìn detail task, khung nhìn này tùy thuộc vào loại task mà sẽ hiện ra các trường thông tin cần có của loại công việc đó từ đây người dùng điền thông tin vào và update các thông tin được chuyển đến lớp Task và thực hiện phương thức updateTask để update các thông tin vào cơ sở dữ liệu Việc update vào cơ sở dữ liệu thành công trả về thông báo cho người dùng. sd Create_Task_Full Diagram

:User List Task View Add Task Full View Detail Task View Task Entity Task

Chose type task() Add Task()

Create Task DateRow() Return Result() Redirect()

Hình 2.16: Biểu đồ tiến trình chỉnh sửa xóa công việc

Trong tiến trình Edit task người dùng từ danh sách các task sẽ chọn một task để xem thông tin đầy đủ một task Hệ thống chuyển tới khung nhìn DetailTask để người dùng xem thông tin, cũng từ khung nhìn này người sử dụng có thể chuyển sang trạng thái edit task để sửa các thông tin Sau khi sửa thông tin của task các giá trị mới được cập nhập sẽ chuyển đến lớp Task để thực hiện UpdateTask và cơ sở dữ liệu Update thành công sẽ trả về thông báo.

Cũng từ khung nhìn DetailTask người dùng cũng có thể thực hiện việc xóa task Khi chọn xóa id của task sẽ được chuyền tới lớp Task thực hiện phương thức DeleteTask để xóa thông tin task đó từ cơ sở dữ liệu Xóa thành công sẽ trả về thông báo.

Tiến trình tạo mới contact bao gồm, người dùng từ khung nhìn danh sách contact(khung nhìn đầu tiên) thực hiện chức năng createContact Hệ thống chuyển sang khung nhìn newContact từ màn hình này người dùng sẽ nhập các thông tin của một contact mới muốn tạo Các thông tin này sẽ chuyển tới lớp Contact để xử lý và thực hiện phương thức Addcontact insert dữ liệu vào cơ sở dữ liệu. sd Edit / Delete Task

User List Task View Detail T ask View Task Entity T ask

Hình 2.17: Biểu đồ tiến trình tạo contact

Hình 2.18: Biều đồ tiến trình sửa - xóa contact

Từ danh sách contact người dùng chọn một contact hệ thống chuyển sang detailContact Trong khung nhìn này thì người dùng có thể chuyển sang chế độ chỉnh sửa, người dùng sẽ chỉnh sửa nhưng thông rồi chuyển sang lớp Contact để sd Create Contact

User List Contact New Contact View Contact Entity Contact

User List Contact Detail Contact Contact Entity Contact

Return() thực hiện phương thức UpdateContact vào cơ sở dữ liệu Cập nhập xong sẽ trả về thông báo cập nhập thành công.

Việc xóa contact chuyển id contact tới lớp contact và sử dụng phương thức DeleteContact để xóa bản ghi contact đó trong cơ sở dữ liệu.

Hình 2.19: Biểu đồ tiến trình tìm kiếm

Tiến trình tìm kiếm thực hiện từ khung nhìn SeachView người dùng sẽ nhập thông tin cần tìm kiếm Từ khóa này sẽ được chuyển đến 2 lớp Task và Contact để thực hiện các phương thức tìm kiếm thông tin trùng với từ khóa tìm kiếm Từ 2 lớp này sẽ thực hiện truy vấn với từ khóa tìm kiếm đến cơ sở dữ liệu Truy vấn trả về thông tin các Task hay contact tìm được sẽ được hiển thị ở searchview cho người sử dụng xem thông tin.

DỮ LIỆU HỆ THỐNG

Từ những phân tích trên ta có thể thấy dữ liệu của hệ thống gồm 2 đối tượng cần được lưu dữ đó là công việc và contact.

Bảng dữ liệu lưu dữ thông tin công việc:

Column Name Kiểu dữ liệu/Kích thước Ràng buộc Mô tả

Khóa chỉnh sd UC_Task

User Search View Task Contact Entity Task Entity Contact

Hạn, Thời gian kết thúc

Repeat Integer Mức độ lặp lại của task

Priority Integer Mức độ quan trọng của

Type Integer Kiểu task: normal, project, TaskList,

List Integer Khóa ngoài liên kết với TaskId của một task khác Ứng với Id Project, checklist cha.

Location Text Địa điểm thực hiện

Note Text Ghi chú cụ thể

State bit Trạng thái công việc:

Hoàn thành, Chưa hoàn thành.

GroupId Integer Khóa ngoài liên kết với GroupId trong bảng

Nhóm công việc: work, Home, other

Phone Text Số điện thoại cần gọi.

DateTime Thời gian chỉnh sử lần cuối.

DateTime Thời gian đồng bộ lần cuối.

LinkSync Text Link tới entry trên google calendar(id của entry đó)

Tên trường Kiểu dữ liệu

GroupId integer Không được null Khóa chỉnh

LastestmodifyDate DateTime Thời gian chỉnh sử lần cuối

LastestSyncDate DateTime Thời gian đồng bộ lần cuối

LinkSync Text Link tới entry trên googl Calendar

Dữ liệu contact tao sẽ lấy trực tiếp dữ liệu contact từ máy đang lưu trữ để sử dụng việc này sẽ tao thuận tiện cho việc sử dụng contact trong điện thoại tránh sự không đồng bộ giữ dữ liệu trên diện thoại và dữ liệu trong hệ thống Ta có các bảng dữ liệu lưu thông tin contact sau :

Bảng Pesonal: lưu các thông tin của của người Các thông tin lưu ở bảng

Personal là các thông tin đơn giá trị Các thông tin đa giá trị như Phone, Email, Address được định nghĩa và lưu giá trị trong các bảng sau

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ROWID Integer Không được null

Bảng MultiValueEntry : định nghĩa các trường dữ liệu đa trị ví dụ như

Tên trường Kiểu dữ liệu

Ràng buộc Mô tả parent_id integer Không null Khóa chính key Integer value text Trên trường dữ liệu

Bảng MultiValue: lưu giá trị các trường dữ liệu đa trị được đinh nghĩa bên trên.

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

UID integer Không null Khóa chỉnh record_id Integer Khóa ngoài với bảng personal property Integer Kiểu giá trị phone, email, address… identifier Integer Số tứ tự của giá trị trong trường giá trị label Integer Khóa ngoài liên kết ngoài với bảng MultiValueEntry value Text Giá trị trường dữ liệu

Bảng Image: Lưu dữ anh đại diện của người trong contact

Tên trường Kiểu dữ liệu

ROWID Integer Không được null Khóa chính record_id Integer Khóa ngoài liên kết với Rowid trong bảng personal format Integer crop_x Integer crop_y Integer crop_width Integer crop_height Integer data Blob Lưu dữ ảnh

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

ROWID Integer Không null Khóa chính

Bảng ABGroupMembers: Thành viên một nhóm

Tên trường Kiểu dữ liệu Ràng buộc Mô tả

UID Integer Không null Khóa chính group_id Integer Khóa ngoài liên kết với bảng ABGroup member_type Integer member_id Integer Khóa ngoài liên kết với bảng personal

CÀI ĐẶT CHƯƠNG TRÌNH

MÔI TRƯỜNG CÀI ĐẶT

Như ta đã biết iphone là một trong những smatphone được thịnh thành nhất hiện nay Iphone được biết đến với những một trong các điện thoại có màn hình cả úng điện dung và nhiều tính năng nổi bật( xem chi tiết phần phụ lục I.2 iPhone) Về ứng dụng hỗ trợ trên iphone rất đa dạng và rất nhiều với kênh phân phối chính là Appstore hiện có có hơn 100.000 ứng dụng(miễn phí hay mất phí), số lượng tải về đạt 3 tỷ lượt Đây chính là môi trường tiềm năng cho phát triển ứng dụng Từ những phân tích thiết kế hệ thống quản lý cá nhân ở chương II ta sẽ đi thực hiện cài đặt ứng dụng chương trình quản lý thông tin cá nhân trên iphone.

Sau đây ta sẽ nói sơ qua về môi trường lập trình ứng dụng iphone(chi tiết nói ở phần phụ lục1: Lập trình ứng dụng trên iphone): hệ điều hành iphone, ngôn ngữ lập trình, môi trường lập trình, các bước phát triển ứng dụng. iphone OS: hệ điều hành iphone được phát triển bởi apple, từ lúc ra đời tới bây giờ có nhiều phiên bản hệ điều hành được phát triển, phiên bản mới nhất hiện nay là iphone OS 3.1.3 và phiên bản iphone OS 4.0 beta Iphone OS có 4 lớp cơ bản: Core OS Layer, Core Servevices Layer, Media layer, Cocoa Touch Layer.

Objective-C: là ngôn ngữ chính thức để phát triển hệ điều hành iphone và các ứng dụng trên iphone Objetive-c là một ngôn ngữ hướng đối tượng được phát triển lên từ trình biên dịch C Để lập trình ứng dụng trên iphone apple đưa ra nhiều thư viện và framework hỗ trợ Các thư viện và framework được chia ra thành 4 lớp cơ bản ứng với 4 lớp cơ bản trong hệ điều hành iphone.

Iphone SDK: là bộ công cụ phát phát triển ứng dụng cho iphone Iphone

SDK chạy trên nền hệ điều hành Mac OS X Trong iphone SDK hỗ trợ người lập trình viết code, debug, thiết kế giao diện, đánh giá hiệu năng ứng dụng với các ứng dụng đi kèm: iphone simulator, Interface Builder, Instruments, Xcode Organizer. Đăng ký phát triển ứng dụng iphone: sự khác biệt trong việc phát triển các ứng dụng trên các nền tảng của apple phát triển vớic các nền tảng đó là việc quản lý các developer và các ứng dụng phát triển.Bạn muốn phát triển một ứng dụng cho iphone bạn không chỉ việc viết code và test chương trình của mình trên simulator(với nhiều hạn chế so với iphone thật) mà bạn phải trực tiếp test chương trình của mình trên thiết bị Và sau khi phát triển xong ứng dụng bạn cần chia sẻ ứng dụng đó rộng rãi cho người dùng iphone Để làm những điều đó bạn cần có một tài khoản developer có trả phí để đăng kí các thông tin về ứng dụng các thiết bị sử dụng trong quá trình phát triển của mình trên trang(https://developer.apple.com/iphone ) Những ứng dụng đăng ký và được quản lý trên sau khi phát triển xong mới có thể được đưa lên AppStore (kênh phân phối ứng dụng chính thống cho iphone) để chia sẻ hay thương mại hóa ứng dụng của mình.

Google là một hệ thống trực tuyến hỗ trợ người dùng với nhiều dịch vụ khác nhau Ở đây ta để cập tới 2 dịch vụ là google calendar và googl contact Google calendar là dịch vụ giúp người dùng quản lý công việc của mình theo thời gian Các công việc được quản lý theo ngày, theo nhóm công việc Đây là một server tốt cho việc lưu dữ thông tin cho ứng dụng quản lý thông tin cá nhân trên iphone Ứng dụng sẽ đồng bộ dữ liệu công việc với google calendar.

Hình 3.1: Giao diện google calendar

Google contact là một dịch vụ quản lý thông tin liên lạc đi kèm với Gmail. Dịch vụ này giúp người dùng lưu dữ các thông tin liên lạc(học tên, email, điện thoại, địa chỉ….) của bạn bè, những người bạn đã liên lạc Và google contact cũng là một server lý tưởng để lưu trữ thông tin Chương trình sẽ đồng bộ dữ liệu contact trên iphone với google contact để lưu trữ dữ liệu.

Hình 3.2: giao diện quản lý contact trên Gmail

Google hỗ trợ việc truy xuất dữ liệu từ các trang web hay các các ứng dụng khác thông qua Google API Google API hiện nay hỗ trợ nhiều ngôn ngữ khác nhau: PHP, Java, net, Python, Objective-c Trong chương trình này ta sử dụng bộ thư viện google API với ngôn ngữ objective-c(Có thể xem chi tiết trong Phụ lục2:

Google API Hay có thể download bộ thư viện đó trên trang http://code.google.com/ apis/gdata/docs/directory.html ) Trong phân này ta nói sơ qua về các dữ liệu và các phương thức của google API.

Dữ liệu Google API được định nghĩa với các lớp chính sau:GdataEntryCalendar(Dữ liệu nhóm công việc), GdataEntryCalendarEvent (lớp định nghĩa các công việc cụ thể) ,GdataObject (là lớp định nghĩa chung cho tất cả các đối tượng quản lý Các đối tượng cụ thể có các lớp riêng kế thừa từ lớp này).Gdatawhen (lớp đối tượng thời gian bao gồm thời gian bắt đầu và thời gian kết thúc.

CÀI ĐẶT CHƯƠNG TRÌNH

II.1 Kỹ thuật cài đặt

Trong phần này em trình bầy một số kỹ thuật cài đặt chính được sử dụng để cài đặt hệ thống trên iPhone.

II.1.1 Cài đặt cơ sở dữ liệu cho hệ thống:

Hệ thống sử dụng hệ quản trị cơ sở dữ liệu sqlite3(sqlite3 là hệ quản trị nhỏ gọn được dùng trong các ứng dụng co các thiết bị di động) Trong quá trình thực hiện em đã sử dụng một add-on của firefox (SQLite Manager) để thực hiện việc tạo các bảng trong cở sở dữ liệu và kiểm tra dữ liệu trong các chức năng cập nhập tới cơ sơ dữ liệu. Để thực kết nối hệ quản trị cơ sở dữ liệu với chương trình em sử dụng bộ thư viện libsqliter3.0.dylib Các phương thức của bộ thư viện được sử dụng trong chương trình là:

Truy vấn dữ liệu static sqlite3_stmt *init_statement = nil; if(init_statement == nil){ const char *sql = "SELECT * FROM Task WHERE taskId=?"; if(sqlite3_prepare_v2(database, sql, -1, &init_statement,NULL) != SQLITE_OK){

NSAssert1(0, "Error: failed to prepare statement with message '%s'.",sqlite3_errmsg(database));

} } sqlite3_bind_int(init_statement, 1, taskId);//truyen biết vào câu truyvấn if(sqlite3_step(init_statement) == SQLITE_ROW)

//lay du lieu cac cot của cac ban ghi sqlite3_column_text(init_statement,1)//lay dữ liệu string từ côt1; sqlite3_column_int(init_statement, 2); //lấy dữ liệu int từ cột 2;

Insert Dữ liệu if(insert_statement == nil){ static char *sql = "INSERT INTO task (taskName, priority, state, list)

VALUES(?,'0','0',?)"; if(sqlite3_prepare_v2(database1, sql,-1, &insert_statement, NULL) !

NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database1));

} sqlite3_bind_text(insert_statement, 1,[taskName UTF8String], -1,

SQLITE_TRANSIENT); //truyen dữ liệu text vào biến 1 của câu truy vấn sqlite3_bind_int(insert_statement,2, list);// truyền dữ liệu int vào biến 2 câu truy vấn. int success = sqlite3_step(insert_statement);//thực hiện câu truy vấn

Update dữ liệu const char *sql = "UPDATE task set state=?,lastestModifyDatetime=? Where taskId=?"; if(sqlite3_prepare_v2(database, sql, -1, &update_statment, NULL) !=

NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));

} int success = sqlite3_step(update_statment);

Xóa dữ liệu const char *sql = "DELETE FROM task WHERE taskId = ?"; if (sqlite3_prepare_v2(database, sql, -1, &delete_statment, NULL) !=

NSAssert1(0, @"Error: failed to prepare statement with message '%s'.", sqlite3_errmsg(database));

} int success = sqlite3_step(delete_statment);

Cơ sở dữ liệu hệ thống gồm 2 phần: công việc và phần contact.

Phần công việc được cài đặt trên hệ quản trị sqlite3 đã nói phía trên với 2 bảng Task và bảng GroupTask Trong khi cài đặt chương trình thì sẽ đọc hết dữ liệu trong 2 bảng này đưa dữ liệu đó ra 2 mảng dữ liệu TasksArray và GroupArray từ 2 mảng dữ liệu này ta sẽ thực hiện các biện phát sắp xếp phân loại các loại công việc. Trong quá trình Cập nhập thông tin thì sẽ cập nhập thông tin vào cơ sở dữ liệu và sau đó sẽ cập nhập lại thông tin trên 2 mảng dữ liệu này.

Phần contact: sử dụng dữ liệu contact của máy Trong phần này sử dụng framework Addressbook.framework và AddressbookUI.framework để tác động lên dữ liệu contact của máy Sử dụng lớp ABAddressBookRef kết nối với contact của máy Sau đó sẽ dùng ABRecordRef để lấy thông tin chi tiết của các bản ghi trong contact.

II.1.2 Cài đặt giao diện

Trong phần cài đặt giao diện cho hệ thống em sử dụng các viewcontroller sau đây:

TabBarViewController: controller này là phần giao diện chính của chương trình Giúp việc chuyển các chức năng của hệ thống một cách nhanh nhất, khi muốn chuyển chức năng ta chỉ cần chuyển tab.

TableViewController: viewController này sử nhiều gần như các phần giao diện của chương trình đều sử dụng tableview Trong Table view có 2 kiểu view khác nhau đó là view theo group và view theo plan.

NavigationViewController: viewcontroller này dùng để hiện tên các view, và nơi để các nút thực hiện các chức năng của chương trình quan trong hơn nó dùng để truyển qua chuyển lại các view trong cùng một chức năng.

Ngoài các viewcontroller chính được sử dụng nhiều trên chương trình còn sử dụng các viewcontroller khác: searchviewcontroller, pickerdateController, textFieldcontroller.

II.2 Kết quả chương trình

Chương trình được đặt trên là PIM (Personal Information Management). Icon của ứng dụng như hình vẽ, có kèm theo số để báo số công việc chưa làm đang được quản lý trong chương trình Chương trình chi ra làm 4 phần chính: phần quản lý task(quản lý công việc), phần Calendar, phần quản lý contact Và phần cài đặt chương trình 4 phần này được bố trí ở thanh TabBar người dùng có thể truy nhập vào các phần khác nhau truyển từ mục này dang mục khác một cách nhanh chóng.

Hình 3.5: Giao diện chính của chương trình

II.2.1 Quản lý công việc

Phần quản lý công việc được đặt ngay đầu tiên trong các tab của chương trình. Trang đầu tiên của phần quản lý công việc được chia ra làm 2 mục chính Mục đầu là phần quản lý task chung:

- All Tasks phần quản lý tất cả các task, đưa ra các 2 chỉ số: số mâu đen là số các task có trong hệ thống, số mầu đó là các task chưa được thực hiện cần thực hiện trong thời gian tới.

- Focus Tasks: là phần lọc ra các task trong khoảng thời gian gần với hiện tại nhất Khoảng thời gian đó là 1, 2, 3 ngày hay 1 tuần Thông số này sẽ được người dùng lựa chọn trong mục setting của chương trình.

- Phần các nhóm công việc: ở màn hình này sẽ đưa ra các nhóm công việc được quản lý Và cũng như phần All Tasks và Focus Tasks thì các nhóm này cũng hiện số các task hiện có và các task chưa hoàn thành.

Từ các mục quản chính này có thể xem chi tiết các task trong mục đó khi chọn sẽ chuyển sang list công việc Cũng trong trang này người dùng có thế chỉnh sửa các nhóm công việc: xóa và thêm các nhóm.

Hình 3.6: Giao diện chỉnh sủa nhóm công việc.

ĐÁNH GIÁ VÀ KẾT LUẬN

NHỮNG KẾT QUẢ ĐẠT ĐƯỢC

- Tìm hiểu lập trình ứng dụng trên iphone, hướng phát triển để chia sẻ một ứng dụng iphone trên applestore.

- Lập trình thành thao ngôn ngữ objetive-c để lập trình ứng dụng cho iphone.

- Tìm hiểu google api: hiểu được các kiểu đối tượng dữ liệu trên google. Tìm hiểu chi tiết về google calendar api và google contact Biết sử dụng bộ thư viện google api bằng ngôn ngữ objetive-c để thực hiện đồng bộ dữ liệu từ chương trình với google.

 Xây dựng ứng dụng và cài đặt

- Phân tích thiết kế hệ thống quản lý thông tin cá nhân (quản lý công việc và quản lý contact).

- Lập trình ứng dụng quản lý thông tin cá nhân trên iphone Với các chức năng cần thiết cho một hệ thông quản lý thông tin cá nhân trên thiết bị di động.

NHỮNG HẠN CHẾ

- Thời gian đầu không thành thạo ngôn ngữ objetive-c Và việc cài đặt hệ điều hành Mac OS X trên máy thường mất nhiều thời gian.

- Chương trình vẫn còn một số lỗi nhỏ chưa được fix hết.

HƯỚNG PHÁT TRIỂN

- Trong thời gian tới chương trình cần được sửa các lỗi hiện có và cập nhập thêm một số chức năng mới.

- Đăng ký để được phân phối ứng dụng trên kênh phân phối chính thứcAppleStore.

PHỤ LỤC 1: LẬP TRÌNH ỨNG DỤNG IPHONE

Mở đầu về lập trình trên thiết bị di động

Hiện nay thiết bị di động (mobile rất phổ biến với nhiều hệ điều hành nhiều dòng máy khác nhau Các trường trình ứng dụng cũng được phát triển nhiều trên các dòng máy đó Các thiết bị di động(mobile) chủ được chạy và phát triển ứng dụng trên các nền tảng sau đây :

JavaME: là nền tảng phổ biến nhất hiện nay Nó phù hợp với với các máy dòng thấp Ứng dụng có kích thước nhỏ thân thiện, đơn giản, dễ thao tác, tạo cảm giác sẽ chịu cho người dùng khi làm xài nó.

- Công nghệ > multi-touch, kết hợp với drivers khá thông minh nên mình có cảm giác như thật với những thứ nó hiển thị trên màn hình.

- Xử lý nhanh, đồ họa tốt, các cảm biến làm cho iPhone thêm sexy và công nghệ

- Cảm biến về gia tốc, áp suất (lắc, sốc, rung iPhone thì cảm biến này sẽ nhận biết được) và cảm biến không gian 3 chiều (nghiêng, xoay, di cuyển iPhone).

II.3 Môi trường lập trình ứng dụng iphone Ứng dụng cho Iphone được viết bằng ngôn ngữ Objective-C Apple hỗ trợ người lập trình một công cụ phát triển ứng dụng cho iphone đó là Iphone Sdk. Iphone Sdk chỉ chạy được trên nền hệ điều hành Mac OS X Hiện tại đó có phiên bản phone SDK 4.0 beta hỗ trợ thêm lập trình cho iPad Trong Iphone Sdk bao gồm:

Xcode: Công cụ dùng để lập trình ngôn ngữ Objective-C, là một IDE đầy đủ các tính năng biên dịch, debug, quản lý các thiết bị, đóng gói ứng dụng với chứng nhận của apple, cài đặt các ứng dụng cho iPhone.

Hình 5.2: Giao diện Xcode iPhone simulator: dùng để chạy ứng dụng của bạn tương tự như một chiếc iPhone thực sự , test và debug các ứng dụng cho iphone trên máy tính Hỗ trợ các tình năng cơ bản nhất của iphone.Simulator là một công cụ thử nghiệm đảm bảo giao diện người dùng của ứng dụng hoạt động như bạn dự định Một số hạn chế về thiết bị phần cứng : cảm ứng trọng lực, GPS, camera, phone.

Hình 5.3: Giao diện iphone simulator

Interface Builder: hỗ trợ thiết kết giao diện Thiết kế giao diện cho ứng dụng đơn giản hóa với thao tác kéo thả các Viewcontroller sẵn trong thư viện Kết nối giao điện với code thực hiện của bạn.

Hình 5.4: giao diện Interface Builder

Xcode Organizer: Đối với một người phát triển ứng dụng trên iphone thì với

Xcode organizer quản lý các thiết bị(iphone) và các chứng nhận phát triển chương trình của bạn Nó làm việc với Keychain để đảm bảo rằng ứng dụng của bạn đã được cấp chứng nhận trước khi cài đạt nó vào một iPhone Xcode Organizer cung cấp cho bạn truy cập nhanh các tập tin thường xuyên được sử dụng và các dự án.

Hình 5.5: Giao diện Xcode Organizer

Instruments: kiểm tra so sánh hiệu năng của ứng dụng khi chạy trên thiết bị từ đó bọn có thể tối ưu code của mình từ đó ứng dụng của bạn tốt hơn.

II.4 Ngôn ngữ lập trình iphone (Objective-C)

Objective- C là một ngôn ngữ được tạo ra từ nhưng năm 1980( tác giả Brad Cox) được phát triển trên cở sở ngôn ngữ C Nó là một ngôn ngữ hướng đối tượng. Các kiểu định nghĩa lớp , hàm thuộc tính có sự khác biệt với ngôn ngữ C/C++

II.4.1 Các định nghĩa đặc trưng trong ngôn ngữ Objective-C

- Interface: Định nghĩa tên lớp, kiểu lớp (được viết trong các file *.h)

@interface classname : superclassname { // instance variables

+(return_type)classMethod3:(param1_type)parameter_varName;

-(return_type)instanceMethod1:(param1_type)param1_varName:

-(return_type)instanceMethod2WithParameter:(param1_type)param1_varName andOtherParameter:(param2_type)param2_varName;

- Implementation: (được viết trong các file m)

- Các lớp và các kiểu dữ liệu: int, float, double, char, id, _Bool, _Complex, _Imaginary

II.4.2 Các Framework sử dụng trong iPhone:

Authentication trong Google API (Authentication in the Google Data Protocol)

I.1 Authentication cho các ứng dụng web(AuthSub):

AuthSub cho phép các ứng dụng phát triển trên nền web có thể truy cập các dịch vụ của google thay cho việc người dùng đăng nhập trực tiếp các dịch vụ đó trên google Để duy trì một mức độ bảo mật cao, AuthSub cho phép các ứng dụng xác thực tài khoản khi người dùng đăng nhập

I.2 Authentication cho các ứng dụng web(Oauth):

Tất các các google API đều hỗ trợ OAuth OAuth là một chuẩn cho phép sử dụng các dữ liệu tron gcacs ứng dụng web Trong một số trường hợp, OAuth tương tự như đăng ký với chế độ bảo mật với tùy trọn trong AuthSub Tất cả các ứng dụng yêu cầu phải làm OAuth tải lên một chứng chỉ bảo mật và đăng ký với google.

I.3 Authentication cho các ứng dụng cài đặt trên các thiết bị (clientLogin):

ClientLogin cho phép người dùng đăng nhập vào tài khoản google của họ từ ứng dụng của bạn Ứng dụng sẽ kết nối với Google với các thông tin đăng nhập và truy cập đến Goolge Data API Khi các thông tin đăng nhập đã được chứng thực thành công Google sẽ trả về một đoạn mã xác nhận, ứng dụng của bạn sẽ sử mỗi khi yêu cầu đăng nhập vào tài khoản của người dùng. Đoạn mã xác nhận có hiệu lực trong một thời gian dài, với các dịch vụ của goole bạn đang sử dụng.

Cơ chế Authentication trong ClientLogin

Hình 5.8: cơ chế xác thực trong cliendLogin google

1 Khi ứng dụng(third-party) cần truy cập vào các dịch vụ google của người dùng nó lây thông tin đăng nhập của người dùng( tên đăng nhập và mật khẩu)

2 ứng dụng tạo ClientLogin và gọi tới Google’s Authorization service.

3 Nếu Google’s Authorization service cần thêm sự xác nhận thì sẽ về thêm một mã CAPTCHA.

4 Nếu có mã CAPTCHA trả về thì ứng dụng sẽ thông báo yêu cầu xác nhận mã CAPTCHA tới người dùng.

5 Người dùng xác nhận mã CAPTCHA tới ứng dụng.

6 Ứng dụng tạo mới ClientLogin và gửi thông đăng nhập lần này bao gồm cả câu trả lời CAPTCHA và thông tin đăng nhập

7 Khi quá trình đăng nhập thành công Google’s Authorization service trả về mã xác nhận cho ứng dụng

8 Ứng dụng kết nối với dịch vụ google và truy cập dữ liệu, kèm theo mã xác nhận mà Google’s Authorization service gửi trước đó.

9 Google service nhận đúng mã xác nhận sẽ cung cấp các dữ liệu yêu cầu.

Sử dụng ClientLogin trong ứng dụng

1 Tạo Giao diện cho người dùng đăng nhập: giao diện đăng nhập cần yêu cầu username và password Giao diện đăng nhập cũng nên có khả từ Google, nếu có yêu cầu và mới xác nhận từ người sử dụng Lý tưởng nhất, giao diện người dùng của bạn sẽ bao gồm một liên kết đến trang đang nhập Google Accounts

(https://www.google.com/accounts/login) trong trường hợp người sử dụng cần đăng ký một tài khoản mới hoặc chỉnh sủa tài khoản khác.

2 Viết Code để tạo phương thức HTTPS POST cho ClientLogin yêu cầu và truyền tải Code này cần có logic để xử lý CAPTCHA và bao gồm các thông số logincaptcha và logintoken Các ứng dụng cũng sẽ có thể phát hiện khi người dùng bỏ qua yêu cầu thông tin hoặc có lỗi khi nhập thông tin và đưa ra thông báo.

3 Xử lý các hồi đáp từ Google: có 4 câu trả lời có thể khi yêu cầu đăng nhập

- Thất bại (HTTP 403) kèm một thông báo lỗi.

- Yêu cầu không hợp lệ.

- Thất bại khi xác nhận CAPTCHA.

Một hồi đáp thành công có kèm theo một mã thông báo ủy quyền có nhãn “Auth” Mã thông báo này phải được sử dụng trong tất cả các yêu cầu tiếp theo với google service cho tài khoản này Thẻ ủy quyền phải được bảo vệ chặt chẽ và không nên trao cho bất kỳ ứng ụng khác Thời hạn các mã thôgn báo thay đổi phụ thuộc vào các dịch vụ.

Một hồi đáp không chỉ bao gồm một hoặc nhiều lỗi mã mà có thể một url với các thông báo lỗi được hiển thị cho người dùng Lưu ý ClientLogin không phân biệt giữa việc thật bại do mật khẩu không chính xác hoạc do một tên đăng nhập không được công nhận.

4 Xử lý CAPTCHA từ google:

Google Calendar API

Google Calendar API cho phép các ứng dụng khách có thể xem, chỉnh sửa các Event trong calendar trên máy chủ google Ứng dụng của bạn sử dụng Google calendar Data API để tạo mới các Event, chỉnh sửa hay xóa các sự kiện đã có và có thể truy vấn các sự kiện với các tiêu chí cụ thể của người dùng hay ứng dụng.

Hiện có nhiều công cụ sử dụng Calendar Data API Vd: bạn có thể tạo font- end cho web cho Calendar của nhóm sử dụng Google Calendar như là phần back end Hoặc bạn có thể tạo một lịch công cộng cho google Calendar để hiển thị các sự kiện Hoặc bạn có thể tìm kiếm lịch biểu liên quan để Hiển thị một danh sách các sự kiện sắp tới trên các lịch biểu.

II.1 Chứng thực trong Google Calendar: Để có quyền thực hiện các thao tác Insert, Update, Delete dữ liệu trên calendar thì Cần có yêu cầu chứng thực Có 2 kiểu chứng thực AuthSub và ClientLogin (đã nói ở phần trên) phụ thuộc vào chương trình khách của bạn là web hay là ứng dụng.

Chứng thực qua AuthSub proxy: được sử dụng với các ứng dụng web cần xác thực người dùng cho các tài khoản Google Để có một mã thông báo AuthSub cho một người sử dụng nhất, ứng dụng của bạn phải chuyển hướng người dùng tới URL AuthSubRequest để đăng nhập vào tài khoản Google Của họ Các Url AuthSubRequest có dạng như sau: https://www.google.com/accounts/AuthSubRequest?scope=http%3A%2F

%2Fwww.google.com%2fcalendar%2Ffeeds%2F&session=1&secure=0&next=http

%3A%2F%2Fwww.coolcalendarsite.com%2Fwelcome.html

Sau khi đăng nhập, hệ thông AuthSub chuyển hướng chúng đên Url mà bạn chỉ định trong các tham số truy vấn tiếp theo của Url AuthSubRequest Hệ thống AuthSub gắn thêm một đoạn mã xác thực. http://www.coolcalendarsite.com/welcome.html?token=yourAuthToken

Dịch vụ AuthSubSessionToken sẽ trả lại bao gồm một tiêu đề mã xác thự có chứa session và hạn thời gian mã xác nhận đó hợp lệ Ứng dụng phía máy chủ của bạn có thể sử dụng mã xác thực để được ủy quyền truy cập tiếp tới Google Calendar Dưới đây là một vidu về yêu cầu HTTP bạn sẽ gửi cho dịch vụ Google Calendar Feed.

GET /calendar/feeds/default/private/full HTTP/1.1

Content-Type: application/x-www-form-urlencoded

Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2

Chứng thực ClientLogin với username/ password:

Phương thức ClientLogin yêu cầu truy cập với username và password cho tài khoản Google Để nhận được mã xác thực sử dụng cơ chế ClientLogin gửi một yêu cầu với phương thức POST tới URL sau: https://www.google.com/accounts/ClientLogin

Các tham số truyền cho POST là: Email, Password, source(id của ứng dụng), service( chuỗi c1 ứng với dịch vụ Google Calendar)

Nếu yêu cầu chứng thực không thành công, ứng dụng sẽ nhận được một mã trạng thái :HTTP 403 forbidden.

Nếu thành công, dịch vụ trả về một mã trạng thái HTTP 200 ok, Công với ba chữ số mã dài trong thông báo trả về: SID, LSID và Auth Giá trị Auth là phép mã thông báo rằng bạn sẽ gửi vào Calendar với yêu cầu của bạn, để giữ một bản sao của giá trị đó Bạn có thể bỏ qua các SID và LSID giá trị Tất cả các yêu cầu truy cấp đều yêu cầu chứng thực, bạn phải đặt tiêu đề ủy quyên trong các yêu cầu , bằng cách sử dụng định dạng sau:

II.2 Các Phương thức truy cập dữ liệu Google Calendar

 Lấy danh sách Lịch: Calendar Data API cung cấp một số cách để truy cập vào các danh sách các nhóm lịch trong ứng dụng Google Calendar Vd: có các nhóm lịch sau: công việc, chơi bời…Một lịch chính là tạo ra cho môt người dùng khi họ đăng ký một tài khoản Google Calendar Tất cả các lịch khác do người dùng tạo ta được gọi là lịch thứ cấp.

 Lấy tất cả các lịch: bạn có thể lấy được danh sách lịch của người dùng bằng cách gửi một yêu cầu GET có chứng thực với Url: http://www.google.com/calendar/feeds/default/ allcalendars/full

Kết quả trả về là tất cả các nhóm lịch hiện có bao gồm lịch chính và lịch hứ cấp.

 Chỉ lấy lịch người dùng sở hữu: http://www.google.com/calendar/feeds/default/ owncalendars/full

 Quản lý Lịch : dữ liệu lấy trong câu truy vấn phần trên có thể dử dụng để tạo, cập nhập, xóa Lịch.

 Tạo mới Lịch: trước tiên tạo CalendarEntry với các thuộc tính: Tilte,

Summary, TimeZone, hidden, Color, Location…sau đó gọi phương thức CalendarService.Insert.

 Cập nhập Lịch: sử dụng url dưới để lấy thông tin Lịch đã có và gọi phương thức update để cập nhập

 Xóa Lịch: lịch được xóa khi yêu cầu DELETE gửi đi với Url

/calendar/feeds/default/owncalendars/full/ppgcfga9qo8jmdwan231w7s8h44%4 0group.calendar.google.com

 Lấy thông tin các sự kiện trong Lịch

 Lấy sự kiện với câu truy vấn có tham số: vd dưới đây với tham số là email “jo@gmail.com”

EventQuery query = new EventQuery(); query.Uri = new

Uri("http://www.google.com/calendar/feeds/jo@gmail.com/private/full");

// Tell the service to query:

EventFeed calFeed = service.Query(query);

 Lấy sự kiện với khoảng thời gian

EventQuery myQuery = new EventQuery(feedUrl); myQuery.StartTime = new DateTime(2007, 1, 5); myQuery.EndTime = new DateTime(2007, 1, 7);

EventFeed myResultsFeed = myService.Query(myQuery);

 Tạo sự kiện: Google calendar API cho phép bạn tạo 2 loại sử kiện: sự kiện đơn, sự kiện xảy ra có định kỳ được lặp lại theo thời gian nhất định.

 Sự kiện đơn: tạo sự kiện đơn có thể theo đoạn code dưới đây

// Set the title and content of the entry. entry.Title.Text = "Tennis with Beth"; entry.Content.Content = "Meet for a quick lesson.";

// Set a location for the event.

Where eventLocation = new Where(); eventLocation.ValueString = "South Tennis Courts"; entry.Locations.Add(eventLocation);

When eventTime = new When(DateTime.Now,

DateTime.Now.AddHours(2)); entry.Times.Add(eventTime);

Uri("http://www.google.com/calendar/feeds/default/private/full");

// Send the request and receive the response:

AtomEntry insertedEntry = service.Insert(postUri, entry);

Trước tiên tạo ra một EnventEntry với các thuộc tính : title, content,

Location, time… Sau đó gọi đển url và sử dụng phương thức insert.

"RRULE:FREQ=WEEKLY;BYDAY=Tu;UNTIL 070904\r\n";

Recurrence recurrence = new Recurrence(); recurrence.Value = recurData; myEntry.Recurrence = recurrence;

 Cập nhập Sự kiện: cập nhập nội dung một sự kiện đang tồn tại sử dụng code retrievedEntry.Title.Text = "Important meeting"; retrievedEntry.Update(); Đoạn code trên tương đương với việc gửi

PUT http://www.google.com/calendar/feeds/jo@gmail.com/private/full/entr yID

 Xóa Sự kiện updateEntry.Delete();

Code trên tương đương với gửi DELETE http://www.google.com/calendar/feeds/jo@gmail.com/private/full/ entryID

III.1 Chứng thực trong Google Contact:

Google Contact API có kiểu chứng thực như phân Google Calendar nói phân trên Phần này ta sẽ không đề tập tới nữa Ta chỉ đề cập tới các phương thức mà google Contact API hỗ trợ.

III.2 Các Phương thức của google Contact API

 Tạo Contact: Đầu tiên tạo một đối tượng Contact.Sau đó bạn có thể đặt tên, ghi chú và các thuộc tính khác của Contact Cuối cùng sử dụng đối tượng ContactRequest để chèn các liên lạc Dưới đây là vd:

Contact newContact = new Contact(); newContact.Title.Text = "Liz Doe";

EMail primaryEmail = new EMail("liz@gmail.com"); primaryEmail.Primary = true; primaryEmail.Rel = ContactsRelationships.IsWork; newContact.Emails.Add(primaryEmail);

EMail secondaryEmail = new EMail("liz@a.com"); secondaryEmail.Rel = ContactsRelationships.IsHome; newEntry.Emails.Add(secondaryEmail);

PhoneNumber phoneNumber = new PhoneNumber("555-555-5555"); phoneNumber.Primary = true; phoneNumber.Rel = ContactsRelationships.IsMobile; newContact.Phonenumbers.Add(phoneNumber);

PostalAddress postalAddress = new PostalAddress(); postalAddress.Value = "123 somewhere lane"; postalAddress.Primary = true; postalAddress.Rel = ContactsRelationships.IsHome; newContact.PostalAddresses.Add(postalAddress); newContact.Content = "Contact information for Liz";

//The example assumes the ContactRequest object (cr) is already set up.

Contact createdContact = cr.Insert(newContact);

 Lấy thông tin toàn bộ Contact:

RequestSettings(this.ApplicationName, this.userName, this.passWord);

// AutoPaging results in automatic paging in order to retrieve all contacts rs.AutoPaging = true;

ContactsRequest cr = new ContactsRequest(rs);

Feed f = cr.GetContacts(); foreach (Contact e in f.Entries)

Console.WriteLine("\t" + e.Title); foreach (EMail email in e.Emails)

} foreach (IMAddress im in e.IMs)

Khi lấy thông tin toàn bộ contact thì thiết lập AutoPaging = true,Nếu thiết lập giá trị AutoPaging= false thì chỉ lấy được 25 contact đầu tiên

 Lấy thông tin sử dụng truy vấn với tham số

Google contact Api cho phép lấy thông tin contact với những điều kiện.vd:lấy các contact cập nhập trong thời gian nào đó, tên người, email Để thực hiện bạn tạo đối tượng ContactsQuery

Ngày đăng: 30/06/2023, 16:29

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w