11

मैं जानना चाहता हूं कि क्रॉस-प्लेटफ़ॉर्म तरीके में एप्लिकेशन सेटिंग्स में हेरफेर करने का सबसे अच्छा समाधान क्या है।एक्समरिन फॉर्म साझा संदर्भ क्रॉस

आईओएस में हम सेटिंग स्क्रीन में ऐप के बाहर सेटिंग्स बदल सकते हैं, लेकिन हमारे पास विंडोज फोन और एंड्रॉइड में नहीं है।

तो, मेरा विचार ऐप के अंदर एक सामान्य पृष्ठ/स्क्रीन बनाना है जो मेरी सभी एप्लिकेशन सेटिंग्स दिखाता है और Save() और Get() विधियों के साथ एक इंटरफ़ेस है जिसे मैं निर्भरता सेवा का उपयोग करके प्रति डिवाइस विशिष्ट लागू कर सकता हूं।

क्या यह करने का यह सही तरीका है?

उत्तर

16
  1. एप्लिकेशन उपclass में एक स्थिर गुण शब्दकोश है जिसका उपयोग डेटा स्टोर करने के लिए किया जा सकता है। यह आपके Xamarin.Forms कोड में कहीं से भी पहुंचा जा सकता है Application.Current.Properties का उपयोग कर कोड।
Application.Current.Properties ["id"] = someClass.ID; 

if (Application.Current.Properties.ContainsKey("id")) 
{ 
    var id = Application.Current.Properties ["id"] as int; 
    // do something with id 
} 

गुण शब्दकोश स्वचालित रूप से डिवाइस के लिए सहेजा जाता है। शब्दकोश में जोड़ा गया डेटा तब उपलब्ध होगा जब एप्लिकेशन पृष्ठभूमि से वापस लौटाएगा या फिर इसे पुनरारंभ करने के बाद भी उपलब्ध होगा। Xamarin.Forms 1.4 ने एप्लिकेशन क्लास - SavePropertiesAsync() पर एक अतिरिक्त विधि पेश की - जिसे प्रॉपर्टी डिक्शनरी को सक्रिय रूप से जारी रखने के लिए कहा जा सकता है। यह आपको किसी भी दुर्घटना या ओएस द्वारा मारने के कारण धारावाहिक नहीं होने के जोखिम के बजाय महत्वपूर्ण अपडेट के बाद गुणों को सहेजने की अनुमति देता है।

https://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/app-lifecycle/

    कौन से स्थानीय सेटिंग्स प्रबंधन का उपयोग करता
  1. Xamarin.Forms प्लगइन।

    • एंड्रॉयड: SharedPreferences
    • iOS: NSUserDefaults
    • विंडोज फोन: IsolatedStorageSettings
    • Windows स्टोर/विंडोज फोन आरटी: ApplicationDataContainer

https://github.com/jamesmontemagno/Xamarin.Plugins/tree/master/Settings

+0

मदद के लिए धन्यवाद। बस एक चीज, और यदि मैं आईओएस में ऐप के बाहर सेटिंग्स और अन्य में ऐप में प्लेटफार्म करना चाहता हूं? तो मुझे सही करने से पहले जो मैंने कहा वह करने की ज़रूरत है?क्योंकि अधिक विशिष्ट है, इसलिए यदि मैं डिवाइस.ओएस! = आईओएस – user1845593

+1

हां, तो आपको ऐप में सेटिंग्स स्क्रीन इंजेक्ट या नहीं कर सकती है, आपको डिवाइस.ओएस की जांच करने और सेटिंग पृष्ठ को सक्षम/अक्षम करने की आवश्यकता है। ऐप (सेटिंग्स मेनू) के बाहर सेटिंग्स रखने के लिए आपको दूसरे, मूल दृष्टिकोण का उपयोग करना होगा और सेटिंग्स को जोड़ना न भूलें। बंडल (http://useyourloaf.com/blog/adding-a-settings-bundle-to- an-iphone-app.html) –

+1

स्ट्रिंग, int, या किसी अन्य साधारण डेटा संरचना जैसी सेटिंग्स के लिए मैं वास्तव में मेरी सेटिंग्स प्लगइन की अनुशंसा करता हूं। मैं अपने सभी अनुप्रयोगों में 4 से अधिक वर्षों से इसका उपयोग कर रहा हूं और यह देशी प्रबंधन प्रणाली को बचाता है जैसे डैनियल ने कहा। इसके अतिरिक्त, यह Xamarin.Forms या परंपराओं के साथ निर्मित हर प्रकार के ऐप के लिए काम करता है। मैंने आज सुबह इसके बारे में एक लाइव रिकॉर्डिंग की है: https://www.youtube.com/watch?v=VNPLxeq9ZII&feature=youtu.be – JamesMontemagno

0

मैं टी आवेदन का उपयोग कर ried.Current.Properties शब्दकोश और कार्यान्वयन की समस्या थी।

एक समाधान जो बहुत कम प्रयास के साथ काम करता था वह जेम्स मॉन्टमेग्नो का एक्सम था। प्लगइन। सेटिंग्स NuGet। GitHub NuGet को स्वचालित रूप से इंस्टॉल करना सेटिंग.cs के साथ एक हेल्पर्स फ़ोल्डर बनाता है। आपको बस इतना की स्थापना एक कायम बनाने के लिए:

private const string QuestionTableSizeKey = "QuestionTableSizeKey"; 
    private static readonly long QuestionTableSizeDefault = 0; 

और

public static long QuestionTableSize 
    { 
     get 
     { 
      return AppSettings.GetValueOrDefault<long>(QuestionTableSizeKey, QuestionTableSizeDefault); 
     } 
     set 
     { 
      AppSettings.AddOrUpdateValue<long>(QuestionTableSizeKey, value); 
     } 
    } 

प्रवेश और अनुप्रयोग में की स्थापना तो की तरह दिखता है:

namespace XXX 
{ 
    class XXX 
    { 
     public XXX() 
     { 
       long myLong = 495; 
       ... 
       Helpers.Settings.QuestionTableSize = myLong; 
       ... 
       long oldsz = Helpers.Settings.QuestionTableSize;     
     } 
    } 

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