عام مفروضہ یہ ہے کہ دور کا ڈیسک ٹاپ سیشن پورا ترقیاتی ماحول آپ کے لیپ ٹاپ پر منتقل کر دیتا ہے۔ یہ اسکرین، کی بورڈ اور ماؤس منتقل کرتا ہے، اور کچھ نہیں۔ iPhone کو اُس Mac تک پہنچنا ہوتا ہے جس پر Xcode چلتا ہے، اور یہ ایک الگ کنکشن ہے جس کے اپنے اعتماد، ٹرانسپورٹ اور اجازت کے تقاضے ہیں۔ نیچے سب کچھ اسی تقسیم سے نکلتا ہے، اور یہیں زیادہ تر ناکام سیٹ اپ آدھا دن ضائع کرتے ہیں۔

افسانہ: ریموٹ کنٹرول ڈیوائس کو بھی منتقل کرتا ہے

دور کے ڈیسک ٹاپ کا سافٹ ویئر ڈسپلے اور ان پٹ اسٹریم آگے بھیجتا ہے، اور اچھے کنکشن پر ایسا محسوس ہوتا ہے جیسے Mac آپ کے سامنے بیٹھا ہے۔ مگر جو چیز یہ آگے نہیں بھیجتا وہ USB ہے، اور یہ فون کو Mac کے نیٹ ورک میں بھی نہیں رکھتا۔ سیشن Mac کے ڈیسک ٹاپ پر ختم ہوتا ہے، جہاں Xcode کو پھر اپنے قواعد کے مطابق ڈیوائس ڈھونڈنی ہوتی ہے۔ یہ سمجھنا کہ فون پکسلز کے ساتھ سفر کرتا ہے، اس ترتیب کی سب سے عام غلطی ہے۔

دونوں کنکشن آزاد ہیں، اور ایک کامل ہو سکتا ہے جبکہ دوسرا بالکل موجود نہ ہو۔ ڈیسک ٹاپ سیشن کی مرمت آپ کو ڈیوائس کے راستے کے بارے میں کچھ نہیں بتاتی۔

کچھ بھی کنفیگر کرنے سے پہلے طے کریں کہ فون جسمانی طور پر کہاں ہے

اگر فون Mac کے پاس ہی رہتا ہے تو وہیں عام مقامی سیٹ اپ کریں: کمپیوٹر پر بھروسہ کریں، ڈیوائس پر ڈویلپر موڈ آن کریں، اور تصدیق کریں کہ مشین کے سامنے بیٹھے ہوئے Xcode اُس پر بلڈ کر کے چلاتا ہے۔ اس کے بعد دور کا ڈیسک ٹاپ اُس ورک فلو کو کنٹرول کرتا ہے جو پہلے ہی کام کر رہا ہے۔ یہ سب سے سستا انتظام ہے اور جب ہارڈ ویئر اجازت دے تو یہی چننا چاہیے۔

اگر فون آپ کے ساتھ سفر کرتا ہے اور Mac دفتر میں رہتا ہے تو Mac کو اُس ڈیوائس تک معاون راستہ درکار ہے۔ VPN دونوں سروں کے درمیان نیٹ ورک روٹ دیتا ہے اور اس کے سوا کچھ نہیں: پیئرنگ، ڈویلپر موڈ، دستخط کی شناخت اور ڈیوائس کی رجسٹریشن سب الگ تقاضے رہتے ہیں۔ ٹنل کو کنکشن کی بجائے اسٹیک کی ایک تہہ سمجھیں۔

لکھ کر رکھیں کہ آپ اِن دو انتظامات میں سے کس میں ہیں۔ ہر بعد کی جانچ اسی پر منحصر ہے، اور انہیں ملانے سے ایسی اصلاحات بنتی ہیں جو کام نہیں کر سکتیں۔

دریافت اور ٹرانسپورٹ کو دو مختلف مسائل سمجھیں

Xcode جوڑے گئے وائرلیس ڈیوائسز کو مقامی نیٹ ورک پر Bonjour کے ذریعے ڈھونڈتا ہے، اور Connect via IP Address کے ذریعے کسی معلوم پتے پر موجود ڈیوائس تک بھی پہنچ سکتا ہے۔ یہ دو مختلف ناکامی کے طریقوں والے دو میکانزم ہیں۔ فہرست میں کبھی نہ آنے والا ڈیوائس اور آ کر بھی جڑنے سے انکار کرنے والا ڈیوائس ایک ہی علامت نہیں، اگرچہ دونوں گمشدہ فون ہی پڑھے جاتے ہیں۔

