2016-11-28 2 views
5

私のアプリを通してSMSを送信する際、それはモバイルにのみ送信されるべきですが、2つの番号がある場合は連絡先の1つが固定電話で、 。私のアプリが固定電話番号にSMSを送信しないようにする方法

- (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を扱うGoogleの電話番号の美しいポートがあります。

固定電話、携帯電話、フリーダイヤル、プレミアム番号などを区別するのに役立ちます。 Cocoapodsを使用してこのライブラリをプロジェクトに追加し、READMEに従ってドキュメントを作成することができます。 https://github.com/iziz/libPhoneNumber-iOS
のGoogle libphonenumberライブラリ(Android用):https://github.com/googlei18n/libphonenumber

両者がほぼ同じ機能を搭載し、番号が有効か否かを検出する上で非常に正確である

はここのリンク(iOSのポート)です。固定電話のようなSMSを受信できない電話番号に遭遇したときはいつでも、時間とお金を節約できました。

しかし、コメントにも記載されているように、ほとんどの固定電話番号または固定電話番号はSMSを受信することができます。その場合、指定された番号でSMSを受信するかどうかをユーザーに問い合わせる必要があります。

ありがとう
Fennec
ハッピーコーディング!

関連する問題