2013-02-19 31 views
7

मैंने देखा कि यदि मैं अपना डिवाइस समय मैन्युअल रूप से सेट करता हूं, और अपने आईओएस डिवाइस पर स्वचालित समय सिंक बंद करता हूं, तो [NSDate date] डिवाइस का समय सही मानने की तारीख और समय देता है - जो यह नहीं हो सकता है।डिवाइस दिनांक और समय गलत होने पर मुझे वास्तविक दिनांक और समय कैसे मिल सकता है?

दस्तावेज़ों का उल्लेख है कि NSDate में एनटीपी के साथ कुछ प्रकार की सिंक है, तो मुझे आश्चर्य है कि डिवाइस की तारीख और समय मानने के बजाय सटीक दिनांक और समय प्राप्त करने के लिए कोई अंतर्निहित तरीका है या नहीं।

+0

मुझे लगता है कि एक मूल्यवान जांच यह सुनिश्चित करने के लिए है कि फ़ोन का समय मूल्य आपके ऐप (या कुछ ऐसे) को भेजे जाने की तारीख से अधिक है, ताकि आप उस मामले को खत्म कर सकें जहां दिनांक 1 जनवरी को रीसेट हो गया है, 1 9 70 या जो भी हो। उस मामले में एक संदेश फेंक दो "अपनी घड़ी सेट करें, आप मूर्ख!" (या उस प्रभाव के लिए शब्द।) –

+0

@ हॉटलिक्स यह सुनिश्चित नहीं करेगा कि समय सही है क्योंकि ओपी पूछ रहा है। – twaldron

+0

सच है, लेकिन यह पकड़ता है, विशेष रूप से, घड़ी के साथ बहुत सारे आईपैड टच पूरी तरह से गलत सेट करते हैं। –

उत्तर

3

शायद https://github.com/jbenet/ios-ntp आपकी मदद कर सकता है? यह एक पुस्तकालय है जो समय सर्वर से दिनांक और समय ला सकता है।

+0

ऐसा लगता है कि यह उपलब्ध विकल्पों में से, यह करने का सबसे आसान तरीका है। – Anton

+0

इस मुद्दे को हल करने के लिए अन्य विकल्प क्या हो सकते हैं? – AppsDev

0

मैंने आईओएस-एनटीपी की कोशिश की लेकिन मुझे अपेक्षित नतीजे नहीं मिले, इसलिए मुझे एक और लाइब्रेरी मिली जो ठीक काम कर रही है और इसे लागू करने में वास्तव में आसान है।

NHNetworkTime

फलियाँ:

pod 'NHNetworkTime' 
pod 'CocoaAsyncSocket' 

आयात का उपयोग करने के लिए सरल यह आप समय प्राप्त करना चाहते हैं जब भी:

#import "NHNetworkTime.h" 

कॉल में सिंक्रनाइज़ - आवेदन: didFinishLaunchingWithOptions: समय अद्यतन करने के लिए जब आप ऐप लॉन्च करते हैं तो सर्वर:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    [[NHNetworkClock sharedNetworkClock] synchronize]; 
    return YES; 
} 

तो आप अपने स्रोत कोड में नेटवर्क समय कहीं भी में जब समन्वयन पूर्ण प्राप्त कर सकते हैं:

NSDate *networkDate = [NSDate networkDate]; 

या सूचना पुनः अद्यतन करने के लिए कहीं भी आप जब समय अद्यतन किया जाता है चाहता हूँ में अपने यूआई जोड़ें:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkTimeSyncCompleteNotification:) name:kNHNetworkTimeSyncCompleteNotification object:nil]; 

चीयर्स !!! :)

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

  • कोई संबंधित समस्या नहीं^_^