2009-02-27 20 views
39

मैं iPhone एप्लिकेशन पर काम कर रहा हूं जो वेब सेवाओं को कुछ कॉल करता है। मैंने इस एप्लिकेशन को ऐप्पल स्टोर पर पोस्ट किया लेकिन इसे अस्वीकार कर दिया गया (और ठीक है) क्योंकि उपयोगकर्ता के पास कोई त्रुटि संदेश उपलब्ध नहीं है, तो कोई इंटरनेट कनेक्शन उपलब्ध नहीं है। चूंकि स्पष्ट रूप से एप्लिकेशन इसके बिना काम नहीं करेगा।आईफोन एसडीके इंटरनेट कनेक्शन का पता लगाने

तो मैं सिर्फ यह जानना चाहता था कि इसे कैसे प्राप्त किया जाए? मुझे लगता है कि viewDidLoad विधि में जाने की कुछ ज़रूरत है जो एक चेतावनी बॉक्स फेंक देगा जैसे "आपको इस एप्लिकेशन का उपयोग करने के लिए इंटरनेट कनेक्शन चाहिए"।

किसी भी विचार की सराहना की जाएगी।

उत्तर

48

यदि आपके एप्लिकेशन में नेटवर्क पहुंच होनी चाहिए तो सबसे आसान तरीका यह है कि निम्नलिखित जानकारी को अपनी जानकारी में जोड़ें। बूलियन मानों के रूप में।

  • SBUsesNetwork - सुनिश्चित करें कि उपकरण का सक्रिय कनेक्शन है:
  • UIRequiresPersistentWiFi - (संपादन लागू नहीं है, यह एक निजी एपीआई कोई कुछ बिंदु पर पाया हो रहा है यह एप्पल के डेवलपर दस्तावेज़ में नहीं है।।) यह सुनिश्चित करता है कि डिवाइस वाईफाई

यदि आपकी पसंद सही नहीं है तो उपयोगकर्ता को आपके आवेदन को शुरू करते समय उचित संदेश प्रस्तुत किया जाएगा। यह सब संदेश सबसे अच्छा ओएस से है और इस प्रकार स्थानीयकृत है।

यदि आपका एप्लिकेशन चलने के दौरान वेबसाइट से डेटा डाउनलोड नहीं कर सकता है (सिग्नल की कमी, साइट डाउन) तो आपको अभी भी उपयोगकर्ता को चेतावनी देना चाहिए और न केवल अनिश्चित काल तक स्पिन करना चाहिए।

+0

ग्रेट टिप, धन्यवाद! –

+0

उत्कृष्ट। धन्यवाद। – givp

+1

क्या आपको "एसबीयूएसएसनेटवर्क" के लिए एक मान असाइन करना है या बस इसे एक कुंजी के रूप में जोड़ना है? मुझे आईफोन एसडीके या ऐप्पल डेवलपर सपोर्ट साइट पर कोई दस्तावेज नहीं मिल रहा है :-( –

28

ऐप्पल डेवलपर कनेक्शन में नमूना अनुप्रयोग (Reachability) है जो नेटवर्क स्थिति निर्धारित करने के लिए सिस्टम कॉन्फ़िगरेशन फ्रेमवर्क का उपयोग करता है। यह आपको बताएगा कि आपके पास वाईफाई, ईडीजीई/3 जी या कोई इंटरनेट कनेक्शन नहीं है।

आप नेटवर्क स्थिति निर्धारित करने के लिए अपने आवेदन में इस कोड के भाग का उपयोग करेंगे, और यदि कोई कनेक्शन उपलब्ध नहीं है, तो UIAlertView जैसे इंटरफ़ेस संकेत प्रदान करें।

+0

ग्रेट। कोशिश करेंगे। धन्यवाद – givp

+2

मैंने यहां पहुंच योग्यता के बारे में एक नोट बनाया: http://stackoverflow.com/questions/181485/determining-when-an-edge-connection-comes-back-after-a-dropout-on-an-iphone –

+1

कोई है ऐप्पल रीचैबिलिटी नमूना का अच्छा पुनर्विक्रय यहां: http://blog.ddg.com/?p=24 यह एक तरह के ड्रॉप-इन होने के लिए डिज़ाइन किया गया है। उन्होंने इसके साथ कुछ ख्याल रखा है (ऐप्पल से अधिक रास्ता) और मैंने बिना किसी मुद्दे के अपने पहुंच योग्यता कार्यान्वयन का सफलतापूर्वक उपयोग किया है। ध्यान दें कि यदि आप ASIHTTP लाइब्रेरी का उपयोग करते हैं, तो उपर्युक्त Reachability पुनर्लेख उस के हिस्से के रूप में आता है। – occulus

4

चेतावनी शब्द: सावधान रहें SBUsesNetwork। मैं व्यक्तिगत रूप से जानना चाहूंगा कि एसबीयूएसनेटवर्क मूल रूप से कहां से आया था, क्योंकि ऐप्पल के दस्तावेज़ों में कहीं भी इसका उल्लेख नहीं किया गया है। जब मैं अपने ऐप के प्लेस्ट (एक बूलियन के रूप में) की कुंजी जोड़ता हूं और सत्य पर सेट करता हूं, तो यह मेरे ऐप के व्यवहार को प्रभावित नहीं करता है - मुझे हवाई जहाज मोड के बारे में कोई चेतावनी नहीं मिलती है, चाहे ऐप पूरी तरह से नया हो या फिर अग्रभूमि हो पिछले लॉन्च की पृष्ठभूमि थी।

मेरे ऐप में UIRequiresPersistentWifi सत्य पर सेट है, जो कि लोगों को दावा करता है कि एसबीयूएसनेटवर्क (अन्य चीजें!) का दावा करता है।

(मैं आईफोन 4, एक्सकोड 3.2.5 64 बिट पर आईओएस 4.2.1 चला रहा हूं)।

+0

आह परेशान करता है, यह दिलचस्प है: http://blogs.oreilly.com/iphone/2008/11/hunting-down-infoplist-prefere.html - उस व्यक्ति को एसबीयूएसनेटवर्क मिला इंजीनियरिंग सामग्री से सम्मानित करें। वह एसबीयूसेसनेट कुंजी वास्तव में एक निजी एपीआई चीज हो सकती है जो सार्वजनिक उपभोग के लिए नहीं है? – occulus

+0

आह, ठीक है, मुझे लगता है कि मैंने इसे अभी क्रैक कर दिया है। UIRequiresPersistentWifi * लोगों को एसबीयूएस नेटवर्क का दावा करता है - यानी हवाई जहाज मोड के बारे में चेतावनी देता है - लेकिन आपको यह समझना होगा कि आप हवाई जहाज मोड के एक सक्रियण के दौरान केवल एक आवेदन के लिए हवाई जहाज मोड चेतावनी प्राप्त करते हैं - भले ही आप सही ढंग से मार दें और एक ऐप को फिर से लॉन्च करें, अगर आपको पहले से ही हवाई जहाज मोड के बारे में चेतावनी दी गई थी (और अभी भी हवाई जहाज मोड में हैं), तो यह आपको फिर से चेतावनी नहीं देगा। तो संक्षेप में: एसबीयूसेसनेट एक लाल हेरिंग की तरह दिखता है, इसे अनदेखा करें। (अगर कोई मुझे एसबीयूएसएसनेटवर्क के लिए दस्तावेज़ों पर इंगित कर सकता है, तो कृपया करें।) – occulus

संबंधित मुद्दे