Я хотел бы добавить возможность сохранять контакт (номер телефона, имя, адрес и адрес электронной почты) в адресной книге iOS, нажав кнопку в моем приложении! Как я могу это сделать?
Как добавить контакт из моего приложения в адресную книгу iOS
Ответы (3)
Это так просто, и следуйте инструкциям ниже,
Во-первых, вам нужно импортировать следующие фреймворки,
#import <AddressBook/AddressBook.h>
#import <AddressBookUI/AddressBookUI.h
Во-вторых, напишите следующий код в действии кнопки и измените код в соответствии с вашими потребностями,
NSString * addressString1 = [appDelegate getCurrentSummary];
NSString * addressString2 = [appDelegate getCurrentTubeImage];
NSString * cityName = [appDelegate getCurrentcheckValue];
NSString * stateName = [appDelegate getCurrentTubeUrl];
NSString * postal = [appDelegate getCurrentViews];
NSString * emailString = [appDelegate getCurrentLink];
NSString * phoneNumber = [appDelegate getCurrentTitle];
NSString * prefName = [appDelegate getCurrentAuthor];
ABAddressBookRef libroDirec = ABAddressBookCreate();
ABRecordRef persona = ABPersonCreate();
ABRecordSetValue(persona, kABPersonFirstNameProperty, prefName, nil);
ABMutableMultiValueRef multiHome = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);
NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init];
NSString *homeStreetAddress=[addressString1 stringByAppendingString:addressString2];
[addressDictionary setObject:homeStreetAddress forKey:(NSString *) kABPersonAddressStreetKey];
[addressDictionary setObject:cityName forKey:(NSString *)kABPersonAddressCityKey];
[addressDictionary setObject:stateName forKey:(NSString *)kABPersonAddressStateKey];
[addressDictionary setObject:postal forKey:(NSString *)kABPersonAddressZIPKey];
bool didAddHome = ABMultiValueAddValueAndLabel(multiHome, addressDictionary, kABHomeLabel, NULL);
if(didAddHome)
{
ABRecordSetValue(persona, kABPersonAddressProperty, multiHome, NULL);
NSLog(@"Address saved.....");
}
[addressDictionary release];
//##############################################################################
ABMutableMultiValueRef multiPhone = ABMultiValueCreateMutable(kABMultiStringPropertyType);
bool didAddPhone = ABMultiValueAddValueAndLabel(multiPhone, phoneNumber, kABPersonPhoneMobileLabel, NULL);
if(didAddPhone){
ABRecordSetValue(persona, kABPersonPhoneProperty, multiPhone,nil);
NSLog(@"Phone Number saved......");
}
CFRelease(multiPhone);
//##############################################################################
ABMutableMultiValueRef emailMultiValue = ABMultiValueCreateMutable(kABPersonEmailProperty);
bool didAddEmail = ABMultiValueAddValueAndLabel(emailMultiValue, emailString, kABOtherLabel, NULL);
if(didAddEmail){
ABRecordSetValue(persona, kABPersonEmailProperty, emailMultiValue, nil);
NSLog(@"Email saved......");
}
CFRelease(emailMultiValue);
//##############################################################################
ABAddressBookAddRecord(libroDirec, persona, nil);
CFRelease(persona);
ABAddressBookSave(libroDirec, nil);
CFRelease(libroDirec);
NSString * errorString = [NSString stringWithFormat:@"Information are saved into Contact"];
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"New Contact Info" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
[errorAlert release];
}
Надеюсь, это вам поможет!
person
Sivanathan
schedule
26.07.2010
Спасибо большое, отлично работает !!! Я хотел спросить у вас еще одну вещь, как я могу сделать, чтобы также установить изображение контакта ???
- person Claudio; 26.07.2010
@Claudio перейдите по ссылке, у него есть решение iphonedevsdk.com/forum/iphone-sdk-development/
- person Sivanathan; 26.07.2010
Вот код для добавления изображения контакта с изображением человека в адресную книгу Iphone
ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef person = ABPersonCreate();
// Добавить изображение человека
NSData *dataRef = UIImagePNGRepresentation(personImageView.image);
ABPersonSetImageData(person, (CFDataRef)dataRef, nil);
CFErrorRef anError = NULL;
// Полное имя, название компании, свойство обозначения
ABRecordSetValue(person,kABPersonFirstNameProperty,full_name,&anError);
ABRecordSetValue(person, kABPersonOrganizationProperty, companyLabel, &anError);
ABRecordSetValue(person, kABPersonJobTitleProperty, designation, &anError);
// Свойство адреса с несколькими значениями
ABMutableMultiValueRef multiAddress = ABMultiValueCreateMutable(kABMultiDictionaryPropertyType);'
NSMutableDictionary *addressDictionary = [[NSMutableDictionary alloc] init];
[addressDictionary setObject:@"Chicago" forKey:(NSString *)kABPersonAddressCityKey];
[addressDictionary setObject:@"IL" forKey:(NSString *)kABPersonAddressStateKey];
[addressDictionary setObject:@"60654" forKey:(NSString *)kABPersonAddressZIPKey];
ABMultiValueAddValueAndLabel(multiAddress, addressDictionary, (CFStringRef)@"Address", NULL);
ABRecordSetValue(person, kABPersonAddressProperty, multiAddress,&anError);
CFRelease(multiAddress);
ABMutableMultiValueRef websiteMultiValue = ABMultiValueCreateMutable(kABPersonURLProperty);
ABMultiValueAddValueAndLabel(websiteMultiValue, web_URL, (CFStringRef)@"Website", NULL);
ABRecordSetValue(person, kABPersonURLProperty, websiteMultiValue, &anError);
ABMutableMultiValueRef emailMultiValue = ABMultiValueCreateMutable(kABPersonEmailProperty);
ABMultiValueAddValueAndLabel(emailMultiValue, email, (CFStringRef)@"Email", NULL);
ABRecordSetValue(person, kABPersonEmailProperty, emailMultiValue, &anError);
ABAddressBookAddRecord(addressBook, person, &anError);
person
Shahab Qureshi
schedule
13.10.2011
Если кто-то ищет способ добавить информацию об адресе (улица, город, штат, почтовый индекс) в Swift, он плохо документирован на веб-сайте Apple. Вот как я это сделал (в примере указаны только адреса) ...
var addressDictionary: [String:String] = [
kABPersonAddressStreetKey as String: Contact.address_1,
kABPersonAddressCityKey as String: Contact.city,
kABPersonAddressStateKey as String: Contact.state,
kABPersonAddressZIPKey as String: Contact.zip
]
let multiWork: ABMutableMultiValue =
ABMultiValueCreateMutable(
ABPropertyType(kABMultiDictionaryPropertyType)).takeRetainedValue()
ABMultiValueAddValueAndLabel(multiWork, addressDictionary, kABWorkLabel, nil)
ABRecordSetValue(person, kABPersonAddressProperty, multiWork, nil)
person
Justin Domnitz
schedule
30.06.2015