2009-05-07 8 views
19

तो मैं इस पर फंस गया हूँ।क्या आईफोन एड्रेस बुक एपीआई से "मी" कार्ड प्राप्त करने का कोई तरीका है?

मैक ओएस एक्स में अंतर्निहित पता पुस्तिका API से "मी" कार्ड (मैक/खाता का मालिक) प्राप्त करने का एक आसान तरीका है।

क्या किसी को यह पता लगाने का कोई तरीका मिला है कि कौन सा संपर्क (यदि यह मौजूद है) आईफोन के मालिक से संबंधित है?

+1

जाहिरा तौर पर नहीं एक छोटे से घर्षण को कम कर, @wilshipley के अनुसार: http : //twitter.com/wilshipley/status/1369679612 –

+0

क्या आप मुझे बता सकते हैं कि मैक में मुझे कार्ड कैसे लगा सकता हूं? – Johnykutty

+0

@ जॉनीकिटी ऑन मैवरिक्स, अपना कार्ड चुनें, फिर ** कार्ड> यह मेरा कार्ड बनाएं ** मेनू आइटम का उपयोग करें। – bneely

उत्तर

7

आप गैर-दस्तावेजी उपयोगकर्ता डिफ़ॉल्ट इस्तेमाल कर सकते हैं:

[[NSUserDefaults standardUserDefaults] objectForKey:@"SBFormattedPhoneNumber"]; 

और फिर उस फोन नंबर के साथ कार्ड के लिए पता पुस्तिका खोज करते हैं।

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

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

इस प्रश्न का आम तौर पर स्वीकृत उत्तर इस सुविधा के लिए ऐप्पल के साथ रडार फाइल करना और उपयोगकर्ताओं को अपना कार्ड चुनने के लिए प्रेरित करना है।

+0

स्टोर करने के लिए स्टोर से ऐप्स को खारिज कर दिया गया है। वैसे भी यह भरोसेमंद नहीं है - अगर उपयोगकर्ता ने अपने फोन नंबर को किसी अन्य सेल फोन वाहक से पोर्ट किया है, तो यह कॉल लगभग निश्चित रूप से गलत परिणाम देता है। –

+0

सहायता के लिए धन्यवाद। इस प्रश्न को पोस्ट करने के बाद, हालांकि मैं एसबीफॉर्मेटेडफोन नम्बर दृष्टिकोण के बारे में हूं। इसे आसानी से "सुरक्षित" भविष्य के सबूत तरीके से कार्यान्वित किया जा सकता है, लेकिन ऐसा लगता है कि ऐप्पल कई कारणों से इसे निराश कर सकता है। इसके अलावा, टॉम, सिर के लिए धन्यवाद। – amattn

+0

यह अब कोई मान नहीं देता – Brian

4

आईफोन एसडीके 2.2.1 और इससे पहले कोई ऐसा एपीआई नहीं है। पर इसके लिए एक अनुरोध दर्ज करें: http://bugreport.apple.com

+0

क्या यह अभी भी 3.1 एसडीके में सच है? –

+0

हां, मुझे विश्वास है कि –

+0

4.2 में इस पर कोई सुधार? – adib

4

संपादित करें: [अप्रचलित जवाब]

वहाँ "मुझे" कार्ड हो रही है क्योंकि वहाँ कोई "मैं" कार्ड के लिए कोई एपीआई है। आईफोन के संपर्क ऐप में कार्ड को "मुझे" के रूप में चिह्नित करने का कोई तरीका नहीं है, और एपीआई इसे प्रतिबिंबित करता है।

+0

यह बिल्कुल सही नहीं है। निश्चित रूप से, संपर्क ऐप का ऐसा करने का कोई तरीका नहीं है, लेकिन आप सेटिंग "मेल, संपर्क, कैलेंडर> मेरी जानकारी में अपना" मुझे "कार्ड सेट कर सकते हैं। – LucasTizma

+0

@ लुकास टिज्मा: ऊपर दिए गए उत्तर को जवाब देने से लगभग तीन साल पहले लिखा गया था। यह उस वक्त सही था लेकिन निश्चित रूप से चीजें बदलती हैं। –

+0

आह, मैंने उस तारीख को भी नोटिस नहीं किया जिसकी आपने उत्तर दिया था। उसके लिए माफ़ करना! – LucasTizma

0

मैं इस

के लिए एक आंशिक समाधान के साथ आया के रूप में उदाहरण के लिए,

NSString *ownerName = [[UIDevice currentDevice] name]; 

अंग्रेजी में एक युक्ति है मूल रूप से कहा जाता है इस प्रकार आप डिवाइस का नाम प्राप्त कर सकते हैं, 'जो blogg के iPhone'

नाम बाहर तोड़

NSRange t = [ownerName rangeOfString:@"’s"]; 
    if (t.location != NSNotFound) { 
     ownerName = [ownerName substringToIndex:t.location]; 
    } 

आप तो उस नाम ले जा सकते हैं और संपर्कों को खोजें

CNContactStore * contactStore = [CNContactStore new];

NSPredicate *usersNamePredicate = [CNContact predicateForContactsMatchingName:usersName]; 

    NSArray * keysToFetch = @[[CNContactFormatter descriptorForRequiredKeysForStyle:CNContactFormatterStyleFullName],CNContactPhoneNumbersKey,CNContactEmailAddressesKey,CNContactSocialProfilesKey, ]; 

NSArray * matchingContacts = [contactStore unifiedContactsMatchingPredicate:usersNamePredicate keysToFetch:keysToFetch error:nil]; 

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

देता है

अच्छी तरह से ... यह आपको मिलान करने वाली वस्तुओं की एक सरणी देता है :) इसलिए यदि उस सरणी के साथ एक से अधिक संपर्क हैं तो आपको केवल पॉट किस्मत का उपयोग करना होगा और पहले कार्ड के साथ जाना होगा या एकाधिक कार्ड के माध्यम से काम करना होगा और आपको जो चाहिए हर एक से।

मैं अपने एक आंशिक समाधान कहा और फिर भी यह सब उपयोगकर्ता के मामलों के लिए काम नहीं करेगा आपको पता चल सकता है कि यह अपने उपयोगकर्ताओं के कई के लिए काम करता है और

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