1.获取手机通讯录的状态
ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();
拒绝(kABAuthorizationStatusDenied)
授权(kABAuthorizationStatusAuthorized)
未决定是否授权(kABAuthorizationStatusNotDetermined)
受限制(kABAuthorizationStatusRestricted)
2.如果未授权,创建通讯录\请求授权
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
if (granted) {
NSLog(@"授权成功");
_isContactsAuthorize = YES;
[weakSelf getContactsPhonesWith:addressBook];
}
if (error) {
NSLog(@"授权出错");
}
});
4.获取通讯录好友
- (void)getContactsPhonesWith:(ABAddressBookRef)addressBook {
CFArrayRef persons = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex personsCount = CFArrayGetCount(persons);
for (int i = 0; i < personsCount; i ++) {
// 获取每一个联系人
ABRecordRef person = CFArrayGetValueAtIndex(persons, i);
// 获取姓名
NSString *firstName = CFBridgingRelease(ABRecordCopyValue(person, kABPersonFirstNameProperty));
NSString *lastName = CFBridgingRelease(ABRecordCopyValue(person, kABPersonLastNameProperty));
// 获取电话
ABMultiValueRef phones = ABRecordCopyValue(person, kABPersonPhoneProperty);
CFIndex index = ABMultiValueGetCount(phones);
for (int i =0 ; i < index; i ++) {
NSString *telPhone = CFBridgingRelease(ABMultiValueCopyValueAtIndex(phones, i));
}
CFRelease(phones);
}
CFRelease(persons);
}
4.其他
4.1拼接通讯录用户名
- (NSString *)spliceNameWithFirst:(NSString *)firstName andLastName:(NSString *)lastName {
if (firstName != nil && lastName != nil) {
return [lastName stringByAppendingString:firstName];
} else if (firstName == nil && lastName != nil) {
return lastName;
} else if (firstName != nil && lastName == nil) {
return firstName;
}
return @"匿名用户";
}
4.2通讯录电话check
- (BOOL)phoneNumCheck:(NSString *)phoneNum {
if (phoneNum.length < 11) {
return NO;
}
// 去掉空格
phoneNum = [phoneNum stringByReplacingOccurrencesOfString:@" " withString:@""];
phoneNum = [phoneNum stringByReplacingOccurrencesOfString:@"-" withString:@""];
phoneNum = [phoneNum stringByReplacingOccurrencesOfString:@"(" withString:@""];
phoneNum = [phoneNum stringByReplacingOccurrencesOfString:@")" withString:@""];
phoneNum = [phoneNum stringByReplacingOccurrencesOfString:@"+" withString:@""];
// phoneNum = [phoneNum stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSRange range = NSMakeRange(phoneNum.length - 11, 11);
NSString *phone = [phoneNum substringWithRange:range];
if (![self isMobileNumber:phone]) {
return NO;
}
_phone = phone;
return YES;
}
4.3正则判断手机号码地址格式
- (BOOL)isMobileNumber:(NSString *)mobileNum
{
/**
* 手机号码
* 移动:134[0-8],135,136,137,138,139,147,150,151,152,157,158,159,178,182,183,184,187,188
* 联通:130,131,132,155,156,185,186,145,176,185
* 电信:133,153,180,181,189,177
*/
NSString * MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|7[6-8]|8[0-9])\\d{8}$";
NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];
if ([regextestmobile evaluateWithObject:mobileNum] == YES) {
return YES;
} else {
return NO;
}
}