ستاسو اپلیکیشن وايي جلا شوی، د مینو بار وايي نښلول شوی، او ترافیک په څرګنده توګه بهیږي۔ دا تشه د سیالۍ هغه حالت نه دی چې بیا هڅه یې سمولی شي: اپلیکیشن او تونل جلا پروسې دي، او هغه شی چې ستاسو کوډ یې لولي د سیستم لخوا ساتل شوې ترتیب بڼې کاش شوی لید دی۔ د Apple Personal VPN سطح د کنټرول API ده، د معلوماتو لار نه، او د هغې ډېره عجیبه چلند له همدې یوې واقعیت څخه راځي۔ دلته هغه څه دي چې په هر غوښتنه کې واقعاً پیښیږي۔

د مدیر شی کاش شوی لید دی، تونل نه

NETunnelProviderManager د سیستم په ملکیت کې د غوره تګلارو ذخیرې څخه ډکیږي، نو د هغې ځانګړنې تر هغه پورې هیڅ معنا نه لري چې loadFromPreferences بشپړ نشي۔ که له هغې مخکې connection.status ولولئ، یو ډیفالټ ارزښت ترلاسه کوئ، او همدا لامل دی چې له بیا پیل وروسته لومړنی حالت تازه کول تونل د فعالېدو پر مهال جلا شوی ښیي۔ لومړی بار کړئ، بیا حالت او د پروتوکول ترتیب له هماغه بشپړونکي لاسوند څخه ولولئ۔ وروستي بدلونونه د پوښتنې پر ځای د NEVPNStatusDidChange له لارې وګورئ، او پام وکړئ چې خبرتیا د On Demand لخوا پیل شوو نښلوونو لپاره هم فعالیږي، چېرې چې د اپلیکیشن هیڅ غوښتنه نشته چې څه بیرته راولي۔ دا هماغه د پروتوکول ترتیباتو لپاره هم صدق کوي: هغه له بار شوي ترتیب څخه لوستل کیږي، نه له هغه څخه چې اپلیکیشن سپارلی دی۔

تونل پخپله د Network Extension چمتو کوونکي پروسه کې ژوند کوي، نو اپلیکیشن کولی شي خپل حالت له لاسه ورکړي پرته له دې چې نښلون له لاسه ورکړي۔ هر هغه څه چې انټرفېس ښیي باید له مدیر څخه بیا جوړ شي، نه له تېرې ناستې څخه یاد شي۔

د پیل کولو ترتیب: وساتئ، بار کړئ، بیا پیل کړئ

د چمتو کوونکي پر بنسټ نښلون په ترتیب درې ګامه غواړي۔ د چمتو کوونکي ترتیب ولیکئ او saveToPreferences ته زنګ ووهئ، مدیر بار کړئ تر څو ساتل شوی ترتیب هماغه وي چې په لاس کې مو دی، بیا د NETunnelProviderSession.startVPNTunnel() له لارې پیل کړئ۔ که ساتل پرېږدئ، پیل کولو لپاره هیڅ شی نشته چې پیل شي؛ که له ساتلو مخکې بار کړئ، مدیر لا هم زوړ ترتیب ښیي۔

هغه بولین چې startVPNTunnel بیرته راولي یوازې وايي چې غوښتنه ومنل شوه۔ د چمتو کوونکي کچې ناکامي وروسته د حالت بدلون په توګه جلا شوي ته راځي، کوم چې تاسو د NEVPNStatusDidChange خبرتیا له لارې ګورئ، او د خبرتیا لاسوند باید له loadFromPreferences وروسته connection.status بیا ولولي ځکه چې کاش شوی ارزښت کېدای شي لا زوړ وي۔ د غوښتنې کچې ناکامي سمدلاسه د زنګ هغې بڼې څخه راستنیږي چې استثنا غورځوي، یا د startVPNTunnelAndReturnError: د تېروتنې وتنې پارامیټر له لارې۔ هغه کوډ چې راستنېدونکی ارزښت د پایلې په توګه ګڼي، د هغه نښلون راپور ورکوي چې هیڅکله نه دی جوړ شوی۔ بله غلطه ناکامي د چمتو کوونکي بنډل پېژندونکی دی چې له نصب شوې غځونې سره سمون نه لري: غوښتنه رد کیږي، او په پیغام کې هیڅ شی پېژندونکي ته اشاره نه کوي۔ که پېژندونکی غلط وي، غوښتنه معمولاً سمدلاسه ناکامه کیږي، مخکې له دې چې د چمتو کوونکي یوه لیکه لاګ راڅرګنده شي۔

