Một số kỹ thuật về Event Kit trong lập trình iOS

0
32

Request Permission

EvenKit là 1 framework giúp chúng ta truy cập và sử dụng Calendar và Reminder của người dùng. Kỹ thuật đầu tiên là cách xin quyền user truy cập vào Calendar và Reminder (Request Permission) cũng như là cách kiểm tra người dùng có cho phép chúng ta truy cập vào chúng hay không.

Đầu tiên, chúng ta sẽ khởi tạo biến eventStore có kiểu EKEventStore. EKEventStore là trung tâm trong EventKit, cho phép chúng ta đọc hoặc ghi vào Calendar và Reminder của người dùng.

Tiếp theo, chúng ta sẽ kiểm tra quyền hạn App có được phép truy cập vào Calendar hay không. Điều này cực kỳ quan trọng, ảnh hưởng trực tiếp đến sự “sống còn” của App, cần thực hiện mỗi khi màn hình hiện lên (viewDidAppear/ viewWillAppear).

Công việc tiếp theo là tạo ra 1 func requestAccessToCalendar và sau đó đưa vào case .notDetermined

Ở bước tiếp theo, chúng ta cần 1 mảng chứa tất các các event của User

Và sau đó, tạo func để load tất cả dữ liệu của User vào mảng

Tiếp theo, chúng ta sẽ bỏ func trên vào case authorized. Sau khi thiếp lập tất cả các dòng lệnh trên, chúng ta sẽ run App và chờ xem điều gì sẽ xảy ra.

crash app

Chúng ta sẽ quay lại file info.plist và xét quyền vào cho app của chúng ta là xong.

Privacy Calendars

Successfully Authorized Calendars

Lấy danh sách các Event

Chúng ta sẽ tiếp tục lấy các event từ các danh muc lấy được và đổ chúng vào UITableView

Đầu tiên, chúng ta tạo UITableView và đổ các danh mục vào trước.

List Event

Chúng ta cần tạo thêm 1 ViewController nữa, và đặt Storyboard ID cho nó là EventVC.

Event View Controller

Bước tiếp theo, chúng ta sẽ bắt sự kiện User chọn vào 1 cell nào đó, và chuyển màn hình và hiển thị các event thuộc calendar đó (Calendar, US Holidays, Birthdays).

Để có thể gọi được vc.calendar, cần khởi tạo nó ở EventViewController

Tới bước này, chúng ta đã lấy được tất cả sự kiện từ đầu năm 2016 đến cuối năm 2016. Và công việc còn lại của các bạn chỉ là từ dữ liệu nhận được mà đổ chúng vào tableview là xong.

 

Done

Chúc các bạn thành công!!!

Tạo Calendar

Đầu tiên, chúng ta cần tạo thêm 1 màn hình và 1 file ViewController nữa, để đơn giản chúng ta chỉ cần 1 textfield và 1 button là xong. Và công việc lại lẩn quẩn là ánh xạ, đặt tên. Để quy chuẩn lại cách đặt tên của các bạn trong bài viết này, mình sẽ đặt tên như sau:

  1. NewCalendarViewController
  2. calendarTitleTextField
  3. addNewCalendarActionButton

like a boss

Ở addNewCalendarActionButton, chúng ta sẽ:

  1. Khởi tạo biến eventStore có kiểu dữ liệu là EKEventStore
  2. Khởi tạo biến newCalendar có kiểu dữ liệu là EKCalendar
  3. Xét title cho biến newCalendar bằng với nội dung của user nhập vào
  4. Xét source cho newCalendar
  5. Save Calendar
  6. Xử lý nếu có lỗi

Ở đoạn code

húng ta không tạo 1 biến EKSource, mà sẽ lấy chúng ra từ biến eventStore để có thể sử dụng được các phương thức có sẵn của đối tượng nguồn

Sau khi nhập tất cả dòng code trên, run App và sẽ thấy ngay kết quả:

Add new calendar using EventKitCalendars App after Add new Calendar

Vậy là chúng ta đã có thể tạo thêm 1 Calendar mới cho điện thoại cũng như App của chúng ta.

Success

Tạo Event vào Calendar

Chúng ta sẽ tạo thêm 1 màn hình có tên là NewEventViewController.swift và kéo vào thêm 1 UIViewController trong Main.storyboardstoryboard, sẵn tiện chúng ta sẽ đặt cho nó StoryBoard ID là newEventVC

New Event UIController

Sau đó ở EventViewController.swift, chúng ta thêm đoạn code như sau:

Như đã chú thích ở trên, chúng ta sẽ tạo thêm button “+” vào góc trên bên phải màn hình và khi nhấn vào nó chúng ta sẽ chuyển sang màn hình NewEvent. Chúng ta sẽ kéo giao diện vào cho màn hình New Event.

Layout of New Event

Đây là những gì bạn cần:

Sau khi hoàn thành bước này, trở về với func addNewEvent ở EventViewController.swift ta sẽ thêm đoan code sau:

OK, như vậy là chúng ta đã chuyển được calendar mà người dùng chọn để truyền sang NewEventViewController.swift. Tiếp theo, chúng ta sẽ thêm đoạn code sau:

Run lại và cảm nhận kết quả nhé!

6 Khóa học đang được dân IT truy lùng tại Edumall

 

 

Facebook Comments