2012-09-17 23 views
9

मेरे ऐप को हमारे सर्वर पर उपयोगकर्ता के संपर्कों को स्टोर करने की आवश्यकता है (उपयोगकर्ता की पाठ्यक्रम की अनुमति दी गई है।) इसकी आवश्यकता है डिवाइस में डिवाइस एड्रेस बुक (एड/एडिट/डिलीट) पर किसी भी बदलाव को प्रतिबिंबित करना।आईओएस पता पुस्तिका - कैसे पता चलेगा कि कौन सा संपर्क जोड़ा गया/संपादित/हटाया गया था?

क्या यह निर्धारित करने के संबंध में कोई आसान तरीका/सर्वोत्तम अभ्यास है कि किसी एप्लिकेशन को फिर से लॉन्च करने से पहले कौन सी पता पुस्तिका संपर्क बदल दिए गए थे?

सभी मैं देख सकता हूं कि पता पुस्तिका में बदलाव के आवेदन को सूचित करने के लिए कॉलबैक विधियां हैं, लेकिन ऐसा लगता है कि कौन से संपर्क जोड़े, संपादित या हटाए गए थे, यह निर्धारित करने के लिए कोई दस्तावेज नहीं है।

मैं अभी क्या सोच रहा हूं कि डिवाइस पर संग्रहीत किए गए संपर्कों की नई सूची मैन्युअल रूप से तुलना करना है, फिर एप्लिकेशन और परिवर्तनों के सर्वर दोनों को अद्यतन करें। लेकिन मुझे लगता है कि यदि उपयोगकर्ता की बड़ी संख्या में संपर्क हैं तो यह बहुत अधिक हो सकता है।

धन्यवाद!

+0

मुझे लगता है कि यह [Stackoverflow जवाब] (http://stackoverflow.com/questions/12348916/addressbook-synchronization-in-ios) आप के लिए उपयोगी हो सकता है। –

उत्तर

1

libsqlite3.dylib का उपयोग करने और एक SQL डेटाबेस बनाने के लिए देखें जो आवश्यक सभी गुणों के लिए उत्पन्न फ्लैट फ़ाइलों तक पहुंच जाएगा और फिर समय-समय पर आपके डेटाबेस की तुलना में आपके डेटाबेस की तुलना करें। सुनिश्चित करें कि दोनों डेटाबेस केवल उन कठोर आवश्यकताओं को प्राप्त करते हैं जिन्हें आपको अबाड्रेसबुक फ्रेमवर्क से आवश्यकता होगी।

http://linuxsleuthing.blogspot.com/2012/10/addressing-ios6-address-book-and-sqlite.html

+1

यह हर बार संपर्कों को फिर से शुरू करने का आदर्श तरीका नहीं है .. 'ABAddressBookRegisterExternalChangeCallback ' – Mrug

2

आप के लिए है: यहाँ संपर्क के बहु-मूल्य की संपत्तियों के लिए ABAddressbook साथ ऐसा करने पर

http://www.techotopia.com/index.php/An_Example_SQLite_based_iOS_7_Application

& विवरण:

sqlite3 पुस्तकालय के साथ नमूना आईओएस परियोजना यहाँ है ABAddressBookRegisterExternalChangeCallback के साथ अपनी कक्षा को ABAddressBookRef और कॉलबैक पास करने के साथ पंजीकृत करें ("addressBookDidChang ई "मेरे उदाहरण में)

ABAddressBookRef addressBook = //... 

ABAddressBookRegisterExternalChangeCallback(addressBook, addressBookDidChange(__bridge_retained void *)self); 

void addressBookDidChange(ABAddressBookRef addressBook, CFDictionaryRef info, void *context) 
{ 
    //Something changed from last application launch, insert your logic here... 

    //If you want to handle it in a "Objective-C" method you can do something like: 
    [((__bridge ABManager*) context) yourObjectiveCMethod]; 

} 
+2

का उपयोग करना बेहतर है यह बताता है कि पता पुस्तिका के साथ कुछ हुआ है अभी भी जवाब नहीं देता - कौन सा संपर्क जोड़ा गया/संपादित/हटाया गया था? –

+1

@ वेनुगोपाल तिवारी आप अपने संपर्कों को पहले से सहेज सकते हैं और फिर कॉलबैक एड्रेस में निकाले गए संपर्कों की तुलना कर सकते हैं .BookDidChange – andreacipriani

+0

क्या आप कुछ अच्छे तर्क या कुछ उदाहरण या किसी नमूना कोड का सुझाव दे सकते हैं। – Ayaz

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