کچھ بدلنے سے پہلے اشتہار تلاش کریں: dns-sd -B _apple-mobdev2._tcp اُس سروس کی فہرست دیتا ہے جو جوڑا گیا فون مقامی لنک پر شائع کرتا ہے۔ اگر کچھ نظر نہ آئے تو دریافت ہی ٹوٹی ہوئی تہہ ہے اور پتے پر مبنی کنکشن ہی بچا راستہ ہے۔ اگر سروس نظر آئے مگر Xcode پھر بھی نہ جڑ سکے تو دریافت کام کرتی ہے اور ناکام ہونے والا ٹرانسپورٹ یا اعتماد کا رشتہ ہے۔

Apple کی وائرلیس ڈیوائس مدد ایک ہی نیٹ ورک کی شرط اور پتے والے ورک فلو دونوں کا احاطہ کرتی ہے، اس لیے پرانی ریلیز سے یاد مینو راستے پر چلنے کے بجائے اپنے نصب شدہ ورژنز کے مقابلے میں اسے پڑھیں۔ نیچے کا میکانزم نہ بدلے تو بھی مینو لیبل Xcode ریلیز کے درمیان جگہ بدلتے ہیں۔

دیکھیں کہ Mac اپنی جگہ سے کیا دیکھ سکتا ہے

گنتی Mac پر چلائیں، اپنے لیپ ٹاپ پر نہیں، کیونکہ ڈیوائس کی ضرورت اُس مشین کو ہے اور وہ Mac ہے۔ xcrun devicectl list devices اُن ڈیوائسز کی فہرست چھاپتا ہے جن تک Xcode پہنچ سکتا ہے، اور system_profiler SPUSBDataType دکھاتا ہے کہ جسمانی طور پر کیا جڑا ہے۔ دوسری فہرست میں نظر آنے والا مگر پہلی میں نہ ہونے والا فون جڑا ہوا ہے مگر جوڑا نہیں گیا، یہ نیٹ ورک کی نہیں بلکہ اعتماد کی مشکل ہے۔

xcrun devicectl list devices
system_profiler SPUSBDataType | grep -i iphone
xcrun devicectl device info DEVICE_UDID

اگر ڈیوائس کسی دوسرے سب نیٹ میں ہے تو تصدیق کریں کہ Mac اُس پتے تک پہنچ سکتا ہے جو فون شائع کرتا ہے، اور یاد رکھیں کہ link-local IPv6 پتے صرف ایک لنک تک محدود ہوتے ہیں اور ٹنل کے پار روٹ نہیں ہوتے۔ اسی لیے صرف VPN دور کے فون کو شاذ و نادر ہی دکھاتا ہے: ڈیوائس کا اشتہار کردہ پتہ صرف اپنے ہی حصے میں معنی رکھتا ہے۔

Apple کا تکنیکی نوٹ TN3158 کہتا ہے کہ ورژن 15 سے Xcode کیبل والے ڈیوائس سے link-local IPv6 پر بنے نیٹ ورک انٹرفیس کے ذریعے بات کرتا ہے، اس لیے مقامی فلٹرنگ جسمانی طور پر لگے فون کو بھی متاثر کر سکتی ہے۔ ایسا معاملہ خود بند کرنے کے بجائے فلٹرنگ پالیسی کے مالک کو دیں۔

اسے ڈیوائس آئیکن سے نہیں، بلڈ سے ثابت کریں

فہرست میں ڈیوائس کا اندراج، ٹول بار میں سبز اشارہ یا کامیاب پیئرنگ پرامپٹ درمیانی مشاہدات ہیں۔ ورک فلو اُس وقت ثابت ہوتا ہے جب Xcode اجازت شدہ بلڈ نصب کرتا ہے اور ڈیبگر ڈیوائس پر چلنے والے عمل سے جڑتا ہے۔

پوری ترتیب Mac سے چلائیں۔ xcrun devicectl device install app --device DEVICE_UDID build/MyApp.app IDE کے بغیر نصب کرتا ہے، جو Xcode انٹرفیس کے مسئلے کو ڈیوائس کے راستے کے مسئلے سے الگ کرتا ہے۔ پھر ایپ شروع کریں اور اُس سے کنسول جوڑیں۔ اگر کمانڈ لائن کی تنصیب چلے مگر IDE نہ چلے تو باقی نقص نیٹ ورک میں نہیں بلکہ اسکیم یا دستخط کی کنفیگریشن میں ہے۔

انتظام کو تنگ رکھیں: ایک مجاز ڈویلپر، ایک رجسٹرڈ Mac، ایک ڈیوائس، اور ایسی رسائی جو سیشن ختم ہونے پر ختم ہو۔ انتظام رکنے پر اسناد منسوخ کریں۔ اگر فون Mac کے پاس ہی رہ سکتا ہے تو وہی چنیں، کیونکہ سب سے سادہ معاون راستہ ہی ڈیبگ کے لیے کم ترین تہیں چھوڑتا ہے۔

متعلقہ مضامین