2017-01-27 11 views
6

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

मुझे पता है कि आईफोन और आईपैड उपकरणों के लिए अलग-अलग सेटिंग्स रखना संभव है (जैसा कि वर्णन किया गया है this thread में), लेकिन यह वह नहीं है जो मैं बाद में हूं। मैं size-class-specific layouts से भी परिचित हूं, लेकिन यह सेटिंग्स पर लागू प्रतीत नहीं होता है।

क्या डिवाइस के आयामों के आधार पर कुछ सेटिंग्स को छिपाना संभव है (या कम से कम अक्षम करें) जिस पर ऐप चल रहा है?

समान लाइनों के साथ, क्या प्रदर्शन आयामों के अनुसार सेटिंग के लिए डिफ़ॉल्ट मान अलग-अलग हो सकते हैं?

+0

अच्छी तरह से एक सरणी के भीतर संग्रहीत कस्टम मॉडल में सेटिंग्स के बारे में और डिवाइस के लिए उचित सेटिंग्स के साथ सरणी को प्रारंभ करने के बारे में कैसे? आप वास्तव में क्या ढूंढ रहे हैं ? – Lefteris

+0

@Lefteris - यह नहीं है कि सेटिंग्स आईओएस में कैसे काम करती हैं। सेटिंग विकल्प को 'सेटिंग्स.बंडल' फ़ाइल में परिभाषित किया गया है जो डिवाइस के सेटिंग ऐप द्वारा पढ़ा जाता है। ऐप्स को एक बार भी चलाने से पहले सेटिंग प्रदर्शित की जा सकती हैं। भले ही ऐप को पहले चलाने की गारंटी दी गई हो, मुझे एपीआई नहीं मिली है जो ऐप को प्रोग्रामेटिक रूप से प्रभावित करने की अनुमति देता है कि उपयोगकर्ता को कौन सी सेटिंग्स प्रदर्शित की जाती हैं। –

+0

मुझे समझ में नहीं आया कि आप सिस्टम सेटिंग्स का मतलब है। AFAIK आप जो भी चाहते हैं वह नहीं कर सकते हैं। [मैं यहां देखने का सुझाव दूंगा] (http://stackoverflow.com/a/1211627/312312) वैकल्पिक – Lefteris

उत्तर

2

क्षमा करें, लेकिन यह असंभव है। आप सही हैं कि आप जो कुछ भी कर सकते हैं वह अलग-अलग सेटिंग्स हो। आईपैड और आईफ़ोन के लिए बंडल करें। चूंकि आईओएस 4 सेटिंग्स प्लिस्ट डिवाइस-निर्भर हो सकते हैं: रूट ~ ipad.plist आईपैड और रूट ~ iphone.plist पर आईफोन पर इस्तेमाल किया जाएगा। यदि अस्तित्व में नहीं है, तो रूट.प्लिस्ट का उपयोग किया जाएगा।

तो मेरे दृष्टिकोण से आप दायर इस 2 सेटिंग्स का उपयोग करके अपने लक्ष्य का हिस्सा प्राप्त कर सकते हैं। ऐप लॉन्च होने पर अधिक विशिष्ट मामलों के लिए आप कुछ डिफ़ॉल्ट मान सेट कर सकते हैं। सेटिंग्स.बंडल को सीधे कोड से संशोधित नहीं किया जा सकता है, इसलिए आप विशिष्ट सेटिंग को हटा या अक्षम नहीं कर सकते हैं लेकिन आप इसे विशिष्ट डिवाइस पर कुछ डिफ़ॉल्ट मान में मान बदल सकते हैं। सेटिंग्स.बंडल में प्रत्येक आइटम NSUserDefaults में कुंजी के साथ जोड़ा जाता है ताकि आप NSUserDefaults में मान सेट कर सकें और सेटिंग्स एप्लिकेशन स्वचालित रूप से इसे प्रतिबिंबित कर देगा। हालांकि, यह कहीं और बचाया जाएगा। आप बस इसे उसी तरह पढ़ सकते हैं जैसे आप सेटिंग बंडल के साथ करेंगे, NSUserDefaults के माध्यम से भी।

आप इस सवाल का जवाब https://stackoverflow.com/a/32648047/5285151

एक और दिलचस्प विकल्प https://github.com/futuretap/InAppSettingsKit जो ऐप्लिकेशन में देशी सेटिंग्स इंटरफेस के साथ एक ही जोड़ने का उपयोग करने के लिए है में कोड उदाहरण मिल सकते हैं। और यह आंतरिक सेटिंग्स डिवाइस सेटिंग्स के साथ सिंक की गई है लेकिन आपके पास अधिक नियंत्रण है।

+0

InAppSettingsKit बहुत ही आशाजनक प्रतीत होता है, इसलिए इसके लिए +1। कोड में डिफ़ॉल्ट मान सेट करने के सुझाव, हालांकि, मैं जो कुछ भी ढूंढ रहा हूं वह नहीं करता है: कि छोटे उपकरणों पर चलते समय, उपयोगकर्ता उन सेटिंग्स को भी नहीं देखता जो केवल बड़े उपकरणों के लिए समझ में आता है। (मेरे विशेष ऐप में, यह आवश्यकता आईपैड से iPhones को विभाजित करने के बजाय आईफोन आबादी को दो में विभाजित करती है।) इसके अलावा, चूंकि उपयोगकर्ता मेरे ऐप को चलाने से पहले सिस्टम के सेटिंग्स ऐप चला सकता है, यह चाल मूर्खतापूर्ण से बहुत दूर है। यह सब बहुत निराशाजनक है; एंड्रॉइड डिवाइस विखंडन से निपटने का एक बेहतर काम करता है। –

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

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