iOS开发之如何访问通讯录

来源:互联网 发布:网络卫星电视机顶盒 编辑:程序博客网 时间:2024/06/10 05:40
//读取所有联系人


-(void)ReadAllPeoples


{
    
    //取得本地通信录名柄
    
    ABAddressBookRef tmpAddressBook = nil;
    
    if ([[UIDevice currentDevice].systemVersion floatValue]>=6.0) {
        tmpAddressBook=ABAddressBookCreateWithOptions(NULL, NULL);
        dispatch_semaphore_t sema=dispatch_semaphore_create(0);
        ABAddressBookRequestAccessWithCompletion(tmpAddressBook, ^(bool greanted, CFErrorRef error){
            dispatch_semaphore_signal(sema);
        });
    
    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
    dispatch_release(sema);
    }
    else
    {
        tmpAddressBook =ABAddressBookCreate();
    }
    //取得本地所有联系人记录
    
    
    if (tmpAddressBook==nil) {
        return ;
    };
    NSArray* tmpPeoples = (NSArray*)ABAddressBookCopyArrayOfAllPeople(tmpAddressBook);
    
    for(id tmpPerson in tmpPeoples)
        
    {
        
        //获取的联系人单一属性:First name
        
        NSString* tmpFirstName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonFirstNameProperty);
        
        NSLog(@"First name:%@", tmpFirstName);
        
        [tmpFirstName release];
        
        //获取的联系人单一属性:Last name
        
        NSString* tmpLastName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonLastNameProperty);
        
        NSLog(@"Last name:%@", tmpLastName);
        
        [tmpLastName release];
        
        //获取的联系人单一属性:Nickname
        
        NSString* tmpNickname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNicknameProperty);
        
        NSLog(@"Nickname:%@", tmpNickname);
        
        [tmpNickname release];
        
        //获取的联系人单一属性:Company name
        
        NSString* tmpCompanyname = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonOrganizationProperty);
        
        NSLog(@"Company name:%@", tmpCompanyname);
        
        [tmpCompanyname release];
        
        //获取的联系人单一属性:Job Title
        
        NSString* tmpJobTitle= (NSString*)ABRecordCopyValue(tmpPerson, kABPersonJobTitleProperty);
        
        NSLog(@"Job Title:%@", tmpJobTitle);
        
        [tmpJobTitle release];
        
        //获取的联系人单一属性:Department name
        
        NSString* tmpDepartmentName = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonDepartmentProperty);
        
        NSLog(@"Department name:%@", tmpDepartmentName);
        
        [tmpDepartmentName release];
        
        //获取的联系人单一属性:Email(s)
        
        ABMultiValueRef tmpEmails = ABRecordCopyValue(tmpPerson, kABPersonEmailProperty);
        
        for(NSInteger j = 0; ABMultiValueGetCount(tmpEmails); j++)
            
        {
            
            NSString* tmpEmailIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpEmails, j);
            
            NSLog(@"Emails%d:%@", j, tmpEmailIndex);
            
            [tmpEmailIndex release];
            
        }
        
        CFRelease(tmpEmails);
        
        //获取的联系人单一属性:Birthday
        
        NSDate* tmpBirthday = (NSDate*)ABRecordCopyValue(tmpPerson, kABPersonBirthdayProperty);
        
        NSLog(@"Birthday:%@", tmpBirthday);
        
        [tmpBirthday release];
        
        //获取的联系人单一属性:Note
        
        NSString* tmpNote = (NSString*)ABRecordCopyValue(tmpPerson, kABPersonNoteProperty);
        
        NSLog(@"Note:%@", tmpNote);
        
        [tmpNote release];
        
        //获取的联系人单一属性:Generic phone number
        
        ABMultiValueRef tmpPhones = ABRecordCopyValue(tmpPerson, kABPersonPhoneProperty);
        
        for(NSInteger j = 0; j < ABMultiValueGetCount(tmpPhones); j++)
            
        {
            
            NSString* tmpPhoneIndex = (NSString*)ABMultiValueCopyValueAtIndex(tmpPhones, j);
            
            NSLog(@"tmpPhoneIndex%d:%@", j, tmpPhoneIndex);
            
            [tmpPhoneIndex release];
            
        }
        
        CFRelease(tmpPhones);
        
    }
    
    //释放内存&nbsp;
    
    [tmpPeoples release];
    
    CFRelease(tmpAddressBook);
    

}

备注:

苹果中文语言貌似有点问题。ios6.0  会提示你的app访问日历。。。。
然后网上查了下资料。可以参照微信访问通讯录的形式,给客户一个提示
他是在plist中  添加一项在XCode里显示的是Privacy - Contacts Usage Description。后面的string就是你要想提示的文字内容
Privacy - Location Usage Description”。这个是定位位置提示。其他类似。

0 0
原创粉丝点击