Companion App — Apple Watch va Wear OS kiyiladigan qurilmalari uchun smartfondagi asosiy ilova bilan juft holda ishlaydigan hamroh ilova. Companion App WatchConnectivity (iOS) yoki Wearable Data Layer (Android) orqali ma'lumotlarni sinxronlashtiradi, soatda bildirishnomalarni ko'rsatadi va mustaqil ishlashi mumkin. Ishlab chiqish watchOS uchun Swift va Wear OS uchun Kotlin tillarida olib boriladi. Batafsil — WatchConnectivity Docs.
Asosiy
Companion App — Apple Watch yoki Wear OS kiyiladigan qurilmalari uchun asosiy iOS yoki Android ilovasi bilan birga keladigan ilova. Asosiy maqsad — bilakda funksionallikni kengaytirish: ma'lumotni tez ko'rish, xabarlarga javob berish, musiqani boshqarish, mashqlarni kuzatish. Companion App, agar ishlab chiqaruvchi uni build-ga qo'shgan bo'lsa, asosiy ilova telefonga o'rnatilganda avtomatik ravishda soatga o'rnatiladi.
Arxitektura companion ilovasi ikki komponentni o'z ichiga oladi: iOS/Android ilovasi (asosiy) va watchOS/Wear OS ilovasi (hamroh). Ularning o'rtasidagi aloqa tizim API-lari orqali amalga oshiriladi: Apple uchun WatchConnectivity va Google uchun Wearable Data Layer. Ma'lumotlar fonda Bluetooth yoki Wi-Fi orqali uzatiladi — foydalanuvchi sinxronizatsiya jarayonini ko'rmaydi. Soatdagi ilova mobilnikidan farqli, kichik ekranga moslashtirilgan o'z UI-ga ega bo'lishi mumkin.
Companion ilovalar turlari telefonga bog'liqlik darajasiga ko'ra farqlanadi. Mirroring-ilovalar telefondagi ma'lumotlarning nusxasini ko'rsatadi va ulanishsiz ishlamaydi. Decoupled-ilovalar o'z mantiqiga ega, ma'lumotlarni keshlaydi va telefondan uzilganda funksionallikning bir qismini saqlaydi. Independent-ilovalar (watchOS 6+ va Wear OS 3+) telefonsiz o'rnatilishi va o'z tarmoq kirishi bilan to'liq mustaqil ishlashi mumkin.
WatchConnectivity — Apple-ning iPhone va Apple Watch o'rtasida ikki tomonlama aloqa uchun freymvorki. To'rt ma'lumot uzatish mexanizmini taqdim etadi: Application Context (oxirgi ma'lum holat), File Transfer (istalgan o'lchamdagi fayllar), User Info (kafolatlangan yetkazish bilan lug'atlar) va Interactive Messaging (real vaqtda ikki tomonlama aloqa). Tizim masofa va signal sifatiga qarab Bluetooth yoki Wi-Fi-ni avtomatik tanlaydi.
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 — real vaqtda kafolatlangan yetkazish bilan WatchConnectivity-ning yagona mexanizmi. Xabar faol ulanish sharoitida 200–500 ms ichida yuboriladi va javob oladi. Darhol javob talab qiladigan harakatlar uchun ishlatiladi: mashqni boshlash, to'lovni tasdiqlash, aqlli uy eshigini ochish. Sessiya ikkala qurilmada ham faol bo'lishi kerak — soat qulflangan yoki ilova fonda bo'lsa, yetkazish kafolatlanmaydi.
File Transfer API katta hajmdagi ma'lumotlar uchun mo'ljallangan — rasmlar, audiofayllar, eksport qilingan mashqlar. Fayllar ilova yopiq bo'lsa ham fonda uzatiladi. Cheklov — navbatda 10 tagacha bir vaqtning o'zida uzatish. Application Context — eng tejamkor mexanizm: faqat oxirgi holatni uzatadi, oldingi yuborilmagan kontekstlarni bekor qiladi. Sozlamalar va joriy holatni sinxronlashtirish uchun ideal.
Wearable Data Layer — Android qurilmasi va Wear OS soati o'rtasida ma'lumot sinxronizatsiyasi uchun Google Play Services-dan API. Uch protokolni taqdim etadi: DataItem (kalit-qiymat juftliklarini sinxronlashtirish), MessageClient (bir tomonlama xabarlar) va ChannelClient (ma'lumotlarni oqimli uzatish). DataItems Google Cloud orqali avtomatik sinxronlanadi — telefon mavjud bo'lmasa, ma'lumotlar ulanish tiklanganda yetkaziladi.
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 // /mashq/yurak_urishi
val data = DataMapItem
.fromDataItem(event.dataItem)
.dataMap
val bpm = data.getInt("bpm")
updateUI(bpm)
}
}
}
}
}
MessageClient — yo'l va bayt massivi bilan bir tomonlama xabarlar yuboradi. «Mashqni boshlash», «Musiqani to'xtatish» kabi buyruqlar uchun ishlatiladi. Qurilma ulangan bo'lsa, xabar kafolatlangan yetkaziladi. Wear OS da xabar qabul qilish uchun WearableListenerService-ni amalga oshiring va manifestda ro'yxatdan o'tkazing. MessageClient avtomatik keshlashni qo'llab-quvvatlamaydi — soat uzilgan bo'lsa, xabar yo'qoladi.
ChannelClient — oqim ma'lumotlari uchun protokol: audio, video, sensorlarning uzluksiz oqimi. Bayt massivlari uzatiladigan ikki tomonlama kanal ochadi. Faqat Wear OS 2.0+ da qo'llab-quvvatlanadi. ChannelClient Bluetooth orqali qo'ng'iroqlar uchun telefondan soatga audio uzatish va tashqi Bluetooth sensorlaridan (puls o'lchagich, velosiped kompyuteri) ma'lumotlarni telefon orqali soatga relay qilish uchun foydalidir.
Mustaqil ishlash — companion ilovaning telefonga ulanmasdan funksiyalarni bajarish qobiliyati. Cellular moduli bo'lgan watchOS da ilova tarmoq so'rovlarini to'g'ridan-to'g'ri eSIM orqali yuboradi. LTE-li Wear OS da shunga o'xshash funksionallik mavjud. Hujayra moduli bo'lmasa ham, soat telefondan oxirgi ma'lumotlarni keshlaydi va uzilganda ularni ko'rsatadi — foydalanuvchi oxirgi sinxronizatsiya vaqtida dolzarb bo'lgan ma'lumotni ko'radi.
| Rejim | Ma'lumot | Mavjudlik | Misol |
|---|---|---|---|
| Online | Server/telefondan jonli | To'liq | Navigatsiya marshruti |
| Cached | Telefondan oxirgi | Cheklangan | Kontaktlar ro'yxati |
| Offline | Soatda lokal | Minimal | Taymer, sekundomer |
Ma'lumotlarni keshlash — mustaqil ishlashning asosiy elementi. Ilova oxirgi olingan holatni soatning lokal xotirasida saqlashi kerak. watchOS da UserDefaults yoki CoreData, Wear OS da Room Database yoki DataStore ishlatiladi. Ulanish tiklanganda kesh fon sinxronizatsiyasi bilan yangilanadi. Agar ma'lumotlar 24 soatdan ko'proq eskirgan bo'lsa, ilova «Telefonga ulanishni yangilang» xabarini ko'rsatadi.
Cheklangan ekran uchun Wearable UI soat ekrani 1.5–2 dyuym — companion ilova interfeysi maksimal darajada ixcham bo'lishi kerak. Apple watchOS da bir ustunli NavigationView-ni, Google Wear OS da surish bilan navigatsiya uchun kartalar ro'yxatini tavsiya qiladi. Tugmalar qulay teginish uchun kamida 44pt o'lchamda bo'lishi kerak. Matn kiritish maydonlaridan qoching — tayyor javoblar, diktant yoki Digital Crown g'ildiragidan foydalaning.
Energiya tejamkor dizayn — companion ilova soatni bir necha soatda bo'shatmasligi kerak. Minimal interval bilan fon yangilanishlaridan foydalaning. watchOS da WatchConnectivity batareya past bo'lganda uzatishni to'xtatadi va zaryadlangandan keyin tiklaydi. Wear OS da Wearable Data Layer energiyani tejash uchun kichik uzatishlarni avtomatik bitta guruhga birlashtiradi. Wrist raise — UI-ni faqat foydalanuvchi bilagini ko'targanda yangilang.
Companion ilova arxitekturasi mumkin bo'lgan aloqa yo'qotilishini hisobga olgan holda loyihalashtirilishi kerak. Repository naqshidan foydalaning: telefondagi yagona ma'lumot manbai soatdagi lokal repozitoriya bilan sinxronlanadi. Soatdagi ViewModel lokal repozitoriyaga obuna bo'ladi va ulanish holatidan qat'iy nazar ma'lumotlarni ko'rsatadi. Ulanish tiklanganda soatdagi Repository WatchConnectivity yoki Wearable Data Layer orqali ma'lumotlarni so'raydi va lokal xotirani yangilaydi.
class WorkoutRepository constructor(
private val localStorage: WorkoutDao,
private val wearableClient: WearableClient
) {
val workoutFlow: Flow<Workout?> = merge(
localStorage.observeWorkout(),
wearableClient.observeWorkout()
.onEach { localStorage.save(it) }
)
}
Sinov companion ilovasi haqiqiy soatda yoki emulyatorda tekshirishni talab qiladi. Xcode iPhone simulyatori bilan juft Apple Watch simulyatorini qo'llab-quvvatlaydi — WatchConnectivity jismoniy qurilmalarsiz sinab ko'rilishi mumkin. Android Studio Wearable Data Layer qo'llab-quvvatlashi bilan Wear OS emulyatorini o'z ichiga oladi. Kritik test holatlari: uzatish paytida ulanishning yo'qolishi, batareyaning pastligi, ikkita companion ilovasining bir vaqtda ishlashi va standalone soatda telefonsiz o'rnatish.
Companion ilovasini nashr qilish watchOS da App Store ga alohida yuklashni talab qilmaydi — ilova iOS ilovasining binariga kiradi va avtomatik ravishda soatga o'rnatish uchun taklif qilinadi. Wear OS da companion ilovasi Google Play da alohida nashr qilinadi, lekin asosiy ilova bilan bir xil paket orqali bog'lanadi. iOS da App Group va Android da sharedUserId asosiy va companion ilovasiga umumiy ma'lumot omboridan foydalanishga imkon beradi.
Tez-tez beriladigan savollar
Companion App to'liq funksionallik uchun iPhone yoki Android da o'rnatilgan asosiy ilovani talab qiladi. Soatdagi oddiy standalone ilova (masalan, kompas yoki sekundomer) telefonsiz mustaqil ishlaydi. Companion App telefon bilan ma'lumotlarni sinxronlashtiradi, bildirishnomalarni ko'rsatadi va tezkor harakatlarni bajarishga imkon beradi, lekin telefonsiz funksiyalarning bir qismini yo'qotadi.
WatchConnectivity to'rt rejimni qo'llab-quvvatlaydi: Application Context oldingisini bekor qilish bilan joriy holatni uzatish uchun, File Transfer istalgan o'lchamdagi fayllar uchun, User Info kafolatlangan yetkazish bilan ma'lumot lug'atlari uchun va Interactive Messaging real vaqtda ikki tomonlama aloqa uchun. Ma'lumotlar Bluetooth yoki Wi-Fi orqali uzatiladi — tizim optimal kanalni avtomatik tanlaydi.
Ha, companion ilova mustaqil ishlaydi — watchOS va Wear OS telefondan olingan ma'lumotlarni keshlaydi. Uyali moduli bo'lgan soatda ilova so'rovlarni to'g'ridan-to'g'ri eSIM yoki LTE orqali yuboradi. Keshlangan ma'lumotlar ulanish bo'lmaganda ham ko'rsatiladi. Ulanish tiklanganda kesh fon sinxronizatsiyasi bilan yangilanadi.
Eng ommabop kategoriyalar: mashq sinxronizatsiyasi bilan fitness trekerlar, soatdan xabarlarga javob berish uchun messenjerlar, bilakda burilish ko'rsatmalari bilan navigatorlar, ijroni boshqarish uchun musiqa pleyerlari, to'lov tizimlari, qurilmalarni boshqarish uchun aqlli uy va puls va bosim uchun tibbiy monitorlar.
Apple Watch standart foydalanishda faol companion ilovasi bilan 18 soatgacha ishlashni ta'minlaydi. Wear OS — 24 soatgacha. WatchConnectivity past energiya sarfi uchun optimallashtirilgan: batareya past bo'lganda ma'lumot uzatish to'xtaydi, ommaviy sinxronizatsiya esa soat zaryadlanayotganda amalga oshiriladi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.