将联系人添加到地址簿按钮

时间:2013-06-07 15:23:39

标签: button contact addressbook

我在IOS中正在做App并且我想添加一个按钮,当人们使用它时,它会自动在手机联系人列表中添加联系人(姓名,号码和图片)

联系人姓名为Clinica Lo Curro,电话号码为6003667800

有人可以帮我解决一下代码吗?

的问候,

EugenioDurán

1 个答案:

答案 0 :(得分:0)

从构建阶段添加AddressBook.framework和AddressBookUI.framework,将Link Binary与Libraries一起添加。 并将AddressBookUI导入到头文件中,如下所示。

#import <AddressBookUI/AddressBookUI.h>

将委托ABPeoplePickerNavigationControllerDelegate包含在头文件中。

并调用以下方法添加联系人。

-(IBAction)addContact:(id)sender
{
    ABPeoplePickerNavigationController *peoplePicker=[[ABPeoplePickerNavigationController alloc] init];
    ABAddressBookRef addressBook = [peoplePicker addressBook];

    // create person record

    ABRecordRef person = ABPersonCreate();
    // set name and other string values

    UIImage *personImage = [UIImage imageNamed:@"cinema.png"];
    NSData *dataRef = UIImagePNGRepresentation(personImage);

    NSString *firstName=@"AKASH";
    NSString *lastName=@"MALHOTRA";

    NSString *organization=@"Aua Comp Pvt Ltd.";
    NSString *jobTitle=@"iPhone App Developer";
    NSString *departMent=@"Mobile Division";
    NSString *webURL=@"http://www.google.com";
    NSString *personEmail=@"goel.anjan@gmail.com";
    NSString *phoneNo=@"9856756445 or 7656876765 or 8976566775";
    NSString *personNote=@"I am just a kid";

    NSString *addressOne=@"HN-23,Sector-2,Chandigarh";
    NSString *addressTwo=@"AL-19,Sector-5,SaltLake";

    NSString *cityName=@"Kolkata";
    NSString *stateName=@"West Bengal";
    NSString *pinCode=@"700091";
    NSString *country=@"India";

    CFErrorRef cfError=nil;


    ABRecordSetValue(person, kABPersonOrganizationProperty, (__bridge CFStringRef)organization, NULL);

    if (firstName) {
        ABRecordSetValue(person, kABPersonFirstNameProperty, (__bridge CFTypeRef)(firstName) , nil);
    }

    if (lastName) {
        ABRecordSetValue(person, kABPersonLastNameProperty, (__bridge CFTypeRef)(lastName) , nil);
    }

    if (jobTitle) {
        ABRecordSetValue(person, kABPersonJobTitleProperty,(__bridge CFTypeRef)(jobTitle), nil);
    }

    if (departMent) {
        ABRecordSetValue(person, kABPersonDepartmentProperty,(__bridge CFTypeRef)(departMent), nil);
    }

    if (personNote) {
        ABRecordSetValue(person, kABPersonNoteProperty, (__bridge CFTypeRef)(personNote), nil);
    }

    if (dataRef) {
        ABPersonSetImageData(person, (__bridge CFDataRef)dataRef,&cfError);
    }


    if (webURL)
    {
        ABMutableMultiValueRef urlMultiValue = ABMultiValueCreateMutable(kABMultiStringPropertyType);
        ABMultiValueAddValueAndLabel(urlMultiValue, (__bridge CFStringRef) webURL, kABPersonHomePageLabel, NULL);
        ABRecordSetValue(person, kABPersonURLProperty, urlMultiValue, nil);
        CFRelease(urlMultiValue);
    }

    if (personEmail)
    {
        ABMutableMultiValueRef emailMultiValue = ABMultiValueCreateMutable(kABMultiStringPropertyType);
        ABMultiValueAddValueAndLabel(emailMultiValue, (__bridge CFStringRef) personEmail, kABWorkLabel, NULL);
        ABRecordSetValue(person, kABPersonEmailProperty, emailMultiValue, nil);
        CFRelease(emailMultiValue);
    }

    if (phoneNo)
    {
        ABMutableMultiValueRef phoneNumberMultiValue = ABMultiValueCreateMutable(kABMultiStringPropertyType);
        NSArray *venuePhoneNumbers = [phoneNo componentsSeparatedByString:@" or "];
        for (NSString *venuePhoneNumberString in venuePhoneNumbers)
            ABMultiValueAddValueAndLabel(phoneNumberMultiValue, (__bridge CFStringRef) venuePhoneNumberString, kABPersonPhoneMainLabel, NULL);
        ABRecordSetValue(person, kABPersonPhoneProperty, phoneNumberMultiValue, nil);
        CFRelease(phoneNumberMultiValue);
    }

    // add address

    ABMutableMultiValueRef multiAddress = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
    NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init];

    if (addressOne)
    {
        if (addressTwo)
            addressDictionary[(NSString *) kABPersonAddressStreetKey] = [NSString stringWithFormat:@"%@\n%@", addressOne, addressTwo];
        else
            addressDictionary[(NSString *) kABPersonAddressStreetKey] = addressOne;
    }

    if (cityName)
        addressDictionary[(NSString *)kABPersonAddressCityKey] = cityName;
    if (stateName)
        addressDictionary[(NSString *)kABPersonAddressStateKey] = stateName;
    if (pinCode)
        addressDictionary[(NSString *)kABPersonAddressZIPKey] = pinCode;
    if (country)
        addressDictionary[(NSString *)kABPersonAddressCountryKey] = country;

    ABMultiValueAddValueAndLabel(multiAddress, (__bridge CFDictionaryRef) addressDictionary, kABWorkLabel, NULL);
    ABRecordSetValue(person, kABPersonAddressProperty, multiAddress, NULL);
    CFRelease(multiAddress);


    //Add person Object to addressbook Object.
    ABAddressBookAddRecord(addressBook, person, &cfError);

    if (ABAddressBookSave(addressBook, nil)) {
        NSLog(@"\nPerson Saved successfuly");
    } else {
        NSLog(@"\n Error Saving person to AddressBook");
    }
}