Companion App — Apple Watch və Wear OS geyilən cihazları üçün smartfon əsas tətbiqi ilə cüt işləyən yoldaş tətbiqdir. Companion App WatchConnectivity (iOS) və ya Wearable Data Layer (Android) vasitəsilə məlumatları sinxronlaşdırır, saatda bildirişləri göstərir və muxtar şəkildə işləyə bilər. İnkişaf watchOS üçün Swift və Wear OS üçün Kotlin ilə aparılır. Ətraflı — WatchConnectivity Docs.
Əsas
Companion App — Apple Watch və ya Wear OS geyilən cihazları üçün əsas iOS və ya Android tətbiqi ilə cüt gələn tətbiqdir. Əsas məqsəd — biləkdə funksionallığı genişləndirmək: məlumatın sürətli baxışı, mesajlara cavab, musiqi idarəsi, məşqlərin izlənməsi. Companion App, tərtibatçı onu build-ə daxil etdikdə, əsas tətbiq telefona quraşdırılan zaman avtomatik olaraq saata quraşdırılır.
Arxitektura companion tətbiqi iki komponentdən ibarətdir: iOS/Android tətbiqi (əsas) və watchOS/Wear OS tətbiqi (yoldaş). Onlar arasında əlaqə sistem API-ləri vasitəsilə həyata keçirilir: Apple üçün WatchConnectivity və Google üçün Wearable Data Layer. Məlumatlar Bluetooth və ya Wi-Fi ilə fonda ötürülür — istifadəçi sinxronizasiya prosesini görmür. Saatdakı tətbiq mobil tətbiqdən fərqli, kiçik ekrana uyğunlaşdırılmış öz UI-nə malik ola bilər.
Companion tətbiqlərin növləri telefona bağlılıq dərəcəsinə görə fərqlənir. Mirroring-tətbiqlər telefondan məlumatların surətini göstərir və qoşulma olmadan işləmir. Decoupled-tətbiqlər öz məntiqinə malikdir, məlumatları keşləyir və telefondan ayrıldıqda funksionallığın bir hissəsini saxlayır. Independent-tətbiqlər (watchOS 6+ və Wear OS 3+) telefon olmadan quraşdırıla bilər və öz şəbəkə girişi ilə tam muxtar işləyə bilər.
WatchConnectivity — Apple-ın iPhone və Apple Watch arasında ikitərəfli kommunikasiya üçün freymvorkudur. Dörd məlumat ötürmə mexanizmi təqdim edir: Application Context (son məlum vəziyyət), File Transfer (istənilən ölçülü fayllar), User Info (zəmanətli çatdırılma ilə lüğətlər) və Interactive Messaging (real vaxtda ikitərəfli əlaqə). Sistem məsafədən və siqnal keyfiyyətindən asılı olaraq Bluetooth və ya Wi-Fi-ı avtomatik seçir.
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 vaxtda zəmanətli çatdırılma ilə WatchConnectivity-nin yeganə mexanizmidir. Mesaj aktiv əlaqə şəraitində 200–500 ms ərzində göndərilir və cavab alır. Dərhal cavab tələb edən hərəkətlər üçün istifadə olunur: məşqə başlamaq, ödənişi təsdiqləmək, ağıllı ev qapısını açmaq. Sessiya hər iki cihazda aktiv olmalıdır — saat bloklanıbsa və ya tətbiq fondadırsa, çatdırılma zəmanətli deyil.
File Transfer API böyük həcmli məlumatlar üçün nəzərdə tutulub — şəkillər, audiofayllar, ixrac edilmiş məşqlər. Fayllar tətbiq bağlı olsa belə fonda ötürülür. Məhdudiyyət — növbədə 10-a qədər eyni vaxtda ötürmə. Application Context — ən qənaətcil mexanizm: yalnız son vəziyyəti ötürür, əvvəlki göndərilməmiş kontekstləri ləğv edir. Parametrlərin və cari statusun sinxronizasiyası üçün idealdır.
Wearable Data Layer — Android cihazı və Wear OS saatı arasında məlumat sinxronizasiyası üçün Google Play Services-dən API. Üç protokol təqdim edir: DataItem (açar-dəyər cütlərinin sinxronizasiyası), MessageClient (birtərəfli mesajlar) və ChannelClient (məlumatların axın ötürülməsi). DataItems Google Cloud vasitəsilə avtomatik sinxronlaşır — telefon əlçatan deyilsə, məlumatlar əlaqə bərpa olunduqda çatdırılır.
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 // /məşq/ürək_döyüntüsü
val data = DataMapItem
.fromDataItem(event.dataItem)
.dataMap
val bpm = data.getInt("bpm")
updateUI(bpm)
}
}
}
}
}
MessageClient — yol və bayt massivi ilə birtərəfli mesajlar göndərir. «Məşqə başla», «Musiqi dayandır» kimi əmrlər üçün istifadə olunur. Cihaz qoşulduqda mesaj zəmanətli çatdırılır. Wear OS-da mesaj qəbul etmək üçün WearableListenerService-i tətbiq edin və manifestdə qeydiyyatdan keçirin. MessageClient avtomatik keşləməni dəstəkləmir — saat ayrılıbsa, mesaj itir.
ChannelClient — axın məlumatları üçün protokol: audio, video, sensorların davamlı axını. Bayt massivlərinin ötürüldüyü ikitərəfli kanal açır. Yalnız Wear OS 2.0+ dəstəklənir. ChannelClient Bluetooth vasitəsilə zənglər üçün telefondan saata audio ötürmək və xarici Bluetooth sensorlarından (nəbzölçən, velosiped kompüteri) məlumatları telefon vasitəsilə saata relay etmək üçün faydalıdır.
Muxtar iş — companion tətbiqin telefona qoşulmadan funksiyaları yerinə yetirmə qabiliyyətidir. Cellular modulu olan watchOS-da tətbiq şəbəkə sorğularını birbaşa eSIM vasitəsilə göndərir. LTE-li Wear OS-da oxşar funksionallıq mövcuddur. Hüceyrə modulu olmasa belə, saat telefondan ən son məlumatları keşləyir və ayrıldıqda onları göstərir — istifadəçi son sinxronizasiya anında aktual olan məlumatı görür.
| Rejim | Məlumat | Əlçatanlıq | Nümunə |
|---|---|---|---|
| Online | Serverdən/telefondan canlı | Tam | Naviqasiya marşrutu |
| Cached | Telefondan ən son | Məhdud | Kontakt siyahısı |
| Offline | Saatda lokal | Minimal | Taymer, saniyəölçən |
Məlumatların keşlənməsi — muxtar işin əsas elementidir. Tətbiq son alınan vəziyyəti saatın lokal yaddaşında saxlamalıdır. watchOS-da UserDefaults və ya CoreData, Wear OS-da Room Database və ya DataStore istifadə olunur. Əlaqə bərpa olunduqda keş fon sinxronizasiyası ilə yenilənir. Məlumatlar 24 saatdan çox köhnəlmişsə, tətbiq «Telefona qoşulmanı yeniləyin» xəbərdarlığını göstərir.
Məhdud ekran üçün Wearable UI saatın ekranı 1.5–2 düymdür — companion tətbiqin interfeysi maksimum yığcam olmalıdır. Apple watchOS-da bir sütunlu NavigationView-i, Google Wear OS-da sürüşdürmə ilə naviqasiya üçün kart siyahısını tövsiyə edir. Düymələr rahat toxunma üçün ən azı 44pt ölçüdə olmalıdır. Mətn daxiletmə sahələrindən qaçın — hazır cavablar, diktə və ya Digital Crown çarxından istifadə edin.
Enerjiyə qənaət edən dizayn — companion tətbiq saatı bir neçə saata boşaltmamalıdır. Minimal intervalla fon yeniləmələrindən istifadə edin. watchOS-da WatchConnectivity batareya az olduqda ötürməni dayandırır və doldurulduqdan sonra bərpa edir. Wear OS-da Wearable Data Layer enerjiyə qənaət üçün kiçik ötürmələri avtomatik bir qrupda birləşdirir. Wrist raise — UI-ni yalnız istifadəçi biləyini qaldırdıqda yeniləyin.
Companion tətbiqinin arxitekturası mümkün əlaqə itkisi nəzərə alınmaqla layihələndirilməlidir. Repository nümunəsindən istifadə edin: telefonda vahid məlumat mənbəyi saatda lokal repozitoriya ilə sinxronlaşır. Saatdakı ViewModel lokal repozitoriyaya abunə olur və əlaqə vəziyyətindən asılı olmayaraq məlumatları göstərir. Əlaqə bərpa olunduqda saatdakı Repository WatchConnectivity və ya Wearable Data Layer vasitəsilə məlumatları sorğulayır və lokal yaddaşı yeniləyir.
class WorkoutRepository constructor(
private val localStorage: WorkoutDao,
private val wearableClient: WearableClient
) {
val workoutFlow: Flow<Workout?> = merge(
localStorage.observeWorkout(),
wearableClient.observeWorkout()
.onEach { localStorage.save(it) }
)
}
Sınaq companion tətbiqi real saatda və ya emulyatorda yoxlama tələb edir. Xcode iPhone simulyatoru ilə cüt Apple Watch simulyatorunu dəstəkləyir — WatchConnectivity fiziki cihazlar olmadan sınaqdan keçirilə bilər. Android Studio Wearable Data Layer dəstəyi ilə Wear OS emulyatorunu ehtiva edir. Kritik test halları: ötürmə zamanı əlaqənin itirilməsi, batareyanın az olması, iki companion tətbiqinin eyni vaxtda işi və standalone saatda telefonsuz quraşdırma.
Companion tətbiqinin nəşri watchOS-da App Store-a ayrıca yükləmə tələb etmir — tətbiq iOS tətbiqinin binarına daxildir və avtomatik saata quraşdırmaq üçün təklif olunur. Wear OS-da companion tətbiq Google Play-də ayrıca nəşr olunur, lakin eyni paket vasitəsilə əsas tətbiqlə bağlanır. iOS-da App Group və Android-də sharedUserId əsas və companion tətbiqə ümumi məlumat anbarından istifadə etməyə imkan verir.
Tez-tez verilən suallar
Companion App tam funksionallıq üçün iPhone və ya Android-də quraşdırılmış əsas tətbiq tələb edir. Saatdakı adi standalone tətbiq (məsələn, kompas və ya saniyəölçən) telefonsuz muxtar işləyir. Companion App telefonla məlumatları sinxronlaşdırır, bildirişləri göstərir və sürətli hərəkətlərə imkan verir, lakin telefonsuz funksiyaların bir hissəsini itirir.
WatchConnectivity dörd rejimi dəstəkləyir: Application Context əvvəlkini ləğv etməklə cari vəziyyəti ötürmək üçün, File Transfer istənilən ölçülü fayllar üçün, User Info zəmanətli çatdırılma ilə məlumat lüğətləri üçün və Interactive Messaging real vaxtda ikitərəfli əlaqə üçün. Məlumatlar Bluetooth və ya Wi-Fi ilə ötürülür — sistem optimal kanalı avtomatik seçir.
Bəli, companion tətbiq muxtar işləyir — watchOS və Wear OS telefondan alınan məlumatları keşləyir. Hüceyrə modulu olan saatda tətbiq sorğuları birbaşa eSIM və ya LTE ilə göndərir. Keşlənmiş məlumatlar əlaqə olmadıqda belə göstərilir. Əlaqə bərpa olunduqda keş fon sinxronizasiyası ilə yenilənir.
Ən populyar kateqoriyalar: məşq sinxronizasiyası olan fitness trekerlər, saatdan mesajlara cavab vermək üçün messencerlər, biləkdə dönmə göstərişləri olan naviqatorlar, oxutmanı idarə etmək üçün musiqi pleyerlər, ödəniş sistemləri, cihazları idarə etmək üçün ağıllı ev və nəbz və təzyiq üçün tibbi monitorlar.
Apple Watch standart istifadədə aktiv companion tətbiqi ilə 18 saata qədər iş təmin edir. Wear OS — 24 saata qədər. WatchConnectivity aşağı enerji sərfiyyatı üçün optimallaşdırılıb: batareya az olduqda məlumat ötürmə dayanır, kütləvi sinxronizasiya isə saat doldurularkən həyata keçirilir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun