Companion App — bu nədir, yoldaş tətbiqlərin hazırlanması

Müəllif: IT Sectr Dərc olunub: 2026-02-16 Oxuma vaxtı: 9 dəq

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 — telefonda əsas tətbiq ilə işləyən wearable tətbiq
  • WatchConnectivity — iPhone və Apple Watch arasında məlumat mübadiləsi üçün freymvork
  • Wearable Data Layer — Android tətbiqini Wear OS ilə sinxronlaşdırmaq üçün API
  • Muxtar iş — saat məlumatları keşləyir və telefona qoşulmadan işləyir
  • Push bildirişləri — companion telefondan bildirişləri biləkdə göstərir

Companion App nədir — wearable üçün tətbiq?

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: iPhone və Apple Watch sinxronizasiyası

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.

swift
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 və Wear OS sinxronizasiyası

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.

kotlin
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.

Companion tətbiqin saatda muxtar işi

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.

RejimMəlumatƏlçatanlıqNümunə
OnlineServerdən/telefondan canlıTamNaviqasiya marşrutu
CachedTelefondan ən sonMəhdudKontakt siyahısı
OfflineSaatda lokalMinimalTaymer, 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ətbiqlərin hazırlanmasında ən yaxşı təcrübələr

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.

kotlin
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 saatdakı adi tətbiqdən nə ilə fərqlənir?

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 iPhone və Watch arasında məlumatları necə ötürür?

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.

Companion App internet olmadan işləyə bilərmi?

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.

Hansı tətbiq növləri Companion App-dən ən çox istifadə edir?

Ə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.

Companion App saatda nə qədər enerji sərf edir?

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ə

  • Companion App — telefonda əsas tətbiqlə cüt işləyən saat tətbiqi
  • WatchConnectivity — Apple Watch-da dörd məlumat ötürmə rejimi olan iOS freymvorku
  • Wearable Data Layer — DataItem və MessageClient vasitəsilə Wear OS ilə sinxronizasiya üçün Android API
  • Muxtar iş — məlumatların keşlənməsi telefondan ayrıldıqda işləməyə imkan verir
  • Enerji sərfiyyatı — Apple Watch-da 18 saata qədər, Wear OS-da 24 saata qədər
  • Saat UI — böyük elementlər və minimal mətn ilə yığcam interfeys
  • Nəşr — watchOS iOS binarına daxildir, Wear OS Google Play-də ayrıca nəşr olunur

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.

Layihəni müzakirə et

Həm də oxuyun