Khái quát kiến trúc watchOS của Apple Watch

Khái quát kiến trúc watchOS

Đôi nét về Apple Watch

Apple Watch là một loại đồng hồ thông minh (smartwatch) được phát triển bởi Apple và đã được tung ra thị trường dạo gần đây. Bên cạnh việc nhận cuộc gọi, thông báo và tin nhắn, nó còn tích hợp tính năng theo dõi quá trình tập thể dục và chăm sóc sức khỏe, kết hợp chức năng thanh toán thay thẻ tín dụng và nhiều ứng dụng thú vị khác đang chờ bạn khám phá.

Giới thiệu về watchOS

watchOS là hệ điều hành chạy trên Apple Watch, được phát triển dựa trên thiết kế của iOS 8 vì thế mà nó cũng có vài đặc điểm tương tự iOS. API của watchOS được gọi là WatchKit.

Hiện đang có hai phiên bản của watchOS là 1.0.1 và 2.0 beta 3. Phiên bản 2.0 chính thức dự định sẽ ra mắt vào Quý 3 năm nay. Bài viết này tập trung vào phiên bản 1.0.1 do bọn mình chưa có cơ hội xài thử phiên bản 2.0 (nghe nói là vẫn còn khá nhiều bugs).

watchOS 1.0.1

Kiến trúc (Infrastructure)

Kiến trúc watchOS phiên bản 1.x hơi rắc rối. Ở watchOS phiên bản 1.x, để chạy được ứng dụng trên watch, ta phải có ứng dụng trên iPhone với iOS phiên bản 8.2 trở lên. WatchKit App (đặt trên watch) chủ yếu điều khiển UI, về phần hành vi và logic của app thì do WatchKit Extension (đặt trên iPhone) chịu trách nhiệm.

watchOS 1.x infrastructure

WatchKit App và WatchKit Extension giao tiếp với nhau thông qua giao thức không dây là Bluetooth. Vì thế sẽ có một độ trễ (latency) nhất định khi sử dụng ứng dụng trên watch. Ví dụ khi bạn mở một ứng dụng trên watch thì phải đợi cho ứng dụng trên iPhone tải lên hoàn toàn thì mới bắt đầu sử dụng được. Bên cạnh đó, để viết một app cho watchOS 1.x thì bạn cũng phải viết ứng dụng cho iOS, phải cần đến 3 provision profiles: iOS App, WatchKit Extension và WatchKit App.

watchOS 1.x profiles

Life Cycle

Khi lần đầu chạy một app trên watch thì nó sẽ bắt đầu khởi động Interface Controller của WatchKit Extension trên phone. Khi Interface Controller được khởi tạo, WatchKit App sẽ khởi tạo UI của app. Sau quá trình khởi tạo thì WatchKit Extension sẽ activate app làm cho nó hiển thị UI cho người sử dụng.

watch app first start

Nếu người dùng tương tác với app trên watch thì methods sẽ được gọi ở app trên phone và trả về kết quả. Khi người dùng ngừng tương tác thì WatchKit Extension sẽ deactivate app và đưa nó vào trạng thái suspension sau một khoảng thời gian (khoảng 30s).

watch app life cycle

Hình dưới đây giải thích cặn kẽ hơn quá trình hoạt động của một watch app có 3 pages:

watch app behind the scenes

Hạn chế

  • Do watch và phone giao tiếp thông qua kết nối không dây nên có một độ trễ nhất định khi sử dụng ứng dụng.
  • Ngoại trừ một số native apps thì các apps khác chưa thể xử lý sự kiện của Digital Crown (nút vặn ở cạnh đồng hồ).
  • Không thể truy xuất đến các cảm biến trên đồng hồ do chưa có API (Extension Kit nằm trên iOS).
  • Khó khăn trong việc debug với giả lập XCode vì phải chạy cùng lúc ứng dụng trên điện thoại và đồng hồ.
  • Chưa thể kết nối trực tiếp với Internet mà phải thông qua phone.

watchOS 2.0

Kiến trúc

Kiến trúc watchOS phiên bản 2.0 có cải thiện hơn so với phiên bản 1.x. WatchKit Extension chuyển qua đặt trên watch giúp ta có thể viết app access vào mọi phần cứng trên đồng hồ trừ những lúc cần lấy dữ liệu thì mới giao tiếp với phone.

Kiến trúc watchOS 2

Những công nghệ có thể sử dụng ở phiên bản 2.0

Do WatchKit Extension đã được chuyển lên watch nên ta có thể sử dụng được những công nghệ của Apple:

ClockKit, Contacts, Core Data, Core Foundation, Core Graphics, Core Location, Core Motion, EventKit, Foundation, HealthKit, HomeKit, ImagelO, MapKit, Mobile Core Services, PassKit, Security, Watch Connectivity, WatchKit.

Phiên bản 2.0 có gì nổi bật hơn 1.0?

  • Truy xuất toàn bộ phần cứng và cảm biến của watch như Digital Crown, Taptic Engine, Heart Rate Sensor (cảm ứng nhịp tim), Accelerometer (cảm ứng chuyển động của cơ thể), Microphone…
  • Complications: hiển thị thông tin của app trên giao diện xem giờ của đồng hồ.
  • Watch Connectivity: tạo kết nối hai chiều giữa phone và watch. Cả hai đều có khả năng truyền và nhận dữ liệu với nhau.
  • Hỗ trợ API cho việc tạo animation.
  • Picker control: tạo slide sử dụng Digital Crown.

Kết luận

Việc phát triển ứng dụng cho watchOS hiện giờ còn khá khó khăn do phải cùng lúc debug trên cả đồng hồ và điện thoại, chưa kể phiên bản 1.x không hỗ trợ API để truy xuất đến các phần cứng trên đồng hồ.

Nếu bạn nào đang có dự định mua cho mình một chiếc đồng hồ Apple thì lời khuyên mà bọn mình dành cho các bạn là hãy đợi thêm một thời gian nữa rồi mới quyết định. Vì hiện giờ còn khá ít ứng dụng trên watchOS và phiên bản watchOS 2.0 vẫn chưa được chính thức ra mắt.

Reviewer: Cuong Doan

Thực hiện: Giáp Hồng

SSS Full-stack Engineer

Love Silicon Straits and want to know more about our company culture, working environment or job vacancies?
Find out more at careers.siliconstraits.vn.

Silicon Straits
Be Challenged. Be Inspired. Be Different.




Posted by

on August 5, 2015

in ,

Comments

Follow us for more later

or subscribe with