API په همدې تلیفون کې په Safari کې ځواب ورکوي، خو د ایپ غوښتنه د وخت پای ته رسېږي. دا توپیر معمولاً تونل نه وي: هغه ایپ چې داخلي خدمت ته زنګ وهي، عادي HTTPS غوښتنه کوي، او په وسیله کې شته VPN یوازې دا فیصله کوي چې آیا هغه غوښتنه لاره لري که نه. په ایپ کې دوهم تونل لیکل د محصول پرېکړه ده، نه د وخت د پای لپاره ترمیم. لاندې برخه ناکامي د هغې د پېښېدو له ځای له مخې طبقه‌بندي کوي، هغه د تېروتنې سطحه کاروي چې ایپ لا دمخه لري.

له تېروتنې پیل کړئ، نه له تونل

URLSession د لېږد ناکامۍ په توګه NSError ارزښتونه په NSURLErrorDomain کې راپور کوي، او کوډ تر ټولو ارزانه موجود شاهد دی. له هرې ترتیباتو بدلولو مخکې هغه کوډ د ناکام هوسټ نوم او د کار تېر وخت سره ثبت کړئ. د وخت پای، د نوم ناکامي او د باور ناکامي په سکرین کې یو شان ښکاري او درې جلا ترمیمونه غواړي. لومړی طبقه‌بندي کړئ، بیا د هغې طبقې برخه ولولئ.

د کار اندازه کول بل پوښتنې ته ځواب ورکوي، چې آیا اړیکه کله هم جوړه شوه، دا هغه غوښتنه چې کله هم لاره نه لرله د هغې غوښتنې څخه بېلوي چې سرور ډېر ناوخته ځواب ورکړ. له دې څخه هیڅ هم تونل بدلولو ته اړتیا نه لري؛ اړتیا دا ده چې د غوښتنې خپل تشخیصونه دې داسې ځای کې چاپ شي چې تاسو یې لوستلی شئ.

د نوم حل له هر بل شي مخکې ناکامېږي

لکه api.corp.example په څېر لنډ دفتر نوم معمولاً د لټون ډومین پورې تړلی وي چې تلیفون یې نه لري، نو ایپ هغه نوم حل کوي چې یوازې د ودانۍ دننه شته. NSURLErrorCannotFindHost د هغې لاسلیک دی. بشپړ هوسټ نوم باید د هر هغه حل کوونکي له لارې حل شي چې VPN یې نصبوي، او ایپ باید بشپړ وړ بڼه وغواړي کله چې د لټون ډومین تضمین نه وي. نوم د پتې سره بدلول او د سندونو څېړنې بندول ناکامي لېږدوي، نه یې سمومي.

خصوصي DNS ریکارډ او هغه سند چې دقیقاً د همدې نوم لپاره صادر شوی، د ملاتړ شوې جوړه ده. هر بل څه یو داسې لاره ده چې کاروونکو ته رسېږي.

د وخت پای د نوم نه، د لارې پوښتنه ده

NSURLErrorTimedOut مانا دا ده چې نوم حل شو او هیچا ځواب نه ورکړ، چې لارې، د بنډل تګلارې یا خدمت ته اشاره کوي. کله چې تونل د هر ایپلیکیشن لپاره ټاکل کېږي، بل ایپ چې هماغه سرور ته رسېږي ستاسو د جوړښت په اړه هیڅ نه وایي، ځکه هغه نقشه شریکه نه ده. وګورئ چې هغه بنډل چې تاسو یې چلوئ د هغې ټاکلو دننه دی، بیا وګورئ چې د خدمت لاره د هغې لپاره اجازه لري. د ټاکلو څخه بهر نصب شوی پراختیایي جوړښت کولای شي په بشپړ ډول له تونل بهر وي او مات شوي API په څېر ښکاره شي.

د براوزر پرتله ښیي چې په وسیله کې یو څه ایپ لاره لري. دا هیڅکله نه ثابتوي چې ستاسو جوړښت یې لري، نو دواړه ازموینې باید جلا ترسره شي.

د باور ناکامۍ د سند پر نوم اړوندې دي

NSURLErrorServerCertificateUntrusted د هغې لاندې TLS تېروتنې سره یوځای مانا دا ده چې زنځیر یا د هویت څېړنه ناکامه شوه. داخلي CA باید په وسیله کې باوري وي، او هغه سند چې بل هوسټ نوم لپاره صادر شوی وي د هر ډول شبکې بیا تنظیم وروسته هم غلط پاتې کېږي. د Apple د App Transport Security لارښود لا هم په دې URL باروونکو اړیکو باندې تطبیق کېږي، او د ساده HTTP خدمت شاوخوا تونل هغه خدمت له سره تر سره خوندي نه کوي.

هویت یا د باور لنگر سم کړئ او د استثناوو لیست خالي وساتئ. د هر ډول بارولو لپاره عمومي استثنا پراختیا په جریان کې ناکامي پټوي او بیا یې هر کاروونکي لپاره په خپل ځای پرېږدي.

د HTTP رد د ایپ دی، نه د شبکې

د بشپړ شوي لاس نیول وروسته 401 یا 403 مانا دا ده چې غوښتنه ورسېده او خدمت رد کړه، نو پاتې پوښتنه حساب، د ټوکن اورېدونکي، دایره یا کیلي ده. د حالت کوډ او هوسټ نوم ثبت کړئ، هیڅکله د وړونکي ټوکن یا ځواب بدن نه. په هغه وخت کې تونل خپله دنده کوي او نور شبکې بدلونونه یوازې ریښتینی سمون ځنډوي.

جدول هغه طبقه‌بندي ده چې د ټرمینل تر څنګ یې وساتئ: د هرې هغې ناکامۍ لپاره یوه کرښه چې ایپ واقعاً راپور ورکولای شي. کوډ د لوستلو مخکې چاپ کړئ، ځکه هغه کرښه چې تاسو غوره کوئ پریکړه کوي چې کومه برخه کاروئ.

Where it failsWhat the app seesFirst check
name resolutionNSURLErrorCannotFindHost (-1003)resolve the fully qualified name from the device itself
no path, or no answerNSURLErrorTimedOut (-1001)is this bundle inside the per-app mapping, and is the service path allowed
TLS trustNSURLErrorServerCertificateUntrusted (-1202)does the certificate name match the host, and is the internal CA trusted
service refusalHTTP 401 or 403 after a completed handshakeaccount, token audience, scope or key

هره کرښه د هغې لاندې کرښې څخه ارزانه ازمویل کېږي، او هر یو یې د هماغې غوښتنې بېل پوړ بېلوي. په جدول کې ښکته لاړ شئ تر څو یوه کرښه سمه راشي، بیا شبکه بدلول ودروئ.

اړوندې مقالې