له پیل وروسته د غوره تګلارو بیا بارول هغه څه دي چې د حالت سکرینونه سمول کوي۔ سیستم چې ترتیب بدلوي، مدیر تاسو ته نوی ترتیب نه ټېله کوي۔

د باور توکي د پروفایل له لارې راځي، هیڅکله د اپلیکیشن کوډ څخه نه

اپلیکیشن د iOS د باور ذخیرې ته د ریښې سند د زیاتولو لپاره هیڅ ملاتړ شوې لاره نه لري، نو د Personal VPN ترتیب یوازې هغه توکو ته اشاره کولی شي چې وسیله دمخه پرې باور لري: هغه ځنځیر چې د نصب شوي پروفایل، د وسیلې مدیریت یا د CA لخوا جوړ شوی وي چې سیستم بل لامل له مخې پرې باور لري۔ هغه اپلیکیشن چې په لومړي پیل کې خپله CA جوړوي او هیله لري چې سیستم به یې ومني، د چمتو کوونکي دننه په تصدیق کې ناکامه کیږي، چېرې چې د اپلیکیشن انټرفېس لامل نه شي لیدلی۔

دا پوله داسې ومنئ لکه څنګه چې ده، د ډیزاین خنډ په توګه، او د باور لنګر له نوم لیکنې پروفایل سره یوځای واستوئ۔ د VPN تصدیق د باور له پرېکړې جلا وساتئ، ځکه چې هغه په جلا ځایونو کې ناکامیږي او جلا خلک یې سمول کوي۔

شمارونکي له انټرفېس څخه راځي، د VPN API څخه نه

مدیر حالت او ترتیب ښکاره کوي، او هیڅ شی چې د هر تونل بایټونه وشمېري۔ که تاسو ته د کارونې شمېرې غواړئ، getifaddrs() ته زنګ ووهئ او د اړوند انټرفېس لپاره if_data ولولئ: د Wi-Fi لپاره en0، د ګرځنده شبکې لپاره pdp_ip انټرفېسونه، او د تونل لپاره پخپله utun وسیله۔ د utun شمارونکي داخلي ترافیک بیانوي او د پروتوکول اضافي لګښت هم لري۔

دا شمېرې اټکلونه دي، د هر اپلیکیشن حساب نه، او کله چې انټرفېس بیا جوړ شي بیا تنظیمیږي۔ په انټرفېس کې یې همداسې نښان کړئ، که نه نو یو څوک به یې د پیرودونکي د بل کولو لپاره وکاروي۔ که تاسو ته د هر اپلیکیشن شمېرې غواړئ، بشپړ مختلف میکانیزم ته اړتیا لرئ، د دې برخو ښه لوستل نه۔

پاکوالی په stopVPNTunnel کې دی، په پای کې نه

applicationWillTerminate تاسو ته څو ثانیې درکوي مخکې له دې چې سیستم پروسه ووژني، کوم چې د نښلون د خلاصولو لپاره باوري ځای نه دی۔ د ودرو غوښتنه stopVPNTunnel() ته واستوئ یا یې د چمتو کوونکي د ودروونکي بیرته زنګ کې سمبال کړئ، او هغه پېژندونکی وساتئ چې پرې مو پیل کړی و، تر څو ودروونکی هماغه نښلون په نښه کړ نه د وسیلې هر ترتیب۔

هغه پېژندونکی د هغه پروفایل تر څنګ وساتئ چې اړه ورته لري، ځکه چې د مدیر شی ثبت نه کوي چې کارونکي کوم ترتیب غوره کړی۔ او په یاد ولرئ چې On Demand پورته کړی نښلون په شا کې د اپلیکیشن هیڅ غوښتنه نه لري، نو د حالت سکرین لاهم باید مخکې له دې چې څه رسم کړي غوره تګلارې بار کړي۔

اړوندې مقالې