Ứng dụng đồng hành — ứng dụng bạn đồng hành cho thiết bị đeo Apple Watch và Wear OS, hoạt động cùng với ứng dụng chính trên điện thoại thông minh. Ứng dụng đồng hành đồng bộ dữ liệu qua WatchConnectivity (iOS) hoặc Wearable Data Layer (Android), hiển thị thông báo trên đồng hồ và có thể hoạt động độc lập. Việc phát triển được thực hiện bằng Swift cho watchOS và Kotlin cho Wear OS. Tìm hiểu thêm tại WatchConnectivity Docs.
Những điểm chính
Ứng dụng đồng hành — ứng dụng cho thiết bị đeo Apple Watch hoặc Wear OS đi kèm với ứng dụng chính iOS hoặc Android. Mục tiêu chính là mở rộng chức năng lên cổ tay: xem nhanh thông tin, trả lời tin nhắn, điều khiển nhạc, theo dõi bài tập. Ứng dụng đồng hành tự động cài đặt trên đồng hồ khi cài ứng dụng chính trên điện thoại, nếu nhà phát triển đã đưa nó vào bản dựng.
Kiến trúc của ứng dụng đồng hành bao gồm hai thành phần: ứng dụng iOS/Android (chính) và ứng dụng watchOS/Wear OS (đồng hành). Giao tiếp giữa chúng được thực hiện qua API hệ thống: WatchConnectivity cho Apple và Wearable Data Layer cho Google. Dữ liệu được truyền trong nền qua Bluetooth hoặc Wi-Fi — người dùng không thấy quá trình đồng bộ. Ứng dụng trên đồng hồ có thể có giao diện riêng, khác với điện thoại, thích ứng với màn hình nhỏ.
Các loại ứng dụng đồng hành khác nhau về mức độ phụ thuộc vào điện thoại. Ứng dụng sao chép hiển thị bản sao dữ liệu từ điện thoại và không hoạt động nếu không có kết nối. Ứng dụng tách rời có logic riêng, lưu trữ dữ liệu và giữ lại một phần chức năng khi ngắt kết nối với điện thoại. Ứng dụng độc lập (watchOS 6+ và Wear OS 3+) có thể cài đặt mà không cần điện thoại và hoạt động hoàn toàn độc lập với truy cập mạng riêng.
WatchConnectivity — framework của Apple cho giao tiếp hai chiều giữa iPhone và Apple Watch. Nó cung cấp bốn cơ chế truyền dữ liệu: Application Context (trạng thái đã biết gần nhất), File Transfer (tệp ở mọi kích thước), User Info (từ điển với phân phối đảm bảo) và Interactive Messaging (giao tiếp hai chiều thời gian thực). Hệ thống tự động chọn Bluetooth hoặc Wi-Fi dựa trên khoảng cách và chất lượng tín hiệu.
import WatchConnectivity
class PhoneSessionManager: NSObject, WCSessionDelegate {
func activateSession() {
WCSession.default.delegate = self
WCSession.default.activate()
}
func sendWorkoutData(_ data: WorkoutData) {
let dict = ["heartRate": data.heartRate,
"calories": data.calories] as [String: Any]
WCSession.default.transferUserInfo(dict)
}
func session(_: WCSession,
didReceiveUserInfo: [String: Any]) {
DispatchQueue.main.async {
NotificationCenter.default.post(
name: .workoutDataReceived,
object: didReceiveUserInfo)
}
}
}
Interactive Messaging — cơ chế WatchConnectivity duy nhất với phân phối thời gian thực được đảm bảo. Tin nhắn được gửi và nhận phản hồi trong vòng 200–500 ms khi kết nối đang hoạt động. Nó được sử dụng cho các hành động cần phản hồi ngay lập tức: bắt đầu bài tập, xác nhận thanh toán, mở cửa nhà thông minh. Phiên phải hoạt động trên cả hai thiết bị — nếu đồng hồ bị khóa hoặc ứng dụng ở chế độ nền, việc phân phối không được đảm bảo.
File Transfer API được thiết kế cho khối lượng dữ liệu lớn — hình ảnh, tệp âm thanh, bài tập đã xuất. Các tệp được truyền trong nền ngay cả khi ứng dụng đã đóng. Giới hạn là tối đa 10 lần truyền đồng thời trong hàng đợi. Application Context là cơ chế kinh tế nhất: chỉ truyền trạng thái cuối cùng, hủy các ngữ cảnh trước đó chưa được gửi. Lý tưởng để đồng bộ cài đặt và trạng thái hiện tại.
Wearable Data Layer — API từ Google Play Services để đồng bộ dữ liệu giữa thiết bị Android và đồng hồ Wear OS. Nó cung cấp ba giao thức: DataItem (đồng bộ cặp khóa-giá trị), MessageClient (tin nhắn một chiều) và ChannelClient (dữ liệu luồng). DataItems được đồng bộ tự động qua Google Cloud — nếu điện thoại không khả dụng, dữ liệu sẽ được gửi khi kết nối được khôi phục.
class WearableSyncService : WearableListenerService() {
override fun onDataChanged(dataEvents: DataEventBuffer) {
dataEvents.forEach { event ->
when (event.type) {
DataEvent.TYPE_CHANGED -> {
val uri = event.dataItem.uri
val path = uri.path // /workout/heartrate
val data = DataMapItem
.fromDataItem(event.dataItem)
.dataMap
val bpm = data.getInt("bpm")
updateUI(bpm)
}
}
}
}
}
MessageClient — gửi tin nhắn một chiều với đường dẫn và mảng byte. Nó được sử dụng cho các lệnh như "Bắt đầu bài tập" hoặc "Tạm dừng nhạc". Tin nhắn được phân phối đáng tin cậy nếu thiết bị được kết nối. Để nhận tin nhắn trên Wear OS, hãy triển khai WearableListenerService và đăng ký nó trong tệp kê khai. MessageClient không hỗ trợ lưu trữ tự động — nếu đồng hồ bị ngắt kết nối, tin nhắn sẽ bị mất.
ChannelClient — giao thức cho dữ liệu luồng: âm thanh, video, luồng cảm biến liên tục. Nó mở một kênh hai chiều qua đó các mảng byte được truyền đi. Chỉ được hỗ trợ trên Wear OS 2.0+. ChannelClient hữu ích để truyền âm thanh từ điện thoại đến đồng hồ cho cuộc gọi qua Bluetooth và để chuyển tiếp dữ liệu từ cảm biến Bluetooth bên ngoài (máy theo dõi nhịp tim, máy tính xe đạp) qua điện thoại đến đồng hồ.
Hoạt động độc lập — khả năng của ứng dụng đồng hành hoạt động mà không cần kết nối điện thoại. Trên watchOS có mô-đun Cellular, ứng dụng gửi yêu cầu mạng trực tiếp qua eSIM. Trên Wear OS có LTE, chức năng tương tự có sẵn. Ngay cả khi không có mô-đun di động, đồng hồ lưu trữ dữ liệu mới nhất từ điện thoại và hiển thị khi mất kết nối — người dùng thấy thông tin tại thời điểm đồng bộ cuối cùng.
| Chế độ | Dữ liệu | Khả dụng | Ví dụ |
|---|---|---|---|
| Trực tuyến | Trực tiếp từ máy chủ/điện thoại | Đầy đủ | Tuyến đường điều hướng |
| Đã lưu | Mới nhất từ điện thoại | Hạn chế | Danh sách liên lạc |
| Ngoại tuyến | Cục bộ trên đồng hồ | Tối thiểu | Hẹn giờ, đồng hồ bấm giờ |
Lưu trữ bộ nhớ đệm — yếu tố chính của hoạt động độc lập. Ứng dụng phải lưu trạng thái nhận được cuối cùng vào bộ nhớ cục bộ của đồng hồ. Trên watchOS sử dụng UserDefaults hoặc CoreData, trên Wear OS — Room Database hoặc DataStore. Khi kết nối được khôi phục, bộ nhớ đệm được cập nhật qua đồng bộ nền. Nếu dữ liệu cũ hơn 24 giờ, ứng dụng hiển thị thông báo "Cập nhật kết nối điện thoại".
Giao diệu wearable cho màn hình hạn chế — đồng hồ có màn hình 1.5–2 inch — giao diện ứng dụng đồng hành phải cô đọng nhất có thể. Apple khuyến nghị NavigationView một cột trên watchOS, Google khuyến nghị danh sách thẻ trên Wear OS với vuốt để điều hướng. Các nút phải có kích thước ít nhất 44pt để chạm thoải mái. Tránh các trường nhập văn bản — sử dụng câu trả lời có sẵn, đọc chính tả hoặc bánh xe cuộn Digital Crown.
Thiết kế tiết kiệm năng lượng — ứng dụng đồng hành không nên làm hao pin đồng hồ trong vài giờ. Sử dụng cập nhật nền với khoảng thời gian tối thiểu. Trên watchOS, WatchConnectivity tạm dừng truyền khi pin yếu và tiếp tục sau khi sạc. Trên Wear OS, Wearable Data Layer tự động nhóm các lần truyền nhỏ thành một để tiết kiệm năng lượng. Nâng cổ tay — chỉ cập nhật giao diện khi người dùng nâng cổ tay lên.
Kiến trúc ứng dụng đồng hành nên được thiết kế có tính đến khả năng mất kết nối. Sử dụng mẫu Repository: một nguồn dữ liệu duy nhất trên điện thoại đồng bộ với kho lưu trữ cục bộ trên đồng hồ. ViewModel trên đồng hồ đăng ký kho lưu trữ cục bộ và hiển thị dữ liệu bất kể trạng thái kết nối. Khi kết nối được khôi phục, Repository trên đồng hồ yêu cầu dữ liệu qua WatchConnectivity hoặc Wearable Data Layer và cập nhật bộ nhớ cục bộ.
class WorkoutRepository constructor(
private val localStorage: WorkoutDao,
private val wearableClient: WearableClient
) {
val workoutFlow: Flow<Workout?> = merge(
localStorage.observeWorkout(),
wearableClient.observeWorkout()
.onEach { localStorage.save(it) }
)
}
Kiểm thử ứng dụng đồng hành yêu cầu xác minh trên đồng hồ thực hoặc trình giả lập. Xcode hỗ trợ trình giả lập Apple Watch kết hợp với trình giả lập iPhone — bạn có thể kiểm tra WatchConnectivity mà không cần thiết bị vật lý. Android Studio bao gồm trình giả lập Wear OS hỗ trợ Wearable Data Layer. Các trường hợp kiểm thử quan trọng: mất kết nối trong khi truyền, pin yếu, hai ứng dụng đồng hành hoạt động đồng thời và cài đặt không cần điện thoại trên đồng hồ độc lập.
Phát hành ứng dụng đồng hành trên watchOS không yêu cầu tải lên riêng lẻ lên App Store — ứng dụng được bao gồm trong tệp nhị phân của ứng dụng iOS và tự động được đề xuất cài đặt trên đồng hồ. Trên Wear OS, ứng dụng đồng hành được phát hành riêng trên Google Play nhưng được liên kết với ứng dụng chính qua cùng một gói. App Group trên iOS và sharedUserId trên Android cho phép ứng dụng chính và ứng dụng đồng hành sử dụng bộ nhớ dữ liệu dùng chung.
Câu hỏi thường gặp
Ứng dụng đồng hành yêu cầu ứng dụng chính được cài đặt trên iPhone hoặc Android để có đầy đủ chức năng. Ứng dụng độc lập thông thường trên đồng hồ (ví dụ: la bàn hoặc đồng hồ bấm giờ) hoạt động độc lập không cần điện thoại. Ứng dụng đồng hành đồng bộ dữ liệu với điện thoại, hiển thị thông báo và cho phép thực hiện các hành động nhanh, nhưng không có điện thoại sẽ mất một số chức năng.
WatchConnectivity hỗ trợ bốn chế độ: Application Context để truyền trạng thái hiện tại và hủy trạng thái trước đó, File Transfer cho tệp ở mọi kích thước, User Info cho từ điển dữ liệu với phân phối đảm bảo và Interactive Messaging cho giao tiếp hai chiều thời gian thực. Dữ liệu được truyền qua Bluetooth hoặc Wi-Fi — hệ thống tự động chọn kênh tối ưu.
Có, ứng dụng đồng hành hoạt động độc lập — watchOS và Wear OS lưu trữ dữ liệu nhận được từ điện thoại. Trên đồng hồ có mô-đun di động, ứng dụng gửi yêu cầu trực tiếp qua eSIM hoặc LTE. Dữ liệu đã lưu được hiển thị ngay cả khi không có kết nối. Khi kết nối được khôi phục, bộ nhớ đệm được cập nhật qua đồng bộ nền.
Các danh mục phổ biến nhất: máy theo dõi thể dục đồng bộ bài tập, ứng dụng nhắn tin để trả lời tin nhắn từ đồng hồ, ứng dụng điều hướng với chỉ dẫn đường đi trên cổ tay, trình phát nhạc để điều khiển phát lại, hệ thống thanh toán, nhà thông minh để điều khiển thiết bị và máy theo dõi y tế cho nhịp tim và huyết áp.
Apple Watch cung cấp tới 18 giờ hoạt động với ứng dụng đồng hành đang hoạt động trong điều kiện sử dụng tiêu chuẩn. Wear OS — tới 24 giờ. WatchConnectivity được tối ưu hóa cho mức tiêu thụ năng lượng thấp: truyền dữ liệu bị tạm dừng khi pin yếu và đồng bộ hàng loạt được thực hiện trong khi sạc đồng hồ.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.
Đọc thêm