2011-05-19 12 views
10

संपादित 23.5.11नेटवर्क परिवर्तन

पर iPhone गम्यता अपडेट कर रहा है अब मैं सोच रहा हूँ मैं इंजीनियरिंग इस पर कर रहा हूँ या नहीं। जब मैं एक ऑनलाइन कनेक्शन का उपयोग, मैं इसे ठीक से संभाल - या तो:

  • एक प्रगति या गतिविधि सूचक दिखा और अगर यह विफल रहता है, मैं एक उपयुक्त संदेश या

  • मैं एक और फोन को प्रदर्शित साथ पृष्ठभूमि में आवेदन, या तो सफारी या मैप्स जो तब स्वयं की जांच करेंगे और यदि कोई कनेक्शन नहीं है तो असफल हो जाएंगे। यह उपयोगकर्ता को उस अन्य ऐप में छोड़ देता है जो असफल रहा है, जो बिल्कुल सही नहीं है।

तो अगर मैं मैं नीचे क्या सुझाव दे रहा हूँ और मानक गम्यता पहुंच योग्य नहीं लौट आते हैं और मैं तो, एक NSURLConnection मामले में रेडियो सोने के लिए चले गए हैं क्या करना है तो मुझे यकीन है कि किसी भी की तुलना में बेहतर है नहीं कर रहा हूँ कर बस ऑनलाइन संसाधन प्राप्त करने की कोशिश कर रहा है।

यदि कोई मदद कर सकता है - तो मैं वास्तव में आभारी रहूंगा। मैं जमा करने के लिए लगभग तैयार हूं, बस यह अधिकार प्राप्त करने की आवश्यकता है।

मैं आम तौर पर अच्छे प्रभाव के लिए ऐप्पल के रीचैबिलिटी नमूना का उपयोग कर रहा हूं, जब मोबाइल या सेलुलर कनेक्शन सो जाता है और फिर वापस आता है या वाईफ़ाई जाता है और सेलुलर कनेक्शन पर निर्भर करता है।

यह ठीक है जब मोबाइल (सेलुलर) कनेक्शन नहीं बदल रहा है। यह उन टिप्पणियों के अनुरूप है जो मैंने पढ़ा है, कि जब सेलुलर रेडियो बंद हो जाता है तो आपको इसे मैन्युअल रूप से फिर से उठाना होगा। हालांकि, मैं नहीं देख सकता कि यह कैसे करें।

क्या मुझे NSURLConnection सेटअप करने की आवश्यकता है? कुछ नमूना कोड बहुत अच्छा होगा। जब मुझे कोई अधिसूचना मिलती है कि कोई कनेक्शन नहीं है, तो क्या मैं NSURLConnection भेजूंगा और उपयोगकर्ता को एक पल में फिर से प्रयास करने के लिए कहूंगा और फिर यदि मुझे कॉलबैक मिल जाए तो यह सफल हो जाए, तो पहुंच सेटिंग से ऑफ सेटिंग को ओवरराइड करें?

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

मैंने DDG के विकल्प को भी देखा है, लेकिन ऐसा लगता है कि यह एक ही समस्या होगी।

किसी भी उपयोगी सुझाव का गर्मजोशी से स्वागत किया जाएगा।

धन्यवाद,

क्रिस।

उत्तर

13

आप यह निर्धारित करने के लिए कि कोई नेटवर्क संसाधन उपलब्ध है या नहीं, आप Apple के Reachabilty नमूना कोड (या SCNetworkReachabilityFlags) का उपयोग नहीं कर सकते हैं और नहीं करना चाहिए। वे कनेक्शन को विफल क्यों करते हैं और यह निर्धारित करने के लिए कि कनेक्शन कब और कब करना है, इस बारे में उपयोगकर्ता प्रतिक्रिया देने के लिए वे आपको उपयोगी टूल देते हैं। हालांकि यदि आप किसी नेटवर्क संसाधन तक पहुंचना चाहते हैं तो आपको केवल इसके लिए पूछना चाहिए।

पहुंचने योग्य झंडे के आधार पर अपने उपयोगकर्ताओं को "नेटवर्क कनेक्शन" अलर्ट के साथ प्रस्तुत न करें। अपना नेटवर्क अनुरोध करें और यदि यह विफल रहता है तो पहुंचने योग्य झंडे और अनुरोधों के अपने इतिहास की जांच करने के लिए यह जांचने के लिए कि क्या आपको अपने उपयोगकर्ता को यह बताना चाहिए कि अनुरोध विफल रहा है या चुपचाप पुनः प्रयास करें। आपको हर नेटवर्क विफलता के साथ उपयोगकर्ता को स्पैम नहीं करना चाहिए या नहीं चाहिए।एक अनुरोध पुन: प्रयास इस बात पर विचार विफल रहता होस्ट पहुंच हो रहा है और केवल प्रयास के एक जोड़े को या उसके बाद उपयोगकर्ता के लिए एक विफलता रिपोर्ट यदि तो गम्यता झंडे का सुझाव जब कि आप वास्तव में अपने नेटवर्क कनेक्शन खो दिया है और नहीं बस एक ही अनुरोध विफल किया था।

डिवाइस के रेडियो को पुन: सक्रिय आप बिजली बचाने के नेटवर्क इंटरफेस नीचे बिजली उपकरण की इजाजत दी के साथ नेटवर्क संसाधनों को लाने के लिए प्रयास करने के अपनी इच्छा में संतुलन रखना होगा का सवाल है। मुझे नहीं पता कि आपका ऐप क्या करने का प्रयास कर रहा है, लेकिन मैं डिवाइस को पावर करने की अनुमति देने की सलाह दूंगा और उसके बाद ऐप से नए डेटा लाने के लिए पूछने वाले उपयोगकर्ता के जवाब में कनेक्ट करने का प्रयास करूँगा। मुझे ऐसा कोई मामला दिखाई नहीं देता है जहां आप एक रेडियो को फिर से सक्रिय करना चाहते हैं ताकि उपयोगकर्ता को यह संकेत मिले कि कुछ नेटवर्क संसाधन वर्तमान में पहुंच योग्य हो सकते हैं या नहीं।

https://devforums.apple.com/message/409618

एक ही रास्ता देखें जानना आवश्यक है कि एक मेजबान उपलब्ध है इसे करने के लिए कनेक्ट करने का प्रयास करने के लिए है। यदि वह कनेक्शन विफल रहता है, तो आप उपयोगकर्ता को फीडबैक प्रदान करने के लिए पहुंच क्षमता का उपयोग कर सकते हैं, और अपने पुनः प्रयास तंत्र को मार्गदर्शन करने के लिए, लेकिन कनेक्शन को प्रीफ्लोइट करने के लिए पहुंच का उपयोग करना एक अच्छा विचार नहीं है।

यहां प्रमुख मुद्दा है कि गम्यता स्थानीय जानकारी का उपयोग करता है अपने परिणाम निर्धारित करने के लिए है। यह व्यापक इंटरनेट की स्थिति के बारे में कुछ भी नहीं कहता है। मूल सर्वर डाउन हो सकता है, या आपके और मूल सर्वर के बीच के किसी भी लिंक के नीचे हो सकता है, और पहुंच योग्यता खुशी से कहती है कि यह पहुंच योग्य है। उस समय आप कनेक्ट करने का प्रयास करने जा रहे हैं, और कनेक्शन असफल हो जाएगा। तो आपको वैसे भी त्रुटि को संभालना होगा, जिसका अर्थ है कि आप प्रीफलाइट भी नहीं कर सकते हैं और इस मामले को भी अपने मानक त्रुटि को संभालने दें। https://devforums.apple.com/message/411329

संसाधन के लिए एक HEAD अनुरोध बनाना आप एक उचित पता चलना चाहिए कि अगर बाहरी एप्लिकेशन हो जाएगा:

इसके अलावा एक बाहरी अनुप्रयोग का उपयोग कर इसे लोड करने से पहले एक संसाधन के लिए जाँच के बारे में इस सवाल पर एक नज़र डेटा की एक महत्वपूर्ण मात्रा डाउनलोड करने के बिना इसे लोड करने में सक्षम (हालांकि विलंबता अभी भी चिंता का विषय होगी)।

+1

वाह जोनाह - अच्छा, स्पष्ट और विस्तृत प्रतिक्रिया। क्या आप कहीं सिखाते हैं? –

+0

हालांकि "पहुंच योग्यता स्थिति" में परिवर्तन होने पर आप रीचैबिलिटी कोड को अधिसूचित करने के लिए उपयोग कर सकते हैं। –

+0

धन्यवाद @ जोनाह - यह एक महान, निश्चित प्रतिक्रिया है। मुझे लगता है कि आपकी स्पष्टता बहुत से लोगों की मदद करेगी, जैसा कि आपके द्वारा जवाब देने से पहले हमारे द्वारा किए गए वोटों द्वारा देखा जा सकता है। मैं अब अपनी प्रक्रिया को सरल बनाने जा रहा हूं। एक बार फिर धन्यवाद। – Chris

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