2016-11-28 3 views
5

मेरे ऐप के माध्यम से एसएमएस भेजते समय, इसे केवल मोबाइल पर भेजना चाहिए, लेकिन कुछ संपर्कों के लिए जब दो नंबर हैं तो लैंडलाइन है और दूसरा मोबाइल है यह लैंडलाइन पर भी भेजता है ।मेरे ऐप को लैंडलाइन नंबरों पर एसएमएस भेजने से कैसे रोकें

- (NSMutableArray*)getContactsWithAddressBook:(ABAddressBookRef)addressBook { 

contactList = [[NSMutableArray alloc] init]; 
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook); 
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook); 
for (int i=0;i < nPeople;i++) { 
    NSMutableDictionary *dOfPerson=[NSMutableDictionary dictionary]; 
    ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i); 

    //For username and surname 
    ABMultiValueRef phones =(__bridge ABMultiValueRef)((__bridge NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty)); 
    CFStringRef firstName, lastName; 
    firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty); 
    lastName = ABRecordCopyValue(ref, kABPersonLastNameProperty); 
    [dOfPerson setObject:[NSString stringWithFormat:@"%@ %@", firstName, lastName] forKey:@"name"]; 

    //For Email ids 
    ABMutableMultiValueRef eMail = ABRecordCopyValue(ref, kABPersonEmailProperty); 
    if(ABMultiValueGetCount(eMail) > 0) { 
     [dOfPerson setObject:(__bridge NSString *)ABMultiValueCopyValueAtIndex(eMail, 0) forKey:@"email"]; 
    } 

    NSLog(@"ABMultiValueGetCount(phones)=%ld",ABMultiValueGetCount(phones)); 
    //For Phone number 
    NSString* mobileLabel; 
    for(CFIndex i = 0; i < ABMultiValueGetCount(phones); i++) { 
     mobileLabel = (__bridge NSString*)ABMultiValueCopyLabelAtIndex(phones, i); 
     if([mobileLabel isEqualToString:(NSString *)kABPersonPhoneMobileLabel]) 
     { 
      [dOfPerson setObject:(__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, i) forKey:@"Phone"]; 

     } 
     else if ([mobileLabel isEqualToString:(NSString*)kABPersonPhoneIPhoneLabel]) 
     { 
      [dOfPerson setObject:(__bridge NSString*)ABMultiValueCopyValueAtIndex(phones, i) forKey:@"Phone"]; 
      break ; 
     } 
    } 
    [contactList addObject:dOfPerson]; 
} 
return contactList; 

}

+2

लैंडलाइन संदेश के रूप में संदेश प्राप्त कर सकते हैं, आपको भी हर देश के लिए मोबाइल नंबर चेक लागू करने की आवश्यकता होगी। ऐसा करने का कोई आसान तरीका नहीं है, इस प्रकार मैं सुझाव देता हूं कि आप ऐसा न करें। – rckoenes

+0

एक देश या दुनिया भर में? –

उत्तर

3

iOS के लिए पुस्तकालय libPhoneNumber निपटने गूगल के फोन नंबर की एक खूबसूरत बंदरगाह है।

यह आपको निश्चित लाइन, मोबाइल फोन, टोल-फ्री, प्रीमियम नंबर और बहुत कुछ के बीच अंतर करने में मदद कर सकता है। आप कोकोपोड्स का उपयोग करके इस प्रोजेक्ट को अपनी प्रोजेक्ट में जोड़ सकते हैं और प्रलेखन के लिए रीडमे का पालन कर सकते हैं। https://github.com/iziz/libPhoneNumber-iOS
गूगल libphonenumber पुस्तकालय (Android के लिए): https://github.com/googlei18n/libphonenumber

उन दोनों लगभग एक ही कार्यक्षमता ले जाती हैं और पता लगाने नंबर मान्य है या नहीं में बहुत ही सटीक हैं

यहाँ लिंक (आईओएस पोर्ट) है। जब भी हमें लैंडलाइन की तरह एसएमएस प्राप्त करने में असमर्थ फ़ोन नंबर का सामना करना पड़ा तो उसने हमें बहुत समय और पैसा बचाया।

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

धन्यवाद
फेनेक
हैप्पी कोडिंग!

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