获取手机通讯录

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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值