ساتھی ایپ — 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 ایپ (ساتھی)۔ ان کے درمیان رابطہ سسٹم APIs کے ذریعے ہوتا ہے: 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 ms کے اندر پیغام بھیجا جاتا ہے اور جواب موصول ہوتا ہے۔ اس کا استعمال ایسے اقدامات کے لیے کیا جاتا ہے جن میں فوری جواب کی ضرورت ہوتی ہے: ورزش شروع کرنا، ادائیگی کی تصدیق کرنا، سمارٹ ہوم کا دروازہ کھولنا۔ سیشن دونوں آلات پر فعال ہونا چاہیے — اگر گھڑی مقفل ہے یا ایپ پس منظر میں ہے تو ترسیل کی ضمانت نہیں ہے۔
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 سینسرز (دل کی دھڑکن مانیٹر، بائیک کمپیوٹر) سے ڈیٹا کو فون کے ذریعے گھڑی تک پہنچانے کے لیے مفید ہے۔
خود مختار کام — ساتھی ایپ کی فون کنکشن کے بغیر کام کرنے کی صلاحیت۔ Cellular ماڈیول والے 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں