कम्पेनियन ऐप — Apple Watch और Wear OS पहनने योग्य उपकरणों के लिए एक साथी एप्लिकेशन, जो स्मार्टफोन पर मुख्य एप्लिकेशन के साथ मिलकर काम करता है। कम्पेनियन ऐप WatchConnectivity (iOS) या Wearable Data Layer (Android) के माध्यम से डेटा सिंक करता है, घड़ी पर सूचनाएं प्रदर्शित करता है और स्वायत्त रूप से कार्य कर सकता है। विकास watchOS के लिए Swift और Wear OS के लिए Kotlin में किया जाता है। अधिक जानकारी — WatchConnectivity Docs पर।
मुख्य बिंदु
कम्पेनियन ऐप — Apple Watch या Wear OS पहनने योग्य उपकरणों के लिए एक एप्लिकेशन जो मुख्य iOS या Android ऐप के साथ आता है। मुख्य उद्देश्य कार्यक्षमता को कलाई तक विस्तारित करना है: त्वरित जानकारी देखना, संदेशों का उत्तर देना, संगीत नियंत्रित करना, वर्कआउट ट्रैक करना। जब डेवलपर इसे बिल्ड में शामिल करता है तो फोन पर मुख्य ऐप इंस्टॉल करने पर कम्पेनियन ऐप स्वचालित रूप से घड़ी पर इंस्टॉल हो जाता है।
आर्किटेक्चर कम्पेनियन ऐप में दो घटक शामिल हैं: iOS/Android ऐप (मुख्य) और watchOS/Wear OS ऐप (साथी)। उनके बीच संचार सिस्टम API के माध्यम से होता है: Apple के लिए WatchConnectivity और Google के लिए Wearable Data Layer। डेटा बैकग्राउंड में Bluetooth या Wi-Fi के माध्यम से स्थानांतरित होता है — उपयोगकर्ता सिंक्रोनाइज़ेशन प्रक्रिया नहीं देखता। घड़ी पर ऐप का अपना UI हो सकता है, जो मोबाइल से अलग, छोटी स्क्रीन के अनुकूल हो।
कम्पेनियन ऐप के प्रकार फोन पर निर्भरता की डिग्री में भिन्न होते हैं। मिररिंग ऐप्स फोन डेटा की एक प्रतिलिपि प्रदर्शित करते हैं और कनेक्शन के बिना काम नहीं करते। डिकपल्ड ऐप्स का अपना तर्क होता है, डेटा कैश करते हैं और फोन से डिस्कनेक्ट होने पर कुछ कार्यक्षमता बनाए रखते हैं। इंडिपेंडेंट ऐप्स (watchOS 6+ और Wear OS 3+) बिना फोन के इंस्टॉल किए जा सकते हैं और अपने स्वयं के नेटवर्क एक्सेस के साथ पूरी तरह से स्वायत्त रूप से काम करते हैं।
WatchConnectivity — iPhone और Apple Watch के बीच दो-तरफा संचार के लिए Apple का फ्रेमवर्क। यह चार डेटा स्थानांतरण तंत्र प्रदान करता है: Application Context (अंतिम ज्ञात स्थिति), File Transfer (किसी भी आकार की फ़ाइलें), User Info (गारंटीकृत डिलीवरी के साथ शब्दकोश) और Interactive Messaging (रीयल-टाइम दो-तरफा संचार)। सिस्टम दूरी और सिग्नल गुणवत्ता के आधार पर स्वचालित रूप से Bluetooth या Wi-Fi चुनता है।
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 — गारंटीकृत रीयल-टाइम डिलीवरी के साथ एकमात्र WatchConnectivity तंत्र। कनेक्शन सक्रिय होने पर संदेश 200–500 मिलीसेकंड के भीतर भेजा जाता है और प्रतिक्रिया प्राप्त करता है। इसका उपयोग तत्काल प्रतिक्रिया की आवश्यकता वाली क्रियाओं के लिए किया जाता है: वर्कआउट शुरू करना, भुगतान की पुष्टि करना, स्मार्ट होम का दरवाजा खोलना। सत्र दोनों उपकरणों पर सक्रिय होना चाहिए — यदि घड़ी लॉक है या ऐप बैकग्राउंड में है, तो डिलीवरी की गारंटी नहीं है।
File Transfer API बड़ी मात्रा में डेटा के लिए डिज़ाइन किया गया है — इमेज, ऑडियो फ़ाइलें, निर्यात किए गए वर्कआउट। ऐप बंद होने पर भी फ़ाइलें बैकग्राउंड में स्थानांतरित होती हैं। सीमा कतार में 10 तक समवर्ती स्थानांतरण है। Application Context सबसे किफायती तंत्र है: यह केवल नवीनतम स्थिति प्रसारित करता है, पिछले अप्रेषित संदर्भों को रद्द करता है। यह सेटिंग्स और वर्तमान स्थिति को सिंक करने के लिए आदर्श है।
Wearable Data Layer — Android डिवाइस और Wear OS घड़ियों के बीच डेटा सिंक करने के लिए Google Play Services से एक API। यह तीन प्रोटोकॉल प्रदान करता है: DataItem (कुंजी-मूल्य जोड़ी सिंक्रोनाइज़ेशन), MessageClient (एक-तरफा संदेश) और ChannelClient (स्ट्रीमिंग डेटा)। DataItems स्वचालित रूप से Google Cloud के माध्यम से सिंक होते हैं — यदि फोन अनुपलब्ध है, तो कनेक्शन बहाल होने पर डेटा वितरित किया जाता है।
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 — पथ और बाइट सरणी के साथ एक-तरफा संदेश भेजता है। इसका उपयोग "वर्कआउट शुरू करें" या "संगीत रोकें" जैसे आदेशों के लिए किया जाता है। यदि डिवाइस कनेक्ट है तो संदेश विश्वसनीय रूप से वितरित किया जाता है। Wear OS पर संदेश प्राप्त करने के लिए, WearableListenerService को लागू करें और इसे मेनिफेस्ट में पंजीकृत करें। MessageClient स्वचालित कैशिंग का समर्थन नहीं करता — यदि घड़ी डिस्कनेक्ट है, तो संदेश खो जाता है।
ChannelClient — स्ट्रीमिंग डेटा के लिए एक प्रोटोकॉल: ऑडियो, वीडियो, निरंतर सेंसर स्ट्रीम। यह एक दो-तरफा चैनल खोलता है जिसके माध्यम से बाइट सरणियाँ प्रेषित की जाती हैं। यह केवल Wear OS 2.0+ पर समर्थित है। ChannelClient Bluetooth के माध्यम से कॉल के लिए फोन से घड़ी तक ऑडियो ट्रांसमिट करने और फोन के माध्यम से बाहरी Bluetooth सेंसर (हृदय गति मॉनिटर, बाइक कंप्यूटर) से घड़ी तक डेटा रिले करने के लिए उपयोगी है।
स्वायत्त संचालन — फोन कनेक्शन के बिना कार्य करने की कम्पेनियन ऐप की क्षमता। सेल्युलर मॉड्यूल वाले watchOS पर, ऐप सीधे eSIM के माध्यम से नेटवर्क अनुरोध भेजता है। LTE वाले Wear OS पर, समान कार्यक्षमता उपलब्ध है। सेल्युलर मॉड्यूल के बिना भी, घड़ी फोन से नवीनतम डेटा कैश करती है और डिस्कनेक्ट होने पर इसे प्रदर्शित करती है — उपयोगकर्ता अंतिम सिंक के समय जानकारी देखता है।
| मोड | डेटा | उपलब्धता | उदाहरण |
|---|---|---|---|
| ऑनलाइन | सर्वर/फोन से लाइव | पूर्ण | नेविगेशन मार्ग |
| कैश्ड | फोन से नवीनतम | सीमित | संपर्क सूची |
| ऑफलाइन | घड़ी पर स्थानीय | न्यूनतम | टाइमर, स्टॉपवॉच |
डेटा कैशिंग — स्वायत्त संचालन का एक महत्वपूर्ण तत्व। ऐप को अंतिम प्राप्त स्थिति को घड़ी के स्थानीय भंडारण में सहेजना चाहिए। watchOS पर UserDefaults या CoreData का उपयोग किया जाता है, Wear OS पर — Room Database या DataStore। कनेक्शन बहाल होने पर, बैकग्राउंड सिंक्रोनाइज़ेशन के माध्यम से कैश अपडेट होता है। यदि डेटा 24 घंटे से अधिक पुराना है, तो ऐप "फोन कनेक्शन अपडेट करें" संदेश दिखाता है।
सीमित स्क्रीन के लिए वियरेबल UI — घड़ी की स्क्रीन 1.5–2 इंच होती है — कम्पेनियन ऐप इंटरफ़ेस यथासंभव संक्षिप्त होना चाहिए। Apple watchOS पर एक कॉलम वाले NavigationView की सिफारिश करता है, Google Wear OS पर नेविगेशन के लिए स्वाइप के साथ कार्ड सूची की सिफारिश करता है। बटन आरामदायक स्पर्श के लिए कम से कम 44pt होने चाहिए। टेक्स्ट इनपुट फ़ील्ड से बचें — पूर्वनिर्धारित उत्तर, डिक्टेशन या Digital Crown स्क्रॉलिंग व्हील का उपयोग करें।
ऊर्जा-कुशल डिज़ाइन — कम्पेनियन ऐप को कुछ घंटों में घड़ी की बैटरी खत्म नहीं करनी चाहिए। न्यूनतम अंतराल पर बैकग्राउंड अपडेट का उपयोग करें। watchOS पर, WatchConnectivity बैटरी कम होने पर स्थानांतरण रोक देता है और चार्ज करने के बाद फिर से शुरू करता है। Wear OS पर, Wearable Data Layer ऊर्जा बचाने के लिए स्वचालित रूप से छोटे स्थानांतरण को एक में समूहित करता है। कलाई उठाना — UI को केवल तभी अपडेट करें जब उपयोगकर्ता अपनी कलाई उठाए।
कम्पेनियन ऐप आर्किटेक्चर को संभावित कनेक्शन हानि को ध्यान में रखकर डिज़ाइन किया जाना चाहिए। Repository पैटर्न का उपयोग करें: फोन पर एक एकल डेटा स्रोत घड़ी पर स्थानीय रिपॉजिटरी के साथ सिंक होता है। घड़ी पर ViewModel स्थानीय रिपॉजिटरी की सदस्यता लेता है और कनेक्शन स्थिति की परवाह किए बिना डेटा प्रदर्शित करता है। कनेक्शन बहाल होने पर, घड़ी पर Repository WatchConnectivity या Wearable Data Layer के माध्यम से डेटा का अनुरोध करता है और स्थानीय भंडारण को अपडेट करता है।
class WorkoutRepository constructor(
private val localStorage: WorkoutDao,
private val wearableClient: WearableClient
) {
val workoutFlow: Flow<Workout?> = merge(
localStorage.observeWorkout(),
wearableClient.observeWorkout()
.onEach { localStorage.save(it) }
)
}
परीक्षण कम्पेनियन ऐप के लिए वास्तविक घड़ियों या एमुलेटर पर सत्यापन की आवश्यकता होती है। Xcode iPhone सिम्युलेटर के साथ युग्मित Apple Watch सिम्युलेटर का समर्थन करता है — आप भौतिक उपकरणों के बिना WatchConnectivity का परीक्षण कर सकते हैं। Android Studio में Wearable Data Layer समर्थन के साथ Wear OS एमुलेटर शामिल है। महत्वपूर्ण परीक्षण मामले: स्थानांतरण के दौरान कनेक्शन हानि, कम बैटरी, दो कम्पेनियन ऐप का एक साथ संचालन और स्टैंडअलोन घड़ियों पर बिना फोन के इंस्टॉलेशन।
कम्पेनियन ऐप का प्रकाशन watchOS पर App Store में अलग अपलोड की आवश्यकता नहीं है — ऐप iOS ऐप बाइनरी में शामिल है और स्वचालित रूप से घड़ी पर इंस्टॉलेशन के लिए पेश किया जाता है। Wear OS पर, कम्पेनियन ऐप Google Play पर अलग से प्रकाशित होता है लेकिन उसी पैकेज के माध्यम से मुख्य ऐप से जुड़ा होता है। iOS पर App Group और Android पर sharedUserId मुख्य और कम्पेनियन ऐप को साझा डेटा स्टोरेज का उपयोग करने की अनुमति देते हैं।
अक्सर पूछे जाने वाले प्रश्न
कम्पेनियन ऐप को पूर्ण कार्यक्षमता के लिए iPhone या Android पर मुख्य ऐप इंस्टॉल होना आवश्यक है। घड़ी पर सामान्य स्टैंडअलोन ऐप (जैसे कम्पास या स्टॉपवॉच) बिना फोन के स्वायत्त रूप से काम करता है। कम्पेनियन ऐप फोन के साथ डेटा सिंक करता है, सूचनाएं प्रदर्शित करता है और त्वरित कार्यों की अनुमति देता है, लेकिन फोन के बिना कुछ कार्य खो देता है।
WatchConnectivity चार मोड का समर्थन करता है: Application Context पिछले को रद्द करने के साथ वर्तमान स्थिति प्रसारित करने के लिए, File Transfer किसी भी आकार की फ़ाइलों के लिए, User Info गारंटीकृत डिलीवरी के साथ डेटा शब्दकोशों के लिए और Interactive Messaging रीयल-टाइम दो-तरफा संचार के लिए। डेटा Bluetooth या Wi-Fi के माध्यम से प्रेषित होता है — सिस्टम स्वचालित रूप से इष्टतम चैनल चुनता है।
हां, कम्पेनियन ऐप स्वायत्त रूप से काम करता है — watchOS और Wear OS फोन से प्राप्त डेटा को कैश करते हैं। सेल्युलर मॉड्यूल वाली घड़ियों पर, ऐप सीधे eSIM या LTE के माध्यम से अनुरोध भेजता है। कैश्ड डेटा बिना कनेक्शन के भी प्रदर्शित होता है। कनेक्शन बहाल होने पर, बैकग्राउंड सिंक्रोनाइज़ेशन के माध्यम से कैश अपडेट होता है।
सबसे लोकप्रिय श्रेणियां: वर्कआउट सिंक के साथ फिटनेस ट्रैकर, घड़ी से संदेशों का उत्तर देने के लिए मैसेंजर, कलाई पर मोड़-दर-मोड़ निर्देशों वाले नेविगेटर, प्लेबैक नियंत्रण के लिए संगीत प्लेयर, भुगतान प्रणाली, उपकरण नियंत्रण के लिए स्मार्ट होम और नाड़ी और रक्तचाप के लिए चिकित्सा मॉनिटर।
Apple Watch मानक उपयोग में सक्रिय कम्पेनियन ऐप के साथ 18 घंटे तक का कार्य प्रदान करता है। Wear OS — 24 घंटे तक। WatchConnectivity कम ऊर्जा खपत के लिए अनुकूलित है: बैटरी कम होने पर डेटा स्थानांतरण रुक जाता है, और घड़ी चार्ज करने के दौरान बल्क सिंक्रोनाइज़ेशन किया जाता है।
सारांश
हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे
IